エンチャントの定数を調べてみた
[マインクラフト] [2016/01/02 07:23]
あけましておめでとうございます。
今年もよろしくお願いします。m(_ _)m
先日要望のあったボスモンスタープラグインを作っていたところ、ひとつバグっぽいものを見つけた。
ボスモンスターはスケルトンなので日光に弱い。そのため予め鉄のヘルメットをかぶせているのだが、
ボスのレベルが高い場合、ダメージでヘルメットが壊れてしまい、討伐の途中から日光ダメージを受けてしまうようだ。
天日に干せば勝手に死ぬ干物のような(最初から干物だが)ボスなど意図するところではないので何とかしたい。
ということで、鉄のヘルメットに無限エンチャントをかけようと思ったのだけど定数のどれがどれに対応するのかわからなかったのでさくっと調べてみた。
ついでに、取り付けられる最大エンチャントレベルも調べた。実際のゲーム内でできるエンチャントとちょっと違うらしい。
たとえばゲーム内なら(クリエイティブモードで)鉄のヘルメットと無限エンチャント本を組み合わせられるが、以下の表ではそれができない。
定数名 | 効果 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
---|---|---|---|---|---|---|---|---|---|---|---|---|
ARROW_DAMAGE | 射撃ダメージ増加 | - | 5 | - | - | - | - | - | - | - | - | - |
ARROW_FIRE | フレイム | - | 1 | - | - | - | - | - | - | - | - | - |
ARROW_INFINITE | 無限 | - | 1 | - | - | - | - | - | - | - | - | - |
ARROW_KNOCKBACK | パンチ | - | 2 | - | - | - | - | - | - | - | - | - |
DAMAGE_ALL | ダメージ増加 | 5 | - | - | 5 | - | - | - | - | - | - | - |
DAMAGE_ARTHROPODS | 虫特効 | 5 | - | - | 5 | - | - | - | - | - | - | - |
DAMAGE_UNDEAD | アンデッド特効 | 5 | - | - | 5 | - | - | - | - | - | - | - |
DEPTH_STRIDER | 水中歩行 | - | - | - | - | - | - | - | - | - | - | 3 |
DIG_SPEED | 効率強化 | - | - | 5 | 5 | 5 | - | - | - | - | - | - |
DURABILITY | 耐久力 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
FIRE_ASPECT | 火属性 | 2 | - | - | - | - | - | - | - | - | - | - |
KNOCKBACK | ノックバック | 2 | - | - | - | - | - | - | - | - | - | - |
LOOT_BONUS_BLOCKS | 幸運 | - | - | 3 | 3 | 3 | - | - | - | - | - | - |
LOOT_BONUS_MOBS | ドロップ増加 | 3 | - | - | - | - | - | - | - | - | - | - |
LUCK | 宝釣り | - | - | - | - | - | - | 3 | - | - | - | - |
LURE | 入れ食い | - | - | - | - | - | - | 3 | - | - | - | - |
OXYGEN | 水中呼吸 | - | - | - | - | - | - | - | 3 | - | - | - |
PROTECTION_ENVIRONMENTAL | ダメージ軽減 | - | - | - | - | - | - | - | 4 | 4 | 4 | 4 |
PROTECTION_EXPLOSIONS | 爆発耐性 | - | - | - | - | - | - | - | 4 | 4 | 4 | 4 |
PROTECTION_FALL | 落下耐性 | - | - | - | - | - | - | - | - | - | - | 4 |
PROTECTION_FIRE | 火炎耐性 | - | - | - | - | - | - | - | 4 | 4 | 4 | 4 |
PROTECTION_PROJECTILE | 飛び道具耐性 | - | - | - | - | - | - | - | 4 | 4 | 4 | 4 |
SILK_TOUCH | シルクタッチ | - | - | 1 | 1 | 1 | - | - | - | - | - | - |
THORNS | 棘の鎧 | - | - | - | - | - | - | - | 3 | 3 | 3 | 3 |
WATER_WORKER | 水中採掘 | - | - | - | - | - | - | - | 1 | - | - | - |
エンチャントのつけ方は、たとえば弓を作って射撃ダメージ増加エンチャントレベル2をつけるには以下のようになる。
ItemStack weapon = new ItemStack(Material.BOW); weapon.addEnchantment(Enchantment.ARROW_DAMAGE, 2);
さて、これで無限エンチャントの定数がどれかわかったぞ。
…と言いたいところなのだが、無限は弓にしかつかないのか。
ItemStack#addUnsafeEnchantmentメソッドを使えば無理やりつけることもできるが、効果はなさそうだ。
仕方がない、耐久を回復するコードを追加するか。
この記事を評価
この記事にコメント
- ...