/attribute: Temel değer ve değiştiriciler, ve neden sürekli sıfırlanıyor?
Temel değer ayarlamak kalıcıdır, değiştirici ayarlamak ise değildir — tabii yanlış işlemi seçmediyseniz. Üç işlem, yığılma sırası ve yuva tuzağı.
/attribute üç alt komutlu tek bir komut gibi görünür. Aslında aynı adı paylaşan iki farklı sistemdir ve bunları karıştırmak, değerlerin sürekli eski haline dönmesinin nedenidir.
Temel değer ve değiştirici
/attribute @s minecraft:max_health base set 40
/attribute @s minecraft:max_health modifier add my_buff 20 add_value
base setvarlığın kendi değerini yeniden yazar. Yeniden yüklemelerde kalıcıdır ve başka birbase setdışında hiçbir şey tarafından kaldırılmaz.modifier addüzerine geçici bir ayarlama katmanı ekler. Bir kimliği vardır ve bu kimlik ile kaldırılabilir.
Değişikliğiniz yeniden giriş yaptığınızda kayboluyorsa, bir değiştirici kullandınız ve bir şey onu temizledi. Değişikliğiniz gitmiyorsa, base set kullandınız ve base reset'a ihtiyacınız var.
Üç işlem ve uygulanma sıraları
| İşlem | Yaptığı | Uygulanma |
|---|---|---|
add_value | değer + n | ilk |
add_multiplied_base | değer + (temel × n) | ikinci |
add_multiplied_total | çalışan toplam × (1 + n) | son |
Sıra sabittir ve önemlidir. Temel 20'den başlayarak, sonra add_value 10 ve add_multiplied_total 0.5:
20 → 30 → 45 not 20 → 30 → 30 + 10 = 40
add_multiplied_base her zaman orijinal temeli çarpar, çalışan toplamı değil — bu yüzden ikisi birleşmek yerine toplayarak yığılır.
Değiştirici kimlikleri artık ad alanlı
Eski sürümler bir UUID kullanıyordu. Modern sürümler ad alanlı bir kimlik kullanır:
/attribute @s minecraft:attack_damage modifier add my_pack:rage 5 add_value
Aynı kimliğe sahip ikinci bir değiştirici eklemek, yığmak yerine ilkini değiştirir. Bu, bir güçlendirmeyi yenilemenin amaçlanan yoludur — önce onu kaldırmanıza gerek yoktur.
Ekipman değiştiricileri varlıkta değil, eşyada yaşar
Büyülü bir kılıcın hasar bonusu bir attribute_modifiers eşya bileşenidir ve yalnızca eşya doğru yuvada olduğunda uygulanır:
/give @s diamond_sword[attribute_modifiers=[{type:"attack_damage",amount:5,
operation:"add_value",slot:"mainhand",id:"my:bonus"}]]
slot gereklidir ve yaygın bir hatadır. Bunu atlarsanız, değiştirici her yuvada uygulanır, böylece envanterinizdeki bir kılıç orada dururken sizi güçlendirir.
Geçerli yuvalar: mainhand, offhand, head, chest, legs, feet, armor, body, any.
Bir değeri geri okuma
/attribute @s minecraft:max_health get
etkin toplamı değil, temel değeri döndürür. Değiştiriciler dahil toplamı almak için, bir skor tablosunda execute store result kullanın ve onu okuyun.
Bunlardan herhangi birini — yuva ayarlı eşya bileşeni formu dahil — Varlık ve Savaş Komut Oluşturucu'da oluşturun.