Mise à jour de la version 1.13+.
Certaines commandes ont été retravaillées dans la 1.13, et /entitydata
n'existe plus.
Voici une solution moderne et à jour (qui fonctionne même depuis les snapshots de la version 1.16 !) utilisant /execute
y /data
:
/execute as @e[type=item] run data remove entity @s Item.tag.RepairCost
Cela présente l'avantage de ne supprimer que le RepairCost
sans apporter de modifications inutiles.
Utilisation
Déposez les objets, exécutez la commande, ramassez les objets à nouveau, libérés de la pénalité de réparation. On peut aussi placer la commande dans un bloc de commande avec un bouton, déposer les objets, appuyer sur le bouton, ramasser.
Comment cela fonctionne :
/execute as @e[type=item] run
/execute
entraîne l'exécution d'une commande pour chaque élément sélectionné par le sélecteur (ici @e[type=item]
: tous e ntités d'un type "item" - les éléments déposés sont des entités de ce type exact)
as
fait de l'"exécuteur" de la commande l'entité réellement visée (par opposition au joueur/serveur qui l'exécute, ce qui sera important par la suite).
run
spécifie que le reste est la commande réelle à exécuter
Maintenant, chaque élément déposé "exécute" ce qui suit :
/data remove entity @s Item.tag.RepairCost
/data
est la nouvelle commande pour tous vos besoins de manipulation de données d'entités et de blocs, elle possède de très nombreuses options complexes...
remove
précise que nous allons supprimer quelque chose
entity
précise que nous ciblons une entité, vous pouvez également cibler un bloc ou un "stockage", je suppose que vous pouvez l'utiliser pour stocker des données pour une utilisation ultérieure sans le lier à une entité - un peu comme inclus dans le fichier de sauvegarde de votre monde.
@s
vise le "soi", ou l'entité qui exécute la commande (c'est pourquoi l'option as
en /execute
est important - il le fait maintenant @s
sélectionne en fait l'élément déposé spécifique).
Item.tag.RepairCost
-Ceci sélectionne simplement ce que nous voulons cibler. remove
pour faire son travail. Vous pouvez exécuter la commande avec get
au lieu de remove pour montrer comment cela fonctionne - il affichera le coût de réparation de cet objet particulier s'il en a un. Dans le cas de RepairCost, il est stocké sous la liste "tag" de l'objet d'inventaire, qui peut également contenir des enchantements, des valeurs de dommages, et d'autres données supplémentaires, tandis que l'objet d'inventaire lui-même est stocké comme un objet "Item" sur l'entité Minecraft:item.
En prime, la commande fournit un retour d'information instantané sur les changements qui ont réellement eu lieu - si aucun élément n'a été modifié, il n'y a pas de sortie, sinon une ligne par élément modifié est affichée.
Plus de détails/embrouillages
La capture d'écran ci-dessous illustre une partie de mes recherches ; les lignes indiquant " tel et tel a les données d'entité suivantes" sont les endroits où j'ai utilisé get
au lieu de remove
pour s'habituer à la structure. Les premières lignes avec les oeufs et les articles de saumon que j'ai ciblés simplement Item
qui renvoie alors le nom type de l'élément d'inventaire. Item.tag
qui a techniquement fonctionné sur le saumon et les oeufs, aussi, mais comme ils n'avaient pas d'étiquettes sur leur Item
aucun message n'a été affiché ; le livre Enchanté avait un tag
contenant une liste StoredEnchantments
et un RepairCost
(on se rapproche !). Ensuite, il y a eu la commande complète, mais avec get
au lieu de remove
en confirmant les éléments avec un RepairCost
de "1". Les messages suivants ("Données d'entité modifiées") sont ceux dans lesquels j'ai exécuté la suppression - après quoi l'élément get
n'a pas donné lieu à des messages puisque tous les éléments avec RepairCost
ont disparu maintenant. En guise de test, j'ai lancé le programme get
avec Item.tag
comme cible pour voir si ma pioche avait un coût de réparation supplémentaire, et ce n'était pas le cas. Damage
et la liste des Enchantments
.