挖掘 (Breaking)

挖掘(Breaking)是玩家在 Minecraft 中最常见的行为之一,只需将鼠标准星瞄准一个方块的同时长按破坏键(默认为鼠标左键),或是在触摸屏上长按某一个方块即可完成。挖掘是移除无用方块和获取方块(为了放置或合成)的基本方式(Minecraft 游戏名称中的 Mine 就有挖矿、挖掘的含义)。

挖掘的基础知识

在 Java 版中,创造模式下挖掘范围为 5.2 个方块,而在其他模式下为 4.5 个方块。在基岩版中,使用键盘/鼠标或手柄输入时,范围为 5 个方块;而在触摸屏输入时,创造模式下的范围为 12 个方块,其他模式下为 6 个方块。

玩家在目标方块的范围内并选中该方块时,按住破坏键,玩家的手就会开始挥动,发出重复的“砰砰”声,方块上会出现裂纹。随着挖掘的进度,裂纹会逐渐覆盖整个方块,直到方块被破坏。

玩家可以使用工具来加快破坏对应类型方块。某些方块不要求使用工具,而某些必需工具才会掉落物品。

生存模式中,有些方块不可破坏(如基岩);在冒险模式中,所有方块都不可破坏,除非玩家手持的物品带有 {can_destroy} NBT 标签;在旁观模式中,玩家无法通过任何方式破坏方块;在创造模式中,玩家可以破坏任何方块,除非玩家正手持三叉戟重锤调试棒

挖掘等级

虽然许多方块可以用空手收集,某些特定的方块需要使用工具。特别是,要从石头或金属类方块中获取资源,玩家必须使用镐。对于像铁矿石黑曜石这样的坚硬方块,需要使用更高等级材料制作的镐,具体详见各个方块的挖掘等级。

Java 版 1.20.5 快照 24w12a 版本移除了挖掘等级。在此之前,木质和金质的挖掘等级为 0,石质为 1,铁质为 2,钻石质为 3,下界合金质为 4。现在品质还会影响不适合由工具挖掘的方块标签。其效果与先前的挖掘等级相同:

  • 具有 incorrect_for_wooden_tool 标签的方块被木质及以下的工具挖掘后不会掉落;

  • 具有 incorrect_for_stone_tool 标签的方块被石质及以下的工具挖掘后不会掉落;

  • 具有 incorrect_for_iron_tool 标签的方块被铁质及以下的工具挖掘后不会掉落;

  • 具有 incorrect_for_diamond_tool 标签的方块被钻石质及以下的工具挖掘后不会掉落;

  • 具有 incorrect_for_netherite_tool 标签的方块被下界合金质及以下的工具挖掘后不会掉落;

  • 具有 incorrect_for_golden_tool 标签的方块被金质及以下的工具挖掘后不会掉落。

工具耐久度

工具具有耐久度,挖掘工具(三叉戟重锤)每次成功挖掘硬度不为 0 的方块都会消耗耐久度:

  • 挖掘破坏硬度不为 0 的方块每次消耗 1 耐久度

  • 三叉戟重锤挖掘破坏硬度不为 0 的方块每次消耗 2 耐久度

  • 剪刀挖掘破坏除以外的方块每次消耗 1 耐久度

  • 其他物品被用于挖掘时不会消耗耐久度

如果一个工具的名称和魔咒下方有“无法破坏”的蓝色标签,那么这个工具无法被损坏(耐久度也不会下降)。在 Java 版中,可以用 /give 指令来获取带有“无法破坏”标签的物品,如获取无法破坏的钻石镐:

/give @s diamond_pickaxe{Unbreakable:1b}

挖掘进度

如果挖掘一个方块时目标方块改变了(如移动准星到别的方块上),切换了手持的物品(即使切换前后挖掘速度不变),或是松开了挖掘键,挖掘进度不会保留(如果这三种情况都不符合,在 Java 版中可能会出现进度暂留,详见后文)。挖掘方块时玩家可以自由移动,如跳跃游泳爬行等,但这会减缓挖掘速度。

