/attribute: valor base frente a modificadores, y por qué el tuyo se sigue reiniciando
Establecer un valor base es permanente y establecer un modificador no lo es, a menos que elijas la operación equivocada. Las tres operaciones, el orden de apilamiento y la trampa de la ranura.
/attribute parece un solo comando con tres subcomandos. En realidad son dos sistemas distintos que casualmente comparten nombre, y confundirlos es la razón por la que los valores se siguen revirtiendo.
base frente a modificador
/attribute @s minecraft:max_health base set 40
/attribute @s minecraft:max_health modifier add my_buff 20 add_value
base setreescribe el valor propio de la entidad. Persiste a través de las recargas y no lo elimina nada salvo otrobase set.modifier addsuperpone un ajuste con nombre encima. Se guarda con la entidad igual que el valor base, tiene un id y se puede eliminar por ese id.
Si tu cambio no desaparece, o usaste base set y necesitas base reset, o añadiste un modificador que necesita modifier remove <id>.
Las tres operaciones, y el orden en que se aplican
| Operación | Hace | Se aplica |
|---|---|---|
add_value | valor + n | primero |
add_multiplied_base | valor + (base × n) | segundo |
add_multiplied_total | total acumulado × (1 + n) | último |
El orden es fijo y es importante. Partiendo de base 20, luego add_value 10 y add_multiplied_total 0.5:
20 → 30 → 45 not 20 → 30 → 30 + 10 = 40
add_multiplied_base multiplica la base después de que se sumen los modificadores add_value, no el total acumulado, y por eso dos de ellos se apilan de forma aditiva en lugar de componerse.
Los ids de modificador ahora tienen espacio de nombres
Las versiones antiguas usaban un UUID. Las versiones modernas usan un id con espacio de nombres:
/attribute @s minecraft:attack_damage modifier add my_pack:rage 5 add_value
Añadir un segundo modificador con el mismo id falla con "Modifier … is already present" en lugar de apilarse o reemplazarlo. Para refrescar un efecto, primero modifier remove.
Los modificadores de equipo viven en el objeto, no en la entidad
El bono de daño de una espada es un componente de objeto attribute_modifiers, y solo se aplica mientras el objeto está en la ranura correcta:
/give @s diamond_sword[attribute_modifiers=[{type:"attack_damage",amount:5,
operation:"add_value",slot:"mainhand",id:"my:bonus"}]]
Omitir slot es el error habitual. Por defecto es any, así que el modificador se aplica en todas las ranuras de equipo: una espada te da el bono desde la mano secundaria, o desde una ranura de armadura, no solo desde la mano principal.
Ranuras válidas: mainhand, offhand, hand, head, chest, legs, feet, armor, body, saddle, any.
Volver a leer un valor
/attribute @s minecraft:max_health get
devuelve el total efectivo, modificadores incluidos. /attribute @s minecraft:max_health base get devuelve solo el valor base.
Crea cualquiera de estos, incluida la forma de componente de objeto con la ranura configurada, en el Entity & Combat Command Builder.