伤害类型:哪19种无视盔甲,以及为什么盾牌反而是更弱的防线
26.3 共有 51 种伤害类型。19 种无视盔甲,30 种无视盾牌,而两者的重叠关系并非人们以为的那样——每一种能穿透盔甲的类型同样也能穿透盾牌,有 11 种伤害类型能穿透盾牌却穿不透盔甲,比如摔落的铁砧、岩浆和落雷这些环境伤害。
伤害类型不只是一条死亡提示信息。它携带各种标志位,决定盔甲是否生效、举起的盾牌是否生效、抗性提升是否生效——而数据包也通过 #minecraft:bypasses_armor 等接口读取这些相同的标志位。以下所有数字均统计自 Mojang 为 26.3 发布的 damage_type 文件,本页面的浏览器也正是渲染这些文件。
数量统计
51 种伤害类型。 其中 19 种无视盔甲,30 种无视举起的盾牌。
第二个数字令人意外。盾牌看起来是更强的防御,因为它能直接挡下一次攻击,但恰恰是它的标志位被更频繁地绕过——30 种类型对 19 种。
重叠关系是单向的
这是值得牢记的部分,而且它是一条硬性的结构规则,而非某种倾向:
每一种能穿透盔甲的伤害类型,同样也能穿透盾牌。没有例外。
直接统计:\"穿透盔甲但不穿透盾牌\"的集合是空集。因此那 19 种穿甲类型是 30 种穿盾类型的严格子集,而有 11 种类型落在中间的缺口里——它们能穿过盾牌,但盔甲仍能减免伤害:
cactus、campfire、dry_out、falling_anvil、falling_stalactite、hot_floor、 in_fire、lava、lightning_bolt、sulfur_cube_hot、sweet_berry_bush
读完这份列表,逻辑一目了然:它们都是环境来源或来自头顶的伤害。你无法对着脚下的地面举盾,也无法对着砸向头顶的铁砧举盾,但盔甲仍能吸收一部分伤害。
实用版的结论:如果一次攻击穿透了你的盔甲,盾牌本来也帮不上忙。 摔落伤害、溺水、冰冻、饥饿、/kill——盔甲和盾牌都无关紧要。此时应该依靠摔落缓冲或水下呼吸——或者用皮革盔甲对抗冰冻——因为这些是标志位不会跳过的防护。(冰霜行者的免疫只覆盖岩浆块,不包括寒冷。)
只有一种类型无视一切
starve 是唯一一种同时绕过盔甲、盾牌和状态效果的伤害类型——所以抗性提升对它也无效。游戏中除了食物,没有任何东西能保护你免受空饥饿条的伤害。
消耗值是二元的
受到伤害会让你更饥饿,但数值并非你想象的那样分级。在 26.3 的全部 51 种类型中,消耗值恰好只有两个:0 和 0.1。51 种中有 32 种施加 0.1;其余的不施加任何消耗。
所以并不存在\"伤害越高越饿\"的规则。苦力怕糊脸和僵尸挠一下消耗的饥饿值相同,而摔落伤害恰恰是那 19 种不消耗任何饥饿值的类型之一。
缩放只有两档,不是一条曲线
scaling 决定难度是否对伤害进行倍率缩放,而原版只用到它三个取值中的两个:when_caused_by_living_non_player(47 种)或 always(4 种)。数据包还可以选择 never。不存在按类型调节的难度曲线——一种类型要么受难度缩放,要么不受。
为什么这对命令很重要
/damage <target> <amount> <type> 可以接受这 51 种中的任意一种,选错会悄无声息地改变结果:
/damage @p 10 minecraft:fall # armour ignored, shield ignored
/damage @p 10 minecraft:lava # shield ignored, armour still reduces it
/damage @p 10 minecraft:starve # armour, shield and Resistance all ignored
三条命令,同样的 10 点伤害,对同一目标产生三种不同结果。如果一张地图是围绕穿着全套下界合金的玩家\"平衡\"的,那么你选择的类型就决定了那身盔甲是否参与了平衡。