玩家如果一直按住挖掘键,挖掘的动作将一直进行,但是在成功通过挖掘破坏一个方块后,玩家在 5 游戏刻(0.25s)内无法再次挖掘方块,这被称为挖掘冷却。如果方块被瞬间挖掘(在 1 游戏刻内被挖掘,具体见下文),将不会产生挖掘冷却。

挖掘速度

玩家的挖掘速度有 4 个影响因素:正在被挖掘的方块的硬度、玩家手持的挖掘工具或物品、玩家是否有挖掘惩罚和玩家的状态

硬度

方块的硬度(Hardness,公式中用 h 表示)是影响挖掘速度的重要因素,与方块挖掘时间正相关。当挖掘工具相同时,硬度越大挖掘时间越长。所有方块都有其对应的硬度。硬度不是爆炸抗性,且与爆炸抗性无关。

特殊地:

  • 硬度为 -1(如基岩)表示此方块在原版生存模式下无法被玩家挖掘破坏,挖掘速度会被固定为 0。

  • 硬度为 0(如)表示此方块在任何情况下挖掘速度都为无穷(Infinity),可被瞬间破坏。

挖掘工具

有一些方块在被挖掘时,使用特定的工具可以加快挖掘速度,这类工具就被称为这类方块的挖掘工具

挖掘工具对方块的加速与工具品质有关,如下表所示:

挖掘工具基础速度(单位:s)
不使用对应的挖掘工具1
木质2
石质4
铁质6
钻石质8
下界合金质9
金质12
剪刀2(挖掘羊毛为 5,挖掘蜘蛛网和树叶为 15)
1.5(挖掘蜘蛛网为 15)

在基岩版中,使用挖掘蜘蛛网竹子之外的任何方块的基础速度都为 1.5(暂时还是个特性,状态是等待回应)。

用来挖掘的物品如果带有效率魔咒,那么挖掘的基础速度会进一步增加。n 级的效率魔咒可以使基础速度增加效率等级 n 的平方 +1(n^2+1),如效率 V 可以增加 26 的基础速度。因此工具品质越低,效率魔咒对挖掘速度的加成越大:如效率 V 的木镐(28)挖掘速度是普通木镐(2)的 14 倍,效率 V 的金镐(38)挖掘速度只有普通金镐(12)的 3.17 倍。(然而这并没有什么用,毕竟挖掘速度较低的工具通常挖掘等级较低,挖掘时会有挖掘惩罚减慢速度,详见下文挖掘惩罚)

最终得到的挖掘速度就是工具在一般情况下的挖掘速度,某些模组(如匠魂系列、寂静装备)的工具挖掘速度也会在工具提示上显示。

挖掘惩罚

有些方块要求使用正确的物品挖掘,否则挖掘速度只有正常情况的 30%,这种挖掘减速被称为挖掘惩罚。在 Java 版中,是否手持正确的物品挖掘也决定着方块的掉落物。

玩家状态

  • 如果玩家带有急迫潮涌能量状态效果,则根据两者等级较大值 h 来影响挖掘速度:

    • 在 Java 版中,挖掘速度增加 0.2h 倍;

    • 在基岩版中,挖掘速度变为原来的 (0.2h+1)1.2^h 倍。

  • 如果玩家带有挖掘疲劳状态效果,则根据效果等级 f 来影响挖掘速度:

    • 在 Java 版中,挖掘速度变为原来的 0.3^min(f,4) 倍;

    • 在基岩版中,挖掘速度变为原来的 0.21^f 倍。

  • 如果玩家的视平线浸入水中,则挖掘速度会降低:

    • 在 Java 版中,挖掘速度与属性 player.submerged_mining_speed 值相乘(默认为 0.2)穿戴有 a 级水下速掘魔咒的头盔时挖掘速度会变为 0.2+0.8a(水下速掘最高为 I 级故最高为 1)

    • 在基岩版中,玩家在水中时挖掘速度变为原来的 20%,此时穿戴有水下速掘魔咒的头盔会使挖掘速度保持原速度不变。

  • 如果玩家未接触地面,则挖掘速度变为原来的 20%(可与水中的 20% 叠加为 4%,无法通过水下速掘魔咒抵消);

  • 在 Java 版中,挖掘速度会最后再与属性 player.block_break_speed 值相乘(默认为 1),得到最终的挖掘速度。

