19 votes

Comment puis-je corriger les "crochets déséquilibrés" dans ma balise de données ?

Souvent, lors de la création d'un bloc de commande, vous devez définir la balise de données d'une entité. Ces balises peuvent parfois être très long, avec de nombreuses couches de crochets et de parenthèses imbriquées. Par exemple, voici la commande permettant d'invoquer un villageois avec un seul métier personnalisé :

/summon Villager ~ ~ ~ {Profession:3,Career:2,Offers:{Recipes:[{buy:{id:minecraft:diamond,Count:6b}},sell:{id:minecraft:diamond_hoe,tag:{ench:[{id:16s,lvl:10s}]}]}}

L'interface du bloc de commande à ligne unique de Minecraft rend incroyablement difficile la recherche et la correction des erreurs, en particulier lorsqu'il s'agit de parenthèses mal assorties. En fait, à des fins d'illustration, j'ai placé une erreur dans la commande ci-dessus.

Quelles techniques puis-je utiliser pour trouver et corriger les crochets ou les parenthèses non équilibrés lorsque je rédige des balises de données longues et compliquées ?

32voto

MrLemon Points 17073

Le moyen le plus simple de repérer les accolades non concordantes est de développer la commande dans un format multilignes avec des lignes correctement indentées. Il est ainsi plus facile de trouver les erreurs et de les corriger par la suite.

Un petit outil astucieux permettant de formater automatiquement vos balises de données est disponible à l'adresse suivante http://jsonviewer.stack.hu/ . L'utilisation de l'outil Format y Remove White Space vous permettent respectivement de développer ou de réduire votre commande. En utilisant l'exemple de balise de données donné dans les questions, nous pouvons transformer ceci

{Profession:3,Career:2,Offers:{Recipes:[{buy:{id:minecraft:diamond,Count:6b}},sell:{id:minecraft:diamond_hoe,tag:{ench:[{id:16s,lvl:10s}]}]}}

dans ce

{
  Profession: 3,
  Career: 2,
  Offers: {
    Recipes: [
      {
        buy: {
          id: minecraft: diamond,
          Count: 6b
        }
      },
      sell: {
        id: minecraft: diamond_hoe,
        tag: {
          ench: [
            {
              id: 16s,
              lvl: 10s
            }
          ]
        }
      ]
    }
  }

Il ne reste plus qu'à comparer les parenthèses ouvrantes et fermantes à chaque niveau d'indentation. Vous pouvez constater qu'il y a non au dernier niveau d'indentation, le dernier crochet est indenté une fois, ce qui montre qu'il manque un crochet fermant à un certain niveau.

Si vous vérifiez toutes les balises en commençant par le haut, vous pouvez voir qu'il y a un problème avec la balise sell tag : Il y a un crochet fermant au lieu d'un crochet frisé à ce niveau d'indentation. Pour rendre cela encore plus visible, nous pouvons copier-coller notre balise de données dans un éditeur de texte avancé tel que Bloc-notes++ qui met en évidence les parenthèses correspondantes :

Le problème de l'absence de parenthèses fléchées se pose :

notepad++ view

Ici, il est immédiatement évident qu'un crochet fermant est nécessaire pour l'élément sell étiquette.

Sans le support manquant :

enter image description here

0voto

user143228 Points 6528

Pour ajouter un peu d'information : Je ne pense pas qu'un formatage soit nécessaire, à moins que vous n'ayez une commande de plus de 1000 caractères.
Pour les "programmeurs" Minecraft débutants, je recommanderais de copier la commande dans Notepar/Gedit, de trouver les crochets les plus indentés et de les supprimer. contenu puis en supprimant le contenu des parenthèses "sous" celles-ci et en répétant l'opération jusqu'à ce qu'ils trouvent une paire manquante ou mal placée.
Pour les utilisateurs plus avancés, je recommanderais de procéder comme je le fais : en pensant simplement aux paires de crochets. De cette façon, j'ai (et n'importe qui d'autre peut) trouvé l'erreur dans la commande de l'exemple en 10 secondes sans voir la réponse existante.

J'espère que cela vous a été utile !

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