/attribute: valor base vs. modificadores, y por qué el tuyo sigue reiniciándose
Establecer un valor base es permanente y establecer un modificador no lo es, a menos que elijas la operación incorrecta. Las tres operaciones, el orden de apilamiento y la trampa de las ranuras.
/attribute parece un solo comando con tres subcomandos. En realidad, son dos sistemas diferentes que comparten un nombre, y confundirlos es la razón por la que los valores siguen volviendo a su estado original.
Base vs. 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 es eliminado por nada excepto por otrobase set.modifier addaplica un ajuste temporal encima. Tiene un ID y puede eliminarse con ese ID.
Si tu cambio desaparece al volver a iniciar sesión, usaste un modificador y algo lo eliminó. Si tu cambio no desaparece, usaste base set y necesitas base reset.
Las tres operaciones y el orden en que se aplican
| Operación | Hace | Aplicado |
|---|---|---|
add_value | valor + n | primero |
add_multiplied_base | valor + (base × n) | segundo |
add_multiplied_total | total acumulado × (1 + n) | último |
El orden es fijo e importa. Partiendo de una base de 20, luego add_value 10 y add_multiplied_total 0.5:
20 → 30 → 45 not 20 → 30 → 30 + 10 = 40
add_multiplied_base siempre multiplica la base original, no el total acumulado, por eso dos de ellos se suman aditivamente en lugar de multiplicarse.
Los ID de modificador ahora tienen un espacio de nombres
Las versiones anteriores 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
Agregar un segundo modificador con el mismo ID reemplaza al primero en lugar de apilarse. Esa es la forma prevista de actualizar un beneficio: no es necesario eliminarlo primero.
Los modificadores de equipo residen en el objeto, no en la entidad
La bonificación de daño de una espada encantada 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"}]]
slot es obligatorio y es el error habitual. Omítelo y el modificador se aplica en cada ranura, por lo que una espada en tu inventario te beneficia mientras está allí.
Ranuras válidas: mainhand, offhand, head, chest, legs, feet, armor, body, any.
Leer un valor
/attribute @s minecraft:max_health get
devuelve la base, no el total efectivo. Para obtener el total, incluidos los modificadores, usa execute store result en un marcador y léelo.
Crea cualquiera de estos, incluida la forma de componente de objeto con la ranura configurada, en el Entity & Combat Command Builder.