ゲーム好きな豚のしっぽ

筆者の下手の横好きなゲーム日記、情報メモです。主にプレイするのはtrophymanager、WoT、WoWS、洋モノSLGなどの予定。

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)