Retracer des données grâce à un score correspondant à leur ID?

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Eh!


Pour un datapack d'item shop (joueur <-> banque de données), je dois enregistrer un certain nombre de stats, et ce, pour chaque item disponible (prix d'achat, de revente, quantité dispo, indice de préciosité et autres retracements de transactions pour altérer les prix).
Pour stocker tout ça, je pensais utiliser l'une de ces deux méthodes :
-scores (stats = objectifs, items = dummy players).
-tags d'item sur un porte-armure invisible unique "database" (en liste)

Cependant, je dois retracer des données spécifiques pour le menu de transaction (en /tellraw) :
Il y a deux modes, "achat" et "vente" :

Le mode achat :
2019-11-03_19.58.52.png


Mode vente :
2019-11-03_20.13.42.png

En gros, le joueur sélectionne l'ID de l'item et sa quantité (Stockés en un score chaque par la suite), puis je dois retracer et afficher ces données d'item :
-Dans le mode "achat" : "Prix d'achat de l'item (unité)", "Nombre d'items en stock"
-Dans le mode "vente" : "Prix de vente de l'item (unité)"
(Informations qui sont stockées soit en score, soit sur une entité)
Par la suite, je désire utiliser les données de la transaction pour influencer les prix de l'item (donc besoin de retracer à nouveau la source), ce qui m'oblige à chercher à deux reprises le chemin jusqu'aux stats

Enfin, pour afficher le nom d'item selon l'ID, j'ai pas le choix de passer par le hardcoding (genre "If selectedID = 263 : display Coal" ou gestion d'entités, voir "Mes pistes")


Bref, la question dans tout ça :
"Puis-je aller chercher les données voulues d'un item parmi d'autres à partir de son ID (en score) sans être obligé de créer une fonction pour chacun d'eux?"
Ou simplement, trouver une alternative à cette commande impossible :
/data get entity @e[tag=database,limit=1] ArmorItems[0].tag.ItemsData[{ID:{scores:{@s,SelectedID}}}]
(Sachant que remplacer la partie rouge par le tag exact, comme "ID:263" marche parfaitement)


Perso, s'il n'y a pas de solution à mon problème et que je doive faire des fonctions pour chaque item, ça ne me dérange pas plus que ça, mais c'est quand même la loose de s'être tapé des dizaine de fichiers et de se rendre compte que le truc pouvait être fait en dix commandes...


Ma seule solution pour l'instant serait d'invoquer une entité pour chaque item, permettant ainsi de les sélectionner avec @e[scores={ID_de_l'item=X}]... mais c'est non; avec toute la famille que ça va invoquer, je préfère encore utiliser le hardcoding

Je sais aussi que retracer un joueur fictif à partir de son score dans un certain objectif est absolument impossible, vu qu'il ne peut pas être ciblé autrement que par son nom, nom qui ne peut pas être stocké pour le retraçage.

En passant, ça va être un gros pack avec plein de paramètres! Je balance pas tout mais on pourra même changer le nom de la monnaie et son symbole!
 

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Pour l'instant, j'ai stocké toutes les données du charbon (je n'utilise que lui pour l'instant) dans des objectifs en tant que "dummy player coal"...
Pour maximiser l'utilité du hardcoding, j'ai fait une fonction qui stocke toutes les stats du charbon (retracées par hardcoding), nécessaires ou non, sur le joueur, dans les mêmes objectifs que l'item...

En gros, ça permet de "load" l'item sur le joueur, et je pourrai utiliser ça avec d'autres trucs que l'interface tellraw (dont la commande d'affichage du mode "achat" comporte actuellement 6975 caractères, tapée main :bave:)


Si vous avez d'autres idées pour retracer un item d'une liste, je suis toujours en quête d'une solution au hardcoding (sauf hard-summoning)