计算流程

挖掘速度的计算流程如下:

  1. 获取方块的硬度与基础挖掘速度 s;

  2. 如果工具具有效率 n 级魔咒,那么 s 变为原来的 s+n^2+1;

  3. 计算基础除数 r:如果没有挖掘惩罚,基础除数为 30;如果有挖掘惩罚,基础除数为 100;

  4. 计算状态效果、水中减速和浮空减速等综合相乘获得的乘数 m(如果都没有的话 m 为 1),得到最终的挖掘速度 p=sm/hr;

  5. 根据挖掘速度即可算出挖掘时间为t=[hr/sm](单位为游戏刻,向上取整,最小为 1t)(想要直接计算秒数可以将 1.5 和 5 带入挖掘惩罚 r 中,因为最后刻单位换算成秒还是得除以 20)。

举个例子,如在 Java 版中使用效率 V 级的木镐在无特殊情况下挖掘黑曜石(Java 版中黑曜石硬度为 50):

黑曜石硬度 h 为 50,效率 V 木镐挖掘速度 s 为 2+5^2+1=28,木镐挖掘等级不够,黑曜石不会掉落,故挖掘惩罚 r 为 100,无特殊情况下 m 为 1。

挖掘时间 t=50*30/28=178.57 t,向上取整变为 179t,也就是 8.95s。(挖掘黑曜石时效率 V 的木镐(28)和普通钻石镐(8)速度差不多,可见挖掘惩罚对于挖掘速度的影响很大)

瞬间挖掘

如果挖掘一个方块的时间等于 1 游戏刻,那么这个方块会被瞬间挖掘,此时挖掘速度为这个方块硬度的 30 倍。

在 Java 版中,当玩家的属性 player.block_break_speed 值大于 0 时,硬度为 0 的方块才会被瞬间挖掘;在基岩版中,任何条件下硬度为 0 的方块都会被瞬间挖掘。

竹子与其他方块不同,用剑挖掘时总是可以瞬间挖掘。

进度暂留

注意:仅 Java 版存在进度暂留。

当玩家正在挖掘方块时,如果离开挖掘位置交互距离以上(离被挖掘方块过远),就无法继续进行挖掘,但挖掘进度可能会保留。如挖掘树上的原木时,玩家可能站在地面上够不到最上方的原木,但是跳起来可以够到,因此玩家只需一直按着跳跃键和挖掘键,最终就可以将原木挖下来。这种中断挖掘时保留进度并且最后成功挖掘到行为被称为进度暂留

进度暂留需要满足下列条件:

  • 玩家只持续挖掘一个方块,中途不能持续挖掘别的方块(不包括瞬间挖掘和创造模式下挖掘方块);

  • 玩家在与此方块进行交互时(开始挖掘时)挖掘键需要提前按下,而不是当按下时已经指向方块;

  • 玩家在与方块失去交互时(中断挖掘时)挖掘键也必须持续按下,在失去交互后可以松开。或者在决定失去交互时放置任何方块;

  • 玩家主手物品必须在挖掘此方块时保持不变,不在挖掘时可以切换,但挖掘此方块时必须使用同样的物品。

需满足上述条件的原因如下:

  • 玩家开始挖掘方块,客户端进入挖掘状态,向服务器发出开始挖掘动作;

  • 玩家与方块失去交互且没有挖掘其他方块,此时并没有停止挖掘,挖掘进度保留在内存中;

  • 玩家恢复挖掘此方块,客户端认为玩家一直在持续挖掘,所以进度再次被累加,之前的进度被保留;

  • 挖掘进度达到 100% 时,向服务端发出停止挖掘动作。因为客户端挖掘消耗的时间多于服务端,所以服务端判断挖掘进度有效,从而真正破坏方块和执行掉落。

短评加载中..