3 votes

Pourquoi le magasin /execute refuse-t-il de mettre à jour un numéro NBT lorsqu'on lui fournit une valeur de tableau d'affichage ?

Voici quelques commandes à essayer dans MCJE 1.16. Exécutez les commandes suivantes dans le chat :

  1. Mettre en place un objectif de tableau de bord. (ou utilisez un objectif de test existant si, comme moi, vous détestez les empiler).

    /scoreboard objectives add test dummy
  2. Fixez votre propre score. Fixez-le à un chiffre dont vous vous souviendrez. Choisissez un chiffre bas, comme 5 par exemple.

    /scoreboard players set @s test 5
  3. Offrez-vous une épée de diamant avec des enchantements. Donnez-lui un niveau différent de celui que vous avez choisi à l'étape 2. Je choisis 9.

    /give @s diamond_sword{Enchantments:[{id:"minecraft:sharpness",lvl:9s}]}
  4. Essayez de régler le niveau d'enchantement de l'épée de diamant sur le nombre indiqué dans le tableau d'affichage. Voici la commande que j'ai utilisée :

    /data modify entity @s Inventory[{id:"minecraft:diamond_sword"}].tag.Enchantments[{id:"minecraft:sharpness"}].lvl short 1 run scoreboard players get @s test

Ce que cette commande debe est d'obtenir votre test et l'enregistrer dans le niveau d'affûtage de l'épée de diamant. Mais ce n'est pas le cas. Le niveau reste à 9.

Voici un autre exemple avec des commandes plus courtes. Effectuez les étapes 1 et 2 comme d'habitude, mais c'est ici que nous allons changer les choses :

  1. Offrez-vous un morceau de terre (n'importe quel objet fera l'affaire).

    /give @s dirt
  2. Modifier le compter de cette pile de terre en la fixant à la valeur du tableau d'affichage.

    /execute store result entity @s Inventory[{id:"minecraft:dirt"}].Count byte 1 run scoreboard players get @s test

Le nombre d'articles est-il modifié ? Pour moi, non.

J'ai testé cette méthode en utilisant une chaîne de commande. En jetant un coup d'œil dans le bloc de commande de la commande n°4, je peux voir que la valeur correcte du tableau d'affichage est renvoyée : ExpertCoder14 has 5 test mais la valeur du tableau d'affichage n'est toujours pas mise à jour.

J'ai vérifié tous les champs et ils étaient tous corrects :

  • NBT path : J'ai utilisé /data get avec le même chemin NBT et a récupéré l'ancienne valeur. Cela signifie que j'utilise le bon chemin pour cibler la valeur à mettre à jour.
  • Échelle : J'ai vérifié le Page Wiki Minecraft en /execute store . L'échelle est un nombre par lequel le résultat de la commande sera multiplié avant d'être stocké. Je l'ai fixée à 1.0 . Cela devrait être correct.

J'ai également effectué quelques essais supplémentaires :

  • J'ai utilisé le if pour tester un certain nombre d'entités au lieu de /scoreboard players get . Il s'agit d'un ordre :

    /execute store result entity @s Inventory[{id:"minecraft:dirt"}].Count byte 1 if entity @e

    Exemple de sortie :

    Test passed, count: 14

Mais la valeur du NBT ne change pas !

Est-ce que je fais quelque chose de mal ? Ce comportement est-il normal ? Ai-je manqué un rapport de bogue ? Que se passe-t-il ?

-1voto

DidThis Points 111

Vous ne pouvez pas modifier le nbt du joueur. Vous devez déplacer l'objet dans un conteneur et modifier l'objet du conatiner. Puis remettre l'objet dans l'inventaire du joueur. Le lien suivant vous montre comment modifier les objets dans la main d'un joueur. Ici . J'espère que cela vous a aidé.

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X