/attribute: nilai dasar versus modifier, dan kenapa punyamu terus ter-reset
Menetapkan nilai dasar bersifat permanen dan menetapkan modifier tidak — kecuali kamu memilih operation yang salah. Tiga operation, urutan penumpukannya, dan jebakan slot.
/attribute terlihat seperti satu command dengan tiga subcommand. Sebenarnya itu dua sistem berbeda yang kebetulan memiliki nama sama, dan mencampuradukkannya adalah alasan kenapa nilai terus kembali seperti semula.
base versus modifier
/attribute @s minecraft:max_health base set 40
/attribute @s minecraft:max_health modifier add my_buff 20 add_value
base setmenulis ulang nilai milik entity itu sendiri. Perubahan ini bertahan melewati reload dan tidak dihapus oleh apa pun kecualibase setlain.modifier addmenambahkan penyesuaian bernama di atasnya. Modifier disimpan bersama entity sama seperti base, memiliki id, dan bisa dihapus berdasarkan id tersebut.
Kalau perubahanmu tidak mau hilang, kamu entah memakai base set dan butuh base reset, atau menambahkan modifier yang butuh modifier remove <id>.
Tiga operation, dan urutan penerapannya
| Operation | Fungsinya | Diterapkan |
|---|---|---|
add_value | nilai + n | pertama |
add_multiplied_base | nilai + (base × n) | kedua |
add_multiplied_total | total berjalan × (1 + n) | terakhir |
Urutannya tetap dan ini penting. Mulai dari base 20, lalu add_value 10 dan add_multiplied_total 0.5:
20 → 30 → 45 not 20 → 30 → 30 + 10 = 40
add_multiplied_base mengalikan base setelah modifier add_value ditambahkan — bukan total berjalan — itulah sebabnya dua modifier seperti itu menumpuk secara aditif, bukan berbunga majemuk.
Id modifier sekarang ber-namespace
Versi lama memakai UUID. Versi modern memakai namespaced id:
/attribute @s minecraft:attack_damage modifier add my_pack:rage 5 add_value
Menambahkan modifier kedua dengan id yang sama akan gagal dengan pesan "Modifier … is already present", bukan menumpuk atau menggantinya. Untuk menyegarkan buff, modifier remove dulu modifier-nya.
Modifier equipment melekat pada item, bukan pada entity
Bonus damage sebuah sword adalah item component attribute_modifiers, dan hanya berlaku selama item berada di slot yang tepat:
/give @s diamond_sword[attribute_modifiers=[{type:"attack_damage",amount:5,
operation:"add_value",slot:"mainhand",id:"my:bonus"}]]
Lupa menyertakan slot adalah kesalahan yang paling umum. Nilainya default ke any, jadi modifier berlaku di semua slot equipment — sword memberi buff dari offhand, atau dari slot armour, bukan hanya dari main hand.
Slot yang valid: mainhand, offhand, hand, head, chest, legs, feet, armor, body, saddle, any.
Membaca nilai kembali
/attribute @s minecraft:max_health get
mengembalikan total efektif, termasuk modifier. /attribute @s minecraft:max_health base get hanya mengembalikan base-nya.
Bangun salah satu dari ini — termasuk bentuk item-component dengan slot yang sudah diatur — di Entity & Combat Command Builder.