Dans Minecraft, les attributs sont un système de propriétés qui s’appliquent aux joueurs et à la plupart des autres entités. Pouvant être positifs ou négatifs, ils possèdent une valeur de base en fonction du type d’entité et peuvent être ajustés avec des modificateurs. Depuis la version 1.16, il est possible de contrôler ces attributs avec une commande éponyme, le /attribute.
Cette commande permet d’obtenir et de modifier la valeur des attributs, que ce soit en modifiant directement la valeur de base ou en ajoutant un modificateur.
Liste des attributs utilisables
Commençons par un rappel sur les différents attributs existants. La majorité de ces attributs s’appliquent à toutes les créatures et les joueurs. Certains sont cependant spécifiques aux joueurs ou à des types d’entités.
Voir la liste complète
Pour toutes les entités
- generic.max_health pour la vie maximale de l’entité, en nombres de demi-coeurs
- generic.max_absorption pour l’absorption maximale de l’entité, également en nombre de demi-coeurs
- generic.follow_range pour la distance en nombre de blocs dans laquelle l’entité suivra le joueur ou la créature ciblée
- generic.knockback_resistance pour le pourcentage de recul annulé lorsque l’entité est attaquée
- generic.movement_speed pour la vitesse de déplacement de base de l’entité, qui est également affectée par beaucoup d’autres aspects du jeu
- generic.armor pour le nombre de points d’armure
- generic.armor_toughness pour le nombre de points de robustesse d’armure, qui atténue les dégâts critiques
- generic.attack_damage pour la quantité de dégâts que l’entité inflige, en nombre de demi-coeurs
- generic.attack_knockback pour le pourcentage de recul appliqué lorsque l’entité attaque au corps-à-corps
Spécifique aux joueurs
- generic.attack_speed pour la vitesse de rechargement des attaques du joueur, en nombre d’attaques par seconde
- generic.luck pour le bonus de chance appliqué lorsque le joueur reçoit une loot table
Spécifique aux chevaux
- horse.jump_strength pour la force de saut du cheval
Spécifique aux abeilles et perroquets
- generic.flying_speed pour la vitesse de vol de base de l’entité, également affectée par d’autres aspects du jeu
Spécifique aux zombies
- zombie.spawn_reinforcements pour la probabilité que le zombie invoque un autre zombie lorsqu’il est attaqué
Obtenir la valeur totale d’un attribut
Revenons maintenant à la commande. Tout d’abord, obtenir la valeur totale d’un attribut se fait avec la commande /attribute <cible> <attribut> get [<échelle>]. Cette valeur prend en compte à la fois la valeur de base et tous les modificateurs qui peuvent s’appliquer.
Le paramètre cible est un sélecteur qui ne doit correspondre qu’à une seule entité. Il peut s’agir d’un joueur, d’une créature vivante ou d’un porte-armure. Le paramètre attribut est, comme son nom l’indique, le nom d’un attribut comme nous l’avons vu dans la liste ci-dessus. Notez que ces deux paramètres seront les mêmes pour la suite de l’article.
Le paramètre échelle, quant à lui, est optionnel et permet d’obtenir la valeur totale d’un attribut multipliée par un nombre, afin de l’utiliser dans d’autres commandes.
Exemples
Dans ce premier exemple, nous pouvons voir que le joueur a 20 demi-coeurs de vie maximale, qui est à la fois la valeur totale et la valeur de base. La commande utilisée est /attribute YanisBft minecraft:generic.max_health get.
![commande attribute ex1](https://www.minecraft-france.fr/wp-content/uploads/2023/10/commande_attribute_ex1.png)
Ici, le joueur possède 4 points de dégâts d’attaque, avec une valeur de base de 1 et un modificateur (une potion de force) qui en ajoute 3. La commande utilisée est /attribute YanisBft minecraft:generic.attack_damage get.
![commande attribute ex2](https://www.minecraft-france.fr/wp-content/uploads/2023/10/commande_attribute_ex2.png)
Gérer la valeur de base d’un attribut
La commande permet ensuite de gérer la valeur de base d’un attribut pour une entité donnée. Obtenir la valeur de base d’un attribut se fait avec la commande /attribute <cible> <attribut> base get [<échelle>]. Comme vous pouvez l’observer, les paramètres à définir sont les mêmes que précédemment.
Définir la valeur de base d’un attribut se fait avec la commande /attribute <cible> <attribut> base set <valeur>.
Le paramètre valeur correspond à un nombre décimal compris entre un minimum et un maximum, qui varie en fonction de chaque attribut. Tous les attributs autorisent une valeur minimale de 0, à l’exception de la chance qui peut aller jusqu’à -1024. Pour la valeur maximale, elle est par exemple de 1 pour la résistance au recul, et de 30 pour l’armure.
Exemples
Dans cet exemple, le nombre de points de dégâts de base du joueur est bien 1, malgré le modificateur apporté par la potion de force. La commande utilisée est /attribute YanisBft minecraft:generic.attack_damage base get.
![commande attribute ex3](https://www.minecraft-france.fr/wp-content/uploads/2023/10/commande_attribute_ex3.png)
Dans cet autre exemple, le nombre de points de vie maximale du joueur est définie à 30, ce qui correspond à 15 cœurs. La commande utilisée est /attribute YanisBft minecraft:generic.max_health base set 30.
![commande attribute ex4](https://www.minecraft-france.fr/wp-content/uploads/2023/10/commande_attribute_ex4.png)
Gérer les modificateurs d’un attribut
Enfin, la commande permet de gérer les modificateurs apportés à un attribut, c’est-à-dire en ajouter, en supprimer et en obtenir la valeur. Premièrement, ajouter un modificateur se fait avec la commande /attribute <cible> <attribut> modifier add <uuid> <nom> <valeur> <opération>.
Le paramètre uuid correspond à l’identifiant unique du modificateur. Il s’écrit comme une suite de nombres au format hexadécimal, dont chaque section est séparé par un tiret (par exemple, f81d4fae-7dec-11d0-a765-00a0c91e6bf6). Un outil tel que UUIDTools peut être utilisé pour en générer un. Le paramètre nom, quant à lui, correspond tout simplement au nom du modificateur.
Les deux autres paramètres sont la valeur, qui doit être définie comme vu précédemment, et le type d’opération. Il existe trois types d’opération :
- add, qui ajoutera la valeur de ce modificateur à la valeur totale de l’attribut
- multiply, qui multipliera la valeur de base de l’attribut et les valeurs des modificateurs précédents par la valeur de ce modificateur
- multiply_base, qui multipliera uniquement la valeur de base de l’attribut par la valeur de ce modificateur
Deuxièmement, supprimer un modificateur se fait avec la commande /attribute <cible> <attribut> modifier remove <uuid>. Le paramètre uuid correspond à l’identifiant unique du modificateur à retirer.
Pour finir, obtenir la valeur d’un modificateur se fait avec la commande /attribute <cible> <attribut> modifier value get <uuid> [<échelle>]. Les paramètres sont encore une fois les mêmes que pour les commandes précédentes.
Exemples
Dans ce premier exemple, un modificateur a été ajouté à l’attribut d’armure du joueur, avec une valeur de 5 en mode « add ». La valeur de base étant 0, la valeur totale devient donc 5. La commande utilisée est /attribute YanisBft minecraft:generic.armor modifier add dd12be42-52a9-4a91-a8a1-11c01849e498 minecraft-france 5 add.
![commande attribute ex5](https://www.minecraft-france.fr/wp-content/uploads/2023/10/commande_attribute_ex5.png)
Dans ce deuxième exemple, un autre modificateur a été ajouté à l’attribut d’armure du joueur, avec une valeur de 2 en mode « multiply ». La valeur précédente de l’attribut étant 5, elle est multipliée par 2 et la valeur totale devient donc 15. La commande utilisée est /attribute YanisBft minecraft:generic.armor modifier add ee12be42-52a9-4a91-a8a1-11c01849e498 minecraft-france 2 multiply.
![commande attribute ex6](https://www.minecraft-france.fr/wp-content/uploads/2023/10/commande_attribute_ex6.png)
Dans ce dernier exemple, le modificateur que nous venons d’ajouter est supprimé de l’attribut d’armure du joueur. La commande utilisée est /attribute YanisBft minecraft:generic.armor modifier value get ee12be42-52a9-4a91-a8a1-11c01849e498.
![commande attribute ex7](https://www.minecraft-france.fr/wp-content/uploads/2023/10/commande_attribute_ex7.png)