/attribute: valore base contro modificatori, e perché il tuo continua a resettarsi
Impostare un valore base è permanente, mentre impostare un modificatore non lo è — a meno che tu non scelga l'operazione sbagliata. Le tre operazioni, l'ordine di accumulo e la trappola degli slot.
/attribute looks like one command with three subcommands. It is really two different systems that happen to share a name, and mixing them up is why values keep snapping back.
base contro modificatore
/attribute @s minecraft:max_health base set 40
/attribute @s minecraft:max_health modifier add my_buff 20 add_value
base setriscrive il valore proprio dell'entità. Questo persiste attraverso i ricaricamenti e
non viene rimosso da nulla se non da un altro base set.
modifier addapplica una regolazione temporanea sopra. Ha un id e può essere
rimosso tramite quell'id.
Se la tua modifica scompare al riaccesso, hai usato un modificatore e qualcosa lo ha rimosso. Se la tua modifica non scompare, hai usato base set and need base reset.
Le tre operazioni e l'ordine in cui si applicano
| Operazione | Cosa fa | Applicata |
|---|---|---|
add_value | valore + n | per prima |
add_multiplied_base | valore + (base × n) | per seconda |
add_multiplied_total | totale progressivo × (1 + n) | per ultima |
L'ordine è fisso ed è importante. Partendo da una base di 20, poi add_value 10 and add_multiplied_total 0.5:
20 → 30 → 45 not 20 → 30 → 30 + 10 = 40
add_multiplied_base always multiplies the originale base, non il totale progressivo — motivo per cui due di essi si sommano in modo additivo anziché composto.
Gli id dei modificatori ora usano i namespace
Le versioni precedenti usavano un UUID. Le versioni moderne usano un id con namespace:
/attribute @s minecraft:attack_damage modifier add my_pack:rage 5 add_value
Aggiungere un secondo modificatore con lo stesso id sostituisce il primo anziché accumularsi. Questo è il modo previsto per rinnovare un potenziamento — non è necessario rimuoverlo prima.
I modificatori dell'equipaggiamento risiedono sull'oggetto, non sull'entità
Il bonus di danno di una spada incantata è un attribute_modifiers componente dell'oggetto, e si applica solo quando l'oggetto si trova nello slot corretto:
/give @s diamond_sword[attribute_modifiers=[{type:"attack_damage",amount:5,
operation:"add_value",slot:"mainhand",id:"my:bonus"}]]
slot is required and is the usual mistake. Omettilo e il modificatore si applicherà in ogni slot, quindi una spada nel tuo inventario ti potenzierà anche solo restando lì.
Slot validi: mainhand, offhand, head, chest, legs, feet, armor, body, any.
Leggere un valore
/attribute @s minecraft:max_health get
restituisce la base, non il totale effettivo. Per ottenere il totale inclusi i modificatori, usa execute store result on a scoreboard and read that.
Crea uno qualsiasi di questi — inclusa la forma componente dell'oggetto con lo slot impostato — nel Generatore di comandi entità e combattimento.