4 votes

Comment concaténer deux chaînes de caractères dans NBT ?

Cette situation est fictive. Ne suggérez pas de méthode alternative telle que décrite dans l'histoire, mais proposez uniquement une solution à la question centrale ci-dessous.

Histoire

Je crée un chatbot en utilisant des commandes dans Minecraft. Une grille de boutons représentant des lettres et des chiffres se trouve sur un mur. Le joueur peut appuyer sur ces boutons pour "taper" des lettres dans sa requête au chatbot. Chaque lettre est tapée en ajoutant une chaîne de caractères avec cette lettre à la fin d'un tableau NBT. Par exemple, lorsque le bouton 'L' est pressé, la commande suivante est exécutée :

data modify storage chatbot:main CurrentEntry append value "L"

Par exemple, un tableau de requête complété pour la requête "La vie est un bol de cerises" pourrait ressembler à ceci :

{CurrentEntry:["L","i","f","e"," ","i","s"," ","a"," ","b","o","w","l"," ","o","f"," ","c","h","e","r","r","i","e","s"]}

Une fois que l'utilisateur a fini de saisir une question dans la machine, il appuie sur le bouton Soumettre, ce qui lance le processus d'analyse et permet au chatbot de donner une réponse.

Problema

J'en suis à la phase de développement des easter eggs, où une phrase spécifique peut être tapée dans le chatbot pour produire une réponse unique. Pour ce faire, je vais devoir concaténer chaque valeur du tableau de requête afin de produire une seule chaîne avec la requête complète, puis la comparer avec une chaîne modèle pour voir si elle correspond à une phrase d'easter egg.

La concaténation de chaînes de caractères dans Minecraft sera probablement un peu compliquée. L'approche que j'ai choisie est de concaténer les deux premières chaînes, puis de concaténer le résultat avec la chaîne suivante, et ainsi de suite jusqu'à ce que j'obtienne une chaîne finale contenant l'intégralité de la requête.

Question centrale

Comment concaténer deux ou plusieurs chaînes de caractères à partir de données NBT ?

Étant donné deux chaînes de caractères dans NBT :

{String1:"Life is a ",String2:"bowl of cherries"}

pouvez-vous les concaténer pour produire :

{ResultString:"Life is a bowl of cherries"}

Procès antérieurs

  1. J'ai eu l'idée d'utiliser /data modify pour ajouter des éléments à des chaînes de caractères, mais il ne permet que d'ajouter des éléments à des listes, et non à des chaînes de caractères.

Voir aussi

Fractionnement des chaînes NBT

7voto

Richie Frame Points 1800

TL;DR : Votez pour MC-183054 si vous le souhaitez.

J'ai eu une discussion avec le développeur de Minecraft String Utilities Le paquet de données qui vous permet de transformer les chaînes NBT en une liste de caractères de sorte que chaque caractère individuel puisse être manipulé. Cette discussion a révélé que la concaténation de chaînes n'est pas possible, pas plus que la transformation des tableaux de caractères produits par le pack de données en chaînes individuelles.

Toutefois, il a récemment été signalé qu'il existe une méthode connue qui est bloquée par un bogue qui doit être corrigé. Si le bug est corrigé, cela signifiera que la concaténation forte sera enfin possible et ouvrira un tout nouveau domaine de possibilités avec les commandes Minecraft.

La méthode en question concerne les blocs de structure et les endermen, en particulier leur capacité à ramasser et à placer des blocs tout seuls.

Remarquez le format NBT pour blocs de structure . Les author contient la version non aplatie de l'entité qui l'a placée. Cela signifie que nous pouvons renommer un enderman en un nbt JSON, lui donner un bloc de structure, attendre qu'il le place, et vérifier son author pour la chaîne non formatée.

Malheureusement, comme indiqué ci-dessus, un bogue empêche cette méthode de fonctionner. Le bogue en question est le suivant MC-183054 .

Avez-vous remarqué qu'un enderman ne peut pas engendrer un Wither en plaçant les crânes ? Il s'avère que cela s'applique à toutes les autres mises à jour de blocs, y compris celle qui définit le paramètre author étiquette.

Nous sommes donc presque en mesure de décompresser les chaînes de caractères. Si vous voulez pouvoir le faire, votez pour que le bug soit corrigé !

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