Résolu Insérer des données dans un objet de l'utilisateur

Chenille33

Aventurier
21 Mai 2020
11
2
3
32
Bonjour à tous,

Premier post, désolé si je fais une gaffe, n'hésitez pas à me reprendre ;)

Version utilisée : Java Edition, Snapshat 20w21a (de la 1.16)

Idée de base:
J'aimerai à l'utilisation d'un objet (dans cet exemple j'utilise un oeuf d'enderman) lui ajouter des informations sur l'utilisateur : dans l'idéal ses coordonnées, à défaut au moins son uid/pseudo).

Pré-requis:
  • J'ai mon trigger pour détecter l'item : un scoreboard basé sur un évènement minecraft:used. J'auto-kill également l'entité spawné par l'oeuf car ce n'est pas le but ici (j'auto-tag l'entité spawné et je kill à chaque tick les entités ayant ce tag).
  • Je sais accéder à l'item en main : SelectedItem
  • Je sais modifier une propriété d'un bloc, entité, item via la commande /data

Stratégie actuelle:
N'ayant rien trouvé sur la possibilité de créer des attributs custom (corrigez moi si ce n'est pas le cas), je suis partis du principe que :
  1. Les coordonnées de l'utilisateur sont stockées dans sa propriété Pos qui est un tableau
  2. Le seul tableau "disponible" (c-à-d sans risque de ré-écriture ou de perte de données) est Lore
  3. Au pire je peut accéder séparément à chaque position via l'indice correspondant au tableau Pos

Commande actuelle : (ne marche pas mais sans correcte syntaxiquement)
/data modify entity @s SelectedItem.tag.display.Lore set from entity @s Pos

J'ai essayé les variantes suivantes :
/data modify entity @s SelectedItem.tag.display.Lore append from entity @s Pos[0]
et:
/data modify entity @s SelectedItem.tag.display.Lore insert 0 from entity @s Pos[0]

Bref je tourne un peut en rond, si quelqu'un peut m'avancer ça serait top :)

Merci d'avance à ceux qui répondront !
 

Eglaios

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

Donc tu veux ajouter des données propres au joueur sur l'item tenu?
Tu vas rire, je viens justement de publier la bêta d'un pack de données permettant de stacker des potions :
En gros, quand un joueur boit une potion stackée, le datapack met une autre potion à la place de celle qui a été bue, avec le nombre de potions stackées (veleur stockée en objectif du joueur), et il se trouve que c'est exactement du même principe que tu parles!

Jettes-y un oeil en attendant, je te prépare un petit datapack qui te permettra d'arriver à tes fins (oui, remplacer l'objet en SelectedItem nécessite un datapack)


Ce genre de système utilise deux techniques plutôt originales, tu verras...

Si tu n'as pas besoin d'entités pour l'oeuf, utilise plutôt ceci pour te le give :
Code:
/give @s minecraft:enderman_spawn_egg{EntityTag:{id:"minecraft:item"}}
Quand tu placeras cet oeuf, rien n'apparaît (vu qu'il manque des données pour spawner un item valide).


Au fait, tu es un minimum familier avec les datapacks?
 
Dernière édition:

Chenille33

Aventurier
21 Mai 2020
11
2
3
32
Salut !

Merci pour ta réponse !

Oui ne t'inquiète pas je développe justement un datapack (d'où ma question). Donc pas la peine de faire le travail à ma place (c'est gentille merci :) ) mais si tu peux m'expliquer le principe...
En gros la commande /data me permettra pas ça ? C'est plus complexe ? Donc scoreboard j'imagine et/ou tag et/ou team ?
Au pire si tu es sur le discord on peut en parler je suis dispo en ce moment (et au moins jusqu'au 2 juin :p ).

P.S: je vais regarder ton datapack au cas où j'arrive à piger par moi même...
 

Eglaios

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

Ben en très très (très) gros, tu génères le nom de l'item que tu veux sur un panneau en json avec des sélécteurs, qui seront convertis, puis tu copies ce nom sur un item que tu auras invoqué dans une shulker box.
Ensuite, avec une loot table modifiée, tu mets l'item de la shuker box dans la main du joueur grâce au /loot

voilà......

Ben je fais un pack démo pour te montrer le principe
 

Chenille33

Aventurier
21 Mai 2020
11
2
3
32
Ah ouaaaaaaaaaaaais c'est bien plus complexe que je ne l'imaginais !
Du coup oui ça m'intéresse grave un datapack démo (encore merci !) car pas sûre d'y arriver seul...
Puis-je t'envoyer en mp l'idée exacte du truc pour voir si c'est vraiment faisable (avant que tu fournisse un gros travail) ?
 

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Ah oui vas-y

Ben c'est pas un gros travail, c'est 5 fonctions, et encore je fais la gestion main gauche/droite et j'ai déjà la loot table toute faite
Par contre, si tu prévois utiliser plusieurs oeufs d'endermen à des fins différentes, ça risque de pas marcher (donc n'utiliser l'oeuf d'enderman que pour une seule fonctionnalité)
 

Chenille33

Aventurier
21 Mai 2020
11
2
3
32
Manifestement je ne peux pas te mp... Je l'ai mis sur ton profil pas sur que tu l'ai vu donc dans le doute...