Comment puis-je réparer les «brackets déséquilibrés» dans ma balise de données?

Souvent, lors de la fabrication d'un bloc de commande, vous devez définir l'étiquette de données d'une entité. Ces étiquettes peuvent parfois être très longues, avec de nombreuses couches de crochets et crochets imbriqués. Par exemple, c'est la commande de convoquer un villageois avec un seul commerce 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 de bloc de commande à une seule ligne de Minecraft rend incroyablement difficile de trouver et de corriger des erreurs, en particulier lorsqu'il s'agit de supports incompatibles. En fait, à des fins d'illustration, j'ai mis une erreur dans la commande ci-dessus.

Quelles techniques puis-je utiliser pour trouver et réparer des supports carrés ou frisés déséquilibrés lors de l'écriture de balises de données longues et compliquées?

La façon la plus simple de trouver des accolades incompatibles est d'étendre la commande en un format multi-lignes avec des lignes correctement indentées. Cela permet de trouver plus facilement des erreurs et de les réparer ultérieurement.

Un petit petit outil pour formater automatiquement vos balises de données peut être trouvé à l' adresse http://jsonviewer.stack.hu/ . En utilisant les boutons Format et Supprimer les espaces blancs , vous pouvez étendre ou réduire votre commande, respectivement. À l'aide de l'exemple de balise de données donnée dans les questions, nous pouvons

 {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 } ] } ] } } 

Maintenant, tout ce qui reste est comparer les brackets d'ouverture et de fermeture à chaque niveau d'indentation. Vous pouvez voir qu'il n'y a pas de crochet de fermeture au dernier niveau d'indentation, le dernier crochet est indenté une fois, ce qui nous montre qu'il existe un support de fermeture manquant sur un certain niveau.

Si vous vérifiez toutes les étiquettes en commençant par le haut, vous pouvez voir qu'il y a un problème avec la balise de sell : il y a un crochet de fermeture à la place d'un support de riz sur 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é comme Notepad ++ , qui met en évidence les brackets correspondants pour nous:

Vue notepad ++

Ici, il est immédiatement apparu qu'une fermeture à glissière de fermeture est nécessaire pour la balise de sell .

Pour ajouter un peu d'information: je ne pense pas que la mise en forme est nécessaire, sauf si vous avez une commande 1000+ caractères.
Pour commencer les «programmeurs» de Minecraft, je vous recommande de copier la commande à Notepar / Gedit, en trouvant les crochets les plus en retrait et en supprimant le contenu , puis en supprimant le contenu des parenthèses «en» et en répétant jusqu'à trouver une paire manquante ou mal placée.
Pour les utilisateurs plus avancés, je recommanderais de le faire comme je le fais: je pense simplement aux paires de brackets. De cette façon, je (et quelqu'un d'autre peut) a trouvé l'erreur dans l'exemple de commande dans 10 secondes sans voir la réponse existinbg.

L'espoir était utile!