MC Toolkit

Guides / Commandes et données

/attribute : valeur de base contre modificateurs, et pourquoi la vôtre se réinitialise sans cesse

Définir une valeur de base est permanent, définir un modificateur ne l'est pas — sauf si vous choisissez la mauvaise opération. Les trois opérations, l'ordre d'empilement et le piège des emplacements.

/attribute ressemble à une seule commande avec trois sous-commandes. En réalité, ce sont deux systèmes distincts qui partagent un même nom, et les confondre est la raison pour laquelle les valeurs reviennent sans cesse à leur état initial.

base contre modificateur

/attribute @s minecraft:max_health base set 40
/attribute @s minecraft:max_health modifier add my_buff 20 add_value
  • base set réécrit la valeur propre de l'entité. Elle persiste à travers les rechargements et n'est supprimée par rien d'autre qu'une autre base set.
  • modifier add superpose un ajustement nommé par-dessus. Il est sauvegardé avec l'entité au même titre que la base, il possède un id, et il peut être retiré via cet id.

Si votre modification ne disparaît pas, c'est soit que vous avez utilisé base set et qu'il vous faut base reset, soit que vous avez ajouté un modificateur qu'il faut retirer avec modifier remove <id>.

Les trois opérations, et l'ordre dans lequel elles s'appliquent

OpérationEffetAppliquée
add_valuevaleur + nen premier
add_multiplied_basevaleur + (base × n)en deuxième
add_multiplied_totaltotal courant × (1 + n)en dernier

L'ordre est fixe et il compte. En partant d'une base de 20, puis add_value 10 et add_multiplied_total 0.5 :

20 → 30 → 45          not  20 → 30 → 30 + 10 = 40

add_multiplied_base multiplie la base après l'ajout des modificateurs add_value — et non le total courant —, c'est pourquoi deux d'entre eux s'empilent de façon additive plutôt que de se composer.

Les ids de modificateur sont désormais namespacés

Les anciennes versions utilisaient un UUID. Les versions modernes utilisent un id namespacé :

/attribute @s minecraft:attack_damage modifier add my_pack:rage 5 add_value

Ajouter un second modificateur avec le même id échoue avec « Modifier … is already present » au lieu de s'empiler ou de le remplacer. Pour rafraîchir un buff, retirez-le d'abord avec modifier remove.

Les modificateurs d'équipement résident sur l'objet, pas sur l'entité

Le bonus de dégâts d'une épée est un composant d'objet (item component) attribute_modifiers, et il ne s'applique que tant que l'objet se trouve dans le bon emplacement :

/give @s diamond_sword[attribute_modifiers=[{type:"attack_damage",amount:5,
  operation:"add_value",slot:"mainhand",id:"my:bonus"}]]

Omettre slot est l'erreur habituelle. Il vaut any par défaut, si bien que le modificateur s'applique dans tous les emplacements d'équipement — une épée vous buffe depuis votre main secondaire, ou depuis un emplacement d'armure, et pas seulement depuis votre main principale.

Emplacements valides : mainhand, offhand, hand, head, chest, legs, feet, armor, body, saddle, any.

Relire une valeur

/attribute @s minecraft:max_health get

renvoie le total effectif, modificateurs inclus. /attribute @s minecraft:max_health base get renvoie uniquement la base.

Construisez n'importe laquelle de ces commandes — y compris la forme avec composant d'objet et emplacement défini — dans le Entity & Combat Command Builder.

Commandes d'entité et de combat →

Plus de guides

Tout voir →