/attribute: basiswaarde versus modificatoren, en waarom die van jou blijft resetten
Het instellen van een basiswaarde is permanent en het instellen van een modificator niet — tenzij je de verkeerde bewerking kiest. De drie bewerkingen, de stapelvolgorde en de slotvalkuil.
/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.
basiswaarde versus modificator
/attribute @s minecraft:max_health base set 40
/attribute @s minecraft:max_health modifier add my_buff 20 add_value
base setoverschrijft de eigen waarde van de entiteit. Het blijft behouden na herladen en wordt
door niets verwijderd behalve een andere base set.
modifier addlegt er een tijdelijke aanpassing bovenop. Het heeft een id en kan worden
verwijderd via die id.
Als je verandering verdwijnt bij het opnieuw inloggen, heb je een modificator gebruikt en heeft iets deze gewist. Als je verandering niet weggaat, gebruikte je base set and need base reset.
De drie bewerkingen en de volgorde waarin ze worden toegepast
| Bewerking | Doet | Toegepast |
|---|---|---|
add_value | value + n | als eerste |
add_multiplied_base | value + (base × n) | als tweede |
add_multiplied_total | lopend totaal × (1 + n) | als laatste |
De volgorde ligt vast en maakt uit. Beginnend vanaf basis 20, dan add_value 10 and add_multiplied_total 0.5:
20 → 30 → 45 not 20 → 30 → 30 + 10 = 40
add_multiplied_base always multiplies the oorspronkelijke basiswaarde, niet het lopende totaal — daarom stapelen twee ervan additief in plaats van samengesteld.
Modificator-id's hebben nu een namespace
Oudere versies gebruikten een UUID. Moderne versies gebruiken een namespaced id:
/attribute @s minecraft:attack_damage modifier add my_pack:rage 5 add_value
Het toevoegen van een tweede modificator met dezelfde id vervangt de eerste in plaats van te stapelen. Dat is de bedoelde manier om een buff te vernieuwen — je hoeft deze niet eerst te verwijderen.
Uitrustingsmodificatoren horen bij het voorwerp, niet bij de entiteit
De schadebonus van een betoverd zwaard is een attribute_modifiers item component, en is alleen van toepassing wanneer het voorwerp in het juiste slot zit:
/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. Laat je dit weg, dan geldt de modificator in elk slot, waardoor een zwaard in je inventaris je al versterkt terwijl het er gewoon ligt.
Geldige slots: mainhand, offhand, head, chest, legs, feet, armor, body, any.
Een waarde uitlezen
/attribute @s minecraft:max_health get
geeft de basiswaarde, niet het effectieve totaal. Om het totaal inclusief modificatoren te krijgen, gebruik execute store result on a scoreboard and read that.
Bouw al deze — inclusief de item-componentvorm met het ingestelde slot — in de Entity & Combat Command Builder.