4 votes

Création/lecture procédurale d'un objet/dictionnaire nbt

Je travaille sur un projet qui nécessite la création de dictionnaires nbt à partir d'un autre tableau nbt.

Essentiellement, le scénario est le suivant

J'ai un tableau [1,2,3,4] et je voudrais créer un dictionnaire {1:2, 3:4}
Ces valeurs ne sont que des exemples et seront générées au moment de l'exécution.

Cependant, je n'arrive pas à trouver un moyen de créer un dictionnaire de façon procédurale, car la seule façon que je connaisse est de faire /data modify storage <name> <key> set value <value>

Je sais que je peux le faire set from à la place, mais le problème principal est que le code en dur <key> . Je n'arrive pas à trouver un moyen de créer/supprimer une clé d'un dict de manière procédurale.

5voto

Richie Frame Points 1800

Les clés dynamiques n'existent pas dans NBT.

Vous devrez utiliser ce format légèrement plus complexe pour un dictionnaire de paires clé-valeur :

{
  Database: [
    {key: 1, value: "one"},
    {key: 2, value: "two"},
    {key: 3, value: "three"}
  ]
}

et lire/écrire dessus avec ces commandes :

  • Nouvelle paire K/V (statique) :

    data modify storage test:main Database append value {key: 4, value: "four"}
  • Lire la valeur de la clé (statique) :

    tellraw @a {"nbt":"Database[{key: 4}].value"}
  • Écraser une nouvelle valeur (dynamique) sur une clé (statique) :

    data modify storage test:main Database[{key: 4}].value …

Les commandes permettant d'effectuer les mêmes opérations mais avec des clés dynamiques seront beaucoup plus difficiles mais pas impossibles. Voici un démarrage pour ajouter une nouvelle paire clé-valeur avec une clé et une valeur dynamiques :

data modify storage test:main Database append value {key: "temp", value: "temp"}
data modify storage test:main Database[-1].key set value 5
data modify storage test:main Database[-1].value set value "five"

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