/attribute: Basiswert versus Modifikatoren und warum deiner ständig zurückgesetzt wird
Einen Basiswert festzulegen ist dauerhaft, einen Modifikator festzulegen nicht – es sei denn, du wählst die falsche Operation. Die drei Operationen, die Stapelreihenfolge und die Slot-Falle.
/attribute sieht aus wie ein Befehl mit drei Unterbefehlen. Es sind jedoch zwei verschiedene Systeme, die zufällig denselben Namen teilen, und das Verwechseln dieser Systeme ist der Grund, warum Werte immer wieder zurückspringen.
Basiswert versus Modifikator
/attribute @s minecraft:max_health base set 40
/attribute @s minecraft:max_health modifier add my_buff 20 add_value
base setüberschreibt den Wert der Entität selbst. Er bleibt über Neuladen erhalten und wird durch nichts entfernt, außer durch ein anderesbase set.modifier addlegt eine temporäre Anpassung darüber. Er hat eine ID und kann über diese ID entfernt werden.
Wenn deine Änderung nach dem erneuten Anmelden verschwindet, hast du einen Modifikator verwendet und etwas hat ihn gelöscht. Wenn deine Änderung nicht verschwinden will, hast du base set verwendet und benötigst base reset.
Die drei Operationen und ihre Anwendungsreihenfolge
| Operation | Funktion | Angewendet |
|---|---|---|
add_value | Wert + n | zuerst |
add_multiplied_base | Wert + (Basis × n) | zweitens |
add_multiplied_total | laufende Summe × (1 + n) | zuletzt |
Die Reihenfolge ist fest und wichtig. Ausgehend von Basis 20, dann add_value 10 und add_multiplied_total 0.5:
20 → 30 → 45 not 20 → 30 → 30 + 10 = 40
add_multiplied_base multipliziert immer die ursprüngliche Basis, nicht die laufende Summe – weshalb zwei davon additiv und nicht kumulativ gestapelt werden.
Modifikator-IDs sind jetzt mit Namespaces versehen
Ältere Versionen verwendeten eine UUID. Moderne Versionen verwenden eine Namespaced ID:
/attribute @s minecraft:attack_damage modifier add my_pack:rage 5 add_value
Das Hinzufügen eines zweiten Modifikators mit derselben ID ersetzt den ersten, anstatt ihn zu stapeln. Das ist die beabsichtigte Methode, einen Buff zu aktualisieren – du musst ihn nicht zuerst entfernen.
Ausrüstungsmodifikatoren leben auf dem Gegenstand, nicht auf der Entität
Der Schadensbonus eines verzauberten Schwertes ist eine attribute_modifiers Gegenstandskomponente (item component) und wird nur angewendet, wenn der Gegenstand im richtigen Slot ist:
/give @s diamond_sword[attribute_modifiers=[{type:"attack_damage",amount:5,
operation:"add_value",slot:"mainhand",id:"my:bonus"}]]
slot ist erforderlich und der übliche Fehler. Lässt du es weg, wird der Modifikator in jedem Slot angewendet, sodass ein Schwert in deinem Inventar dich bufft, während es dort liegt.
Gültige Slots: mainhand, offhand, head, chest, legs, feet, armor, body, any.
Einen Wert zurücklesen
/attribute @s minecraft:max_health get
gibt die Basis zurück, nicht die effektive Gesamtsumme. Um die Gesamtsumme inklusive Modifikatoren zu erhalten, verwende execute store result auf einem Scoreboard und lies diesen Wert aus.
Erstelle jede dieser Formen – einschließlich der Gegenstandskomponentenform mit dem festgelegten Slot – im Entity & Combat Command Builder.