屬性

出自Minecraft Wiki
前往: 導覽搜尋

屬性(Attributes)生物和玩家身上的增益/減益特性系統。屬性也存在修飾符(Modifiers)中,用於調整屬性的強度。

屬性應用[編輯 | 編輯原始碼]

當應用到一個物品,一個物品的修飾符將增加或減少以修正相應的屬性[1][2] 屬性/修飾符可以在沒有第三方的情況下使用NBT加入數據標籤give和summon加入到物品或者生物。

下面的指令將給最近的玩家一把增加20( × 10)點額外傷害的鑽石劍,如果你把Operation由0改變到1,那麼會直接增加攻擊傷害。

/give @s diamond_sword{AttributeModifiers:[{AttributeName:"generic.attack_damage",Name:"generic.attack_damage",Amount:20,Operation:0,UUID:[I;1498693494,1027158888,1898994005,860320107]}]}

下面指令將召喚一個殭屍,當它距離玩家100格或更少時,它將跟隨玩家,而不是通常的40。

/summon zombie ~ ~ ~ {Attributes:[{Name:"generic.follow_range",Base:100.0}]}

也可以指定槽位擁有一定屬性。

/give @s diamond_axe{AttributeModifiers:[{Slot:"mainhand",AttributeName:"generic.attack_damage",Name:"generic.attack_damage",Amount:20,Operation:0,UUID:[I;1498693494,1027158888,1898994005,860320107]}]}

槽位可以是:mainhand,offhand,head,legs,chest,feet。

屬性[編輯 | 編輯原始碼]

每個獨立的屬性都控制著一些性狀,這由這個屬性的Name(名字)決定。一個屬性通常都有一個Base(基礎值),有的時候會有一些Modifiers(修飾符)。屬性通常也有一個預設值(例如用於生成一個沒有定義過特別屬性的生物),以及一個自帶的規定值域。修飾符會修飾屬性的基礎值,但結果也是在規定值域內的。

除非另有說明,否則最小值和最大值均為包含值,或者等於1.7x10308

請注意,具有相同UUID並影響相同屬性的屬性修飾符將不會疊加;只有最近影響的玩家或生物的一個才會產生影響,且覆蓋之前的修飾符。

所有實體均包含的屬性項[編輯 | 編輯原始碼]

這些屬性均可在所有生物中找到,包括玩家這個實體

屬性名稱 概述 預設值 最小值 最大值
generic.max_health 這個生物的最大生命值;亦或這個生物透過回復最多可以恢復至的極限。你需要運用[Health:#]nbt改變生物的當前生命值。 20 0.0 1024.0
generic.follow_range 這個生物追蹤玩家或者其他生物的最大範圍,以方塊數為單位。目標離開這個區域意味著它們將停止追蹤。目前大多數生物這個值為16,而殭屍則有40。 32 0.0 2048.0
generic.knockback_resistance 這個生物的抗擊退效果(包括攻擊的擊退、爆炸和彈射物衝擊)的程度,1.0代表完全抵抗。 0.0 0.0 1.0
generic.movement_speed 在某種不明度量標準下這個生物的速度。以格/秒為單位的生物最大速度略高於此值的43倍,但可能會受到各種條件的影響,例如:騎馬(如果是馬),疾跑,逃跑(如果是被動生物),攻擊(如果是一個終界使者或殭屍豬人),被拴繩牽引,受速度或緩速藥水影響,為幼年殭屍或者是一個女巫和喝藥水。可以使用以下等式計算每秒格數的速度,其中x是movementSpeed屬性y = 43.178x-0.02141
生物 generic.movement_speed 格/秒
貓熊(懶惰的) 0.07 3.0m/s
玩家 0.1 4.3m/s
玩家跑步貓熊 0.15 6.5m/s
0.1125~0.3375的隨機值 4.85m/s~14.55m/s的隨機值
驢子駱馬騾子 0.175 7.5m/s
史萊姆 0.2 + 0.1 * 体型 21.6m/s(大)、12.9m/s(中)、8.6m/s(小)
哞菇雪人岩漿立方怪骷髏馬殭屍馬鸚鵡 0.2 8.6m/s
殭屍村民烈焰使者屍殼殭屍殭屍化豬布林沉屍 0.23 9.9m/s
苦力怕北極熊鐵魔像流髑終界蟎女巫蠹魚骷髏凋零骷髏海龜 0.25 10.8m/s
終界使者遠古深海守衛洞穴蜘蛛兔子killer rabbit山貓蜘蛛劫毀獸蜜蜂豬布獸豬屍獸 0.3 12.9m/s
掠奪者衛道士豬布林 0.35 15.1m/s
村民巨人深海守衛喚魔者幻術師流浪商人豬布林 0.5 21.6m/s
凋零怪 0.6 25.9m/s
終界龍蝙蝠地獄幽靈界伏蚌魷魚惱鬼鱈魚鮭魚熱帶魚河豚 0.7 30.2m/s
海豚 1.2 51.8m/s
0.7* 0.0 1024.0
generic.attack_damage 普通攻擊造成的傷害,一點表示半個心形標誌。此屬性在被動生物中未找到。 1.0 0.0 2048.0
generic.attack_knockback 這個生物的攻擊擊退力度,列表之外的生物中不具備該屬性。
生物 generic.attack_knockback
豬布獸 1.0
劫毀獸 1.5
豬屍獸 1.0
0.0 0.0 0.0
generic.armor 盔甲的防禦點數。 0.0 0.0 30.0
generic.armor_toughness 盔甲強度 0.0 0.0 20.0

玩家的額外屬性[編輯 | 編輯原始碼]

這些屬性只出現在玩家中。

屬性名稱 概述 預設值 最小值 最大值
generic.attack_speed 決定攻擊力度的填充速度,值代表每秒可以進行全力攻擊的次數。 4.0 0.0 1024.0
generic.luck 影響戰利品表使用的qualitybonus_rolls(例如當打開儲物箱、儲物箱礦車,釣魚和殺怪)。 0.0 -1024.0 1024.0
generic.attackReach(正式版本尚未使用) 玩家的攻擊距離 3.0 0.0 6.0
generic.reachDistance(正式版本尚未使用) 玩家的觸及半徑 5.0 0.0 256.0

的額外屬性[編輯 | 編輯原始碼]

這些屬性只出現在馬中。

屬性名稱 概述 預設值 最小值 最大值
horse.jump_strength 在某種不明度量標準下馬的彈跳力。 0.7* 0.0 2.0

鸚鵡的額外屬性[編輯 | 編輯原始碼]

這些屬性只出現在鸚鵡中。

屬性名稱 概述 預設值 最小值 最大值
generic.flying_speed 在某種不明度量標準下鸚鵡的飛行速度。 0.4* 0.0 1024.0

殭屍的額外屬性[編輯 | 編輯原始碼]

這些屬性只出現在殭屍或殭屍豬人中。

屬性名稱 概述 預設值 最小值 最大值
zombie.spawn_reinforcements 殭屍在一次攻擊中在周圍生成另一個殭屍的可能性。即使是殭屍豬人也會生成殭屍。 0.0 0.0 1.0

一些未知屬性的特性[編輯 | 編輯原始碼]

當遊戲找到一些非屬性關鍵字的屬性,這些特性將適用。當遊戲發現無法識別的屬性時,將應用這些特性於它。(請注意:執行此操作的代碼行導致Minecraft崩潰。)

屬性名稱 概述 預設值 最小值 最大值
任何非常規名字的屬性 未知。 0.0 2.2×10-308 1.7x10308

修飾符[編輯 | 編輯原始碼]

修飾符會修飾一個屬性的Base(基礎值),也就是增加或減少它。需要注意的是,修飾後的值不能越過該屬性最大值/最小值的限制。就像屬性一樣,修飾符有Name(名稱),然而名稱與修飾符的效果無關,修飾符的效果由Operation(運算模式)和Amount(修飾值)決定。修飾符還有它的UUID,用來唯一地標識每一個修飾符。

運算模式[編輯 | 編輯原始碼]

一個修飾符的Operation(運算模式),決定它修飾時的行為。共有三種運算模式:

屬性增量

Operation 0。該模式直接在基礎值上進行加減法操作。

例:用{Amount:2,Operation:0}{Amount:4,Operation:0}修飾某屬性,基礎值為3。

則修飾過程可以表示為:

3 + (2 + 4) = 3 + 6 = 9
倍率增量

Operation 1。該模式將在Operation 0之後執行,並直接在屬性值的作用倍率上進行加減法操作,也就是將當前的屬性值進行倍率上的修改,而基礎倍率為×1倍(即不做改動)。

例:用{Amount:3,Operation:1}{Amount:6,Operation:1}修飾某屬性,經過Operation 0的操作後的屬性值為9。

則修飾過程可以表示為:

9 × (1 + 3 + 6) = 9 × 10 = 90
最終倍乘

Operation 2。該模式將會在其他所有修飾(包括其他的Operation 2修飾)完成後,在最終倍率上執行加減法操作,並執行最終的倍乘。基礎倍率同樣為×1倍

由於這是最終的操作,因此多個Operation 2之間相互獨立,分別進行各自的最終倍率的加減法操作,最後結果則是相互倍乘,而非相加。

例:用{Amount:2,Operation:2}{Amount:4,Operation:2}修飾某屬性,經過其他所有操作後的屬性值為90。

則修飾過程可以表示為:

1. 首先執行第一個Amount:2的操作:

90 × (1 + 2) = 90 × 3 = 270

2. 再執行第二個Amount:4的操作:

270 × (1 + 4) = 270 × 5 = 1350

下面從數學角度解釋修飾符的作用,為了方便起見,簡記Base為屬性的基礎值;Op0為所有Operation 0的值的總和;Op1為所有Operation 1的值的總和;Op2為所有Operation 2的值再+1後的乘積[3],則有如下表示:

最终属性值 = (Base + Op0) × (1 + Op1) × Op2

已知修飾符[編輯 | 編輯原始碼]

像前文所述一樣,一個修飾符可擁有任何一個Name(名字)且這不能影響這個修飾符的效果。下面是一些已知的修飾符的名字以及用於常規Minecraft的值(如果你在客製化的地圖中找到了這一欄,請不要修改它,因為地圖設計者可能已經客製化了這些東西)。需要注意的是一些UUID頻繁出現,同時其他的有表現為固定字串代碼:這些UUID已經被採用了,請不要在本列表中加入這個修飾符不包含的UUID,這意味著每次這個修飾符創立時都是不同的。

修飾符名稱 概述與已知值 已知效果
隨機生成所附帶的修飾符(Random spawn bonus) 由生成而產生,值呈高斯分布於0.0至0.05*。在殭屍的抗擊退能力上,另一個成高斯分布於0.0至0.05*也會產生。 generic.followRange (Operation 1; 所有生物), Knockback Resistance抗擊退能力 (Operation 0; 僅村民殭屍
工具的修飾符(Tool modifier) 由工具決定 generic.attackDamage (Operation 0; 所有工具; UUID CB3F55D3-645C-4F38-A497-9C13A33DB5CF)
武器的修飾符(Weapon modifier) 由武器決定 generic.attackDamage (Operation 0; 所有武器; UUID CB3F55D3-645C-4F38-A497-9C13A33DB5CF (與工具的修飾符的UUID相同))
疾跑速度(Sprinting speed boost) 固定值為0.3*,應用於包括玩家在內的所有在跑動中的生物 generic.movementSpeed (Operation 2; 所有活躍的實體; UUID 662A6B8D-DA3E-4C1C-8813-96EA6097278D)
逃離速度(Sprinting speed boost) 固定值為2,應用於所有逃離中的被動的生物 generic.movementSpeed (Operation 2; 所有被動生物; UUID E199AD21-BA8A-4C53-8D13-6182D5C69D3A)
攻擊衝刺(Attacking speed boost) 應用於終界使者的固定值為6.2*;應用於殭屍豬人的固定值為0.45*。僅在攻擊時出現。 generic.movementSpeed (Operation 0; 終界使者 - UUID 020E0DFB-87AE-4653-9556-831010E291A0, 殭屍豬人 - UUID 49455A49-7EC5-45BA-B886-3B90B23A1718)
非成熟體速度(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至案件的偽隨機數並應用於generic.maxHealth。 zombie.spawnReinforcements (Operation 0; 殭屍), generic.maxHealth (Operation 2; Zombies)
生成了新殭屍的殭屍的代價(Zombie reinforcement caller charge) 固定值為-0.05*當一個殭屍將其他殭屍作為援軍生成於周圍時產生。 zombie.spawnReinforcements (Operation 0; 殭屍)
被殭屍作為援軍生成的新殭屍的代價(Zombie reinforcement callee charge) 固定值為-0.05*當一個殭屍作為援軍被其他殭屍生成於周圍時產生。 zombie.spawnReinforcements (Operation 0; 殭屍)
potion.moveSpeed potion.moveSpeed # (#代表藥水的等級) 固定值為0.2*,應用於有速度效果時,可由藥水等級增倍。 generic.movementSpeed (Operation 2; 所有活躍的實體; UUID 91AEAA56-376B-4498-935B-2F7F68070635)
potion.moveSlowdown potion.moveSlowdown # (#代表藥水的等級) 固定值為-0.15*,應用於有緩慢效果時,可由藥水等級增倍。 generic.movementSpeed (Operation 2; 所有活躍的實體; UUID 7107DE5E-7CE8-4030-940E-514C1F160890)
potion.damageBoost potion.damageBoost # (#代表藥水的等級) 固定值為3,應用於有力量效果時,可由藥水等級增倍。 generic.attackDamage (Operation 2; 所有活躍的實體; UUID 648D7064-6A60-4F59-8ABE-C2C23A6DD7A9)
potion.weakness potion.weakness # (#代表藥水的等級) 固定值為2,應用於有虛弱效果時,可由藥水等級增倍。 generic.attackDamage (Operation 0; 所有活躍的實體; UUID 22653B89-116E-49DC-9B6B-9971489B5BE5)
potion.healthBoost potion.healthBoost # (#代表藥水的等級) 固定值為4,應用於有生命值提升效果時,可由藥水等級增倍。 generic.maxHealth (Operation 0; 所有活躍的實體; UUID 5D6F0BA2-1186-46AC-B896-C61C5CEE99CC)
effect.luck effect.luck# (#代表藥水的等級) 固定值為1,乘以效果的等級。 generic.luck(Operation 0; 所有活躍的實體; UUID 03C3C89D-7037-4B42-869F-B146BCB64D2E)
effect.unluck effect.unluck # (#代表藥水的等級) 固定值為-1,乘以效果的等級。 generic.luck(Operation 0; 所有活躍的實體; UUID CC5AF142-2BD2-4215-B636-2605AED11727)
未知修飾符 未知; 在終端讀取伺服器所傳送的屬性數據時出現。 可變

歷史[編輯 | 編輯原始碼]

Java版
1.6.113w16a加入了屬性。
13w17a為殭屍加入了Spawn Reinforcements Chance屬性。
加入了Zombie reinforcement charge(生成援兵charge)、Random zombie-spawn bonus(跟蹤範圍)和Leader zombie bonus(雙倍援兵charge和最高生命值)。
13w18a將Zombie reinforcement charge改為了Zombie reinforcement caller charge與Zombie reinforcement caller charge
13w21a屬性現在可以由NBT決定了。
屬性現在具有ID和相應的轉換值了。
modifiers現在會顯示在物品上了。
加入了Attack Damage屬性,且Speed屬性變得通用了。
加入了potion.moveSpeed、potion.moveSlowdown、potion.damageBoost和potion.weakness修飾符。
加入了Sprinting speed boost、Fleeing speed bonus、Attacking speed boost(適用於殭屍豬人和終界使者)、Drinking speed penalty和Baby speed boost修飾符。
加入Tool modifier和Weapon modifier屬性。
13w23b加入potion.healthBoost修飾符。
1.7.213w36a屬性/修飾符可以在沒有第三方的情況下使用NBT加入數據標籤give和summon加入到物品或者生物。
1.915w34b加入了攻擊速度屬性。
15w36d加入了盔甲屬性。
15w44b加入了幸運值屬性。
1.9.1-pre1加入了盔甲強度屬性。
1.1418w43a加入了擊退距離屬性。
1.1620w14a變更了部分屬性的ID。
物品和實體不再會保留未知的屬性。
重新命名了屬性的名字以滿足命名空間ID的要求(即小寫、由下劃線分隔而不是駝峰大小寫)。
重新命名generic.maxHealth 到 generic.max_health
重新命名zombie.spawnReinforcements 到 zombie.spawn_reinforcements
重新命名horse.jumpStrength 到 horse.jump_strength
重新命名generic.followRange 到 generic.follow_range
重新命名generic.knockbackResistance 到 generic.knockback_resistance
重新命名generic.movementSpeed 到 generic.movement_speed
重新命名generic.flyingSpeed 到 generic.flying_speed
重新命名generic.attackDamage 到 generic.attack_damage
重新命名generic.attackKnockback 到 generic.attack_knockback
重新命名generic.attackSpeed 到 generic.attack_speed
重新命名generic.armorToughness 到 generic.armor_toughness
20w17a加入了/attribute以變更或讀取屬性。
攜帶版Alpha
0.12.1build 1加入了屬性。

參考資料[編輯 | 編輯原始碼]