/attribute: valor base versus modificadores, e por que o seu continua resetando
Definir um valor base é permanente e definir um modificador não é — a menos que você escolha a operação errada. As três operações, a ordem de empilhamento e a armadilha do slot.
/attribute parece um comando com três subcomandos. Na verdade, são dois sistemas diferentes que por acaso compartilham um nome, e misturá-los é o motivo pelo qual os valores continuam voltando ao normal.
base versus modificador
/attribute @s minecraft:max_health base set 40
/attribute @s minecraft:max_health modifier add my_buff 20 add_value
base setreescreve o valor da própria entidade. Ele persiste através de recarregamentos e não é removido por nada, exceto por outrobase set.modifier addadiciona um ajuste temporário por cima. Ele tem um ID e pode ser removido por esse ID.
Se sua alteração desaparecer ao fazer login novamente, você usou um modificador e algo o limpou. Se sua alteração não for embora, você usou base set e precisa de base reset.
As três operações e a ordem em que são aplicadas
| Operação | Faz | Aplicado |
|---|---|---|
add_value | valor + n | primeiro |
add_multiplied_base | valor + (base × n) | segundo |
add_multiplied_total | total acumulado × (1 + n) | último |
A ordem é fixa e importa. Começando da base 20, depois add_value 10 e add_multiplied_total 0.5:
20 → 30 → 45 not 20 → 30 → 30 + 10 = 40
add_multiplied_base sempre multiplica a base original, não o total acumulado — é por isso que dois deles se somam aditivamente em vez de se acumularem.
IDs de modificadores agora são namespaced
Versões mais antigas usavam um UUID. Versões modernas usam um ID namespaced:
/attribute @s minecraft:attack_damage modifier add my_pack:rage 5 add_value
Adicionar um segundo modificador com o mesmo ID substitui o primeiro em vez de empilhar. Essa é a maneira pretendida de atualizar um buff — você não precisa removê-lo primeiro.
Modificadores de equipamento vivem no item, não na entidade
O bônus de dano de uma espada encantada é um componente de item attribute_modifiers, e ele só se aplica enquanto o item estiver no slot correto:
/give @s diamond_sword[attribute_modifiers=[{type:"attack_damage",amount:5,
operation:"add_value",slot:"mainhand",id:"my:bonus"}]]
slot é obrigatório e é o erro comum. Omita-o e o modificador se aplica em todos os slots, então uma espada em seu inventário te buffa enquanto está lá.
Slots válidos: mainhand, offhand, head, chest, legs, feet, armor, body, any.
Lendo um valor de volta
/attribute @s minecraft:max_health get
retorna a base, não o total efetivo. Para obter o total incluindo modificadores, use execute store result em um placar e leia isso.
Crie qualquer um desses — incluindo o formulário de componente de item com o slot definido — no Construtor de Comandos de Entidade e Combate.