Attribute
注意事項
このリファレンスは
Attribute – Minecraft Wiki
を筆者が記述した時点での拙い知識で翻訳、解釈したもののメモです。
誤訳や理解不足の可能性を多分に含みます。ご覧になる際はご注意ください。
Attribute
Attributesはプレイヤー、Mobのpropertyを増減させるシステムです。
また、Attributeはそれらの効果の強度を調整するmodifierを持ちます。
Attributeの適用
アイテムが適用されたとき、modifierはそのアイテムが保持または装着されていればそれに応じた修正を行います。
AttributeとmodifierはサードパーティのNBT編集ソフトを使用しなくても、コマンドを用いてアイテムやMobに追加できます。
下記のコマンドは最も近いプレイヤーに20の追加ダメージを与えるダイヤモンドソードを与えます。
もしあなたがoperationの値を0から1に変更すれば、攻撃力が(20追加の)代わりに20倍されます。
[{AttributeName:"generic.attackDamage",Name:"generic.attackDamage",Amount:20,
Operation:0,UUIDLeast:894654,UUIDMost:2872}]}
下記のコマンドは、通常の40ブロックの代わりに100ブロック以内の距離にいるプレイヤーを追跡するゾンビを召還します。
/summon Zombie ~ ~ ~ {Attributes:[{Name:"generic.followRange",Base:100.0}]}
snapshot15w35bでは、特定のattributeをもつスロットを指定できるようになりました。
/give @p diamond_axe 10 {AttributeModifiers[{Slot:"mainhand",AttributeName:"generic.attackDamage",
Name:"generic.attackDamage",Amount:20,Operation:0,UUIDLeast:1,UUIDMost:1}]}
スロットにはmainhand,offhand,head,chest,legs,feetなどが指定できます。
Attributes
個々のatrributeがpropertyをコントロールするには下記の名前が使用されます。attributeは基本値を持ち、いくつかのmodifierを持ちます。attributeは初期値(Mobのスポーン時に使用され、attributeの基本値にも適用されます)、ハードコードつまり通常の手段では変更できないの最小値と最大値を持ちます。modifierは基本値に対して働きますが、最大値と最小値の範囲内で計算された値となります。
最小値と最大値は他に指定がない限りは1.7×10308までとなります。
LivingEntitiesに利用出来るAttribute
これらはプレイヤーも含めたすべてのmobに見られるattributeです。
attribute | 説明 | 基本値 | 最小値 | 最大値 |
generic.macHelth | mobの最大体力(ハート半分単位) | 20.0 | 0.0 | 1.7×10308 |
generic.followRange | mobがプレイヤーや他のmobを追跡する範囲。多くのmobは16,zombieは40. | 32.0 | 0.0 | 2048.0 |
generic.knockbackResistance | 攻撃や爆発に対してノックバックが発生する確率。1.0のとき100% | 0.0 | 0.0 | 1.0 |
generic.movementSpeed | 単位不明のmobの最大速度。mobの1秒当たりのブロック距離はこの値の43倍を少し越えるが、さまざまな状況の影響を受ける。 | 0.7 | 0.0 | 1.7×10308 |
generic.attackDamege | 攻撃力(ハート半分単位) | 2.0 | 0.0 | 1.7×10308 |
generic.armor | 防御力 | 0.0 | 0.0 | 30.0 |
プレイヤーのattribute
attribute | 説明 | 基本値 | 最小値 | 最大値 |
generic.attackSpeed | 攻撃力が最大になるまでのチャージ時間。単位は秒。 | 4.0 | 0.0 | 1024.0 |
generic.luck | loottableの結果に影響する。 | 0.0 | -1024.0 | 1024 |
馬のattribute
attribute | 説明 | 基本値 | 最小値 | 最大値 |
horse.jumpStrength | 単位不明の馬のジャンプ力 | 0.7 | 0.0 | 2 |
ゾンビのattribute
attribute | 説明 | 基本値 | 最小値 | 最大値 |
zombie.spawnReinforcements | ゾンビが攻撃された際に他のゾンビをスポーンさせる確率 | 0.0 | 0.0 | 1.0 |
modifier
modifierはattributeの基本値を増減させる働きを持ちます。注意すべきことは、modifierの修正結果はattributeの最小値、最大値の制限が適用されるということです。modifierはattributeのように名前をもちますが、これはmodifierの挙動を表すものではありません。代わりに、modifierの挙動はoperationで決まります。modifierは修正値とUUIDも持っています。
operation
modifierは基本値をどのように処理するかを決めるoperationを持ちます。operationは値の増減、パーセンテージ増減、パーセンテージ倍率の3つが存在します。NBTフォーマットの上ではそれぞれ0,1,2の数字で表されます。
これらの数学的な挙動は以下になります。
0:「対象」に指定の値を足す
1:「対象」に基本値×指定値パーセントを足す
2:「対象」に(1+指定値)パーセントを掛ける(つまり対象の指定値倍を加算する)
ゲームはまず基本値を「対象」に設定します。次にすべてのoperation:0のmodifierを実行してその値を「対象」とします。
次にoparation:1のmodifierをすべて実行し、最後にopration:2のmodifierを実行します。
うかつにopariton2を設定するとすさまじい数字になることがあり得る…
バニラのmodifier
前述のとおり、modifierの名前は任意で、その挙動には何ら影響しません。下記は既知のminecraftのmodifierとその値です。
注意点はいくつかのUUIDは動的に生成され、また別のUUIDはコードに直接記述されています。この表にUUIDが記載されていないものはUUIDがmodifierによって動的に生成されているものです。
modifierの名前 | 値の説明 | 既知のmodifier |
Random spawn bonus | スポーン時に生成されるガウス分布範囲の0.0から0.05の乱数。 | generic.followRange(Operation 1:すべてのmob),Knockback Resistance(Operation 0:ゾンビと村人のみ) |
Tool modifier | ツールごとの値 | generic.attackDamage(Operation 0:全ツール;UUID CB3F55D3-645C-4F38-A497-9C13A33DB5CF) |
Weapon mofifier | 武器ごとの値 | generic.attackDamage(Operation 0:全ツール;UUID Tool modifierと同じ) |
Sprinting speed boost | プレイヤーも含めた全mobで0.3で固定のダッシュ時のスピード | generic.moovementSpeed(Operation 2:全LivingEntity,UUID UUID 662A6B8D-DA3E-4C1C-8813-96EA6097278D) |
Fleeing speed boost | 全mobで2で固定された逃亡時の速度 | generic.movementSpeed(Operation 2:全mob,UUIDUUID E199AD21-BA8A-4C53-8D13-6182D5C69D3A) |
Attacking speed boost | エンダーマン6.2、ゾンビピッグマン0.45で固定された攻撃時の移動速度 | generic.movementSpeed(Operation 0:UUID省略) |
Baby speed boost | 子どもゾンビと村人ゾンビのみに存在する0.5の固定値 | generic.movementSpeed(Operation 1: UUID B9766B59-9566-4402-BC1F-2EE2A276D836) |
Drinking speed penalty | -0.25のウィッチがポーションを飲んでいるときの値 | generic.movementSpeed(Operation 0:UUID 5CD17E52-A79A-43D3-A529-90FDE04B181E) |
Random Zombie spawn bonus | ゾンビがスポーンするときに生成されるランダムの0.0から1.5の値 | generic.followRange(Operation 2) |
Leader zombie bonus | ゾンビがスポーンするときに低確率で生成される値。増援を呼ぶ確立に0.5から0.75の乱数、最大体力に1.0から4.0の乱数 | zombie.spawnReinforcements(Operation 0),generic.maxHealth(Operation 2) |
Zombie reinforcement caller charge | ゾンビが他の仲間を呼ぶたびに適用される-0.05の固定値 | zombie.spownReinforcements(Operation 0) |
Zombie reinforcement callee charge | ゾンビが呼びだされるたびに適用される-0.05の固定値 | zombie.spownReinforcements(Operation 0) |
potion.mobvSpeed または potion.moveSpeed#(#付きは効果レベル) | スピードアップ効果の0.2の固定値。効果のレベルで掛け算される | generic.movementSpeed(Operation 2:全LivingEntity、UUID 91AEAA56-376B-4498-935B-2F7F68070635) |
potion.moveSlowdown | 鈍足効果の-0.15の固定値。効果レベルで掛け算される | generic.movementSpeed(Operation 2:全Livingentity UUID UUID 7107DE5E-7CE8-4030-940E-514C1F160890) |
potion.damageBoost | ダメージ強化効果の1.3の固定値。効果レベルで掛け算される | generic.attackDamage(Operation 2:全LivingEntity UUID 648D7064-6A60-4F59-8ABE-C2C23A6DD7A9) |
potion.hekthBoost | 体力増加効果の4の固定値。効果レベルで掛け算される | generic.maxHelth(Operation 0:全LivingEntity UUID 5D6F0BA2-1186-46AC-B896-C61C5CEE99CC) |