ダメージタイプ:防具を無視する19種と、盾がより弱い守りである理由
26.3には51種のダメージタイプが実装されている。19種が防具を貫通し、30種が盾を貫通する。そしてその重なりは多くの人が想定するものではない——防具を貫通するタイプはすべて盾も貫通するのだ。データパックはタグで判定します。
ダメージタイプは単なる死亡メッセージではない。防具が有効か、構えた盾が有効か、そして耐性が有効かを決めるフラグを保持しており、データパックは#minecraft:bypasses_armorなどを通じて同じフラグを読み取る。以下の数値はすべて、Mojangが26.3向けに出荷したdamage_typeファイルから数え上げたものであり、このページのブラウザが表示している内容でもある。
件数
ダメージタイプは51種。 うち19種が防具を無視し、30種が構えた盾を無視する。
この2つ目の数字は人を驚かせる。盾は一撃を完全に防ぐため、より強力な防御に見える。しかし無視されるフラグのほうが多いのは盾の側であり、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——防具も盾もどちらも無関係だ。代わりに落下耐性や水中呼吸に頼るか、凍結に対しては革の防具を使うべきである。これらはフラグが飛ばさない防御だからだ。(氷渡りの無効化はマグマブロックのみを対象とし、寒さには効かない。)
すべてを無視するタイプは1つだけ
starveは、防具、盾、そしてステータス効果をまとめて貫通する唯一のダメージタイプである——つまり耐性もこれには効かない。空腹ゲージが空の状態から身を守るものは、ゲーム内には食料以外に存在しない。
疲労は二値
ダメージを受けると空腹が進むが、その量は期待するほど細かく段階付けされていない。51種すべてを通じて、26.3には疲労値がちょうど2つしかない:0と0.1だ。51種のうち32種が0.1を適用し、残りは何も適用しない。
つまり「大きな一撃ほど空腹が進む」というルールは存在しない。クリーパーの直撃とゾンビの引っかきは同じ疲労コストであり、落下ダメージは何も消費しない19種のうちの1つである。
スケーリングは曲線ではなく2つの設定
scalingは難易度がダメージを倍加するかどうかを決めるが、バニラはその3つの値のうち2つしか使わない: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
3つのコマンド、同じ10、同じ対象に対して3つの異なる結果。もしマップがフルネザライトのプレイヤーに対して「バランス調整」されているなら、選ぶタイプがその防具をバランスの一部に含めるかどうかを決めるのである。