Résolu Différence item give / item naturel

Nargoua

Aventurier
31 Mars 2020
5
1
3
26
Bonjour à tous,
C'est la première fois que je poste une question sur un forum donc j'espère que je réussirais à être clair dans mes propos et que vous pourrez m'aider.

Alors voilà je "débute" dans les commands bloc et je suis en train de réaliser un système de "pouvoir magique" avec un bâton renommé. En gros je voudrais qu'un marchand vende un bâton renommé et que ce bâton donne des capacités au joueur quand il est dans la main ( invoquer des éclairs, courir plus vite, sauter plus haut, des choses comme ça...)
J'ai réussi à faire les effets des bâtons qui fonctionnent avec les noms donc tout ça c'est bon mais par contre j'ai un souci de base, c'est que l'item donné par le marchand(ou par la commande /give) ne fonctionne pas avec la commande du command bloc alors que un simple stick renommé à l'aide d'une enclume fonctionne avec la commande alors qu'au premier abord les deux items semblent identiques:
.
1585687978215.png

Item donné par un villageois ou par la commande /give @p minecraft:stick{display:{Name:"[{\"text\":\"BAGUETTE DE GLACE\"}]"}} 1 qui ne fonctionne pas avec le command bloc


1585688021352.png

Item basique renommé avec une enclume qui fonctionne avec le command bloc

/execute if entity @e[nbt={SelectedItem:{tag:{display:{Name:"{\"text\":\"BAGUETTE DE GLACE\"}"}}}}]
Voici la commande qui est censé détecter si l'on possède la baguette dans la main

Donc je voulais savoir si il existe une différence entre un stick renommé avec une enclume et un stick give renommé par une commande?

Pour info je suis en 1.15.

J'espère que vous pourrez m'aider avec ça.

Merci d'avance
 
Dernière édition:

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
Hey !
Pourrais-tu me passer la commande que tu utilises pour invoquer le villageois ? :)
 

Nargoua

Aventurier
31 Mars 2020
5
1
3
26
Hey !
Pourrais-tu me passer la commande que tu utilises pour invoquer le villageois ? :)
Bien sûr la voici:
/summon villager ~ ~1 ~ {VillagerData:{profession:cleric,level:99,type:taiga},Invulnerable:1,PersistenceRequired:1,Silent:1,NoAI:1,CustomName:"\"Marchand de baguettes\"",Offers:{Recipes:[{buy:{id:gold_block,Count:64},buyB:{id:dragon_breath,Count:32},sell:{id:stick,Count:1,tag:{display:{Name:"\"BAGUETTE DE GLACE\""}}},rewardExp:0b,maxUses:9999999}]}}
 

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
Hey !

Du coup, lorsque je regarde les datas de l'item vendu par le PNJ, je tombe sur cela :
Code:
{id: "minecraft:stick", Count: 1b, tag: {display: {Name: '"BAGUETTE DE GLACE"'}}}
Il faut savoir que depuis la 1.13, il y a un autre moyen d'insérer des guillemets dans un String que par échappement comme tu l'as fais (précéder ses guillemets par un slash pour dire que cela fait partie du string). Pour cela, maintenant on priviligie une seconde méthode qui est de délimiter notre string par des apostrophes (') ! De la sorte, il n'y a pas de soucis avec les guillemets que l'on peut mettre sans échapper.
C'est ce que Minecraft a fait ici pour ton item ;)
Il faut aussi savoir que pour des Strings, même si c'est une structure JSON dedans, Minecraft les compare par égalité de syntaxe (donc si il y a une divergence, ce n'est pas égal), et non pas par égalité de sémantique (donc deux strings peuvent avoir le même sens, mais ne pas être égaux comme c'est ton cas).
De plus, il est légal de représenter ton JSON, lorsque celui-ci ne contient que "text", par le string lui-même (avec des guillemets autour) sans passer par la structure ('{"text":"un string"}' -> '"un string"')
Il faut donc que tu adaptes ton système à cela :
Code:
/execute if entity @e[nbt={SelectedItem:{tag:{display:{Name:'"BAGUETTE DE GLACE"'}}}}]
Voilà, en espérant que cela t'aide ! ;)
 
Dernière édition:
  • J'adore
Reactions: Nargoua

Nargoua

Aventurier
31 Mars 2020
5
1
3
26
Salut !

Tout d'abord je te remercie de ta réponse très claire et complète, ça m'a permis de comprendre mon erreur.
Puis ça fonctionne bien mieux maintenant, ça m'aide énormément, vraiment ! Reste deux trois petits soucis à régler et mon système sera opérationnel. Mais c'est vrai que depuis la 1.13 pas mal de choses ont changés dans les commands bloc et trouver des tutos clair et complets dessus c'est coton.

Mais en tout cas merci à toi !
 

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
Et bah ça tombe bien ! Dans le cadre de Gunivers (une communauté dont je suis l'un des cofondateurs), on a rédigé un guide parlant du map making côté commandes (apprendre de A à Z le fonctionnement, les bonnes pratiques, avec support de la 1.14-1.15) en partenariat avec Minecraft-France !
Je te passe le lien vers celui-ci si cela t'intéresse ;)

EDIT :
Bon, le lien est censuré donc je te donne un lien réduit :
 
  • C'est le feu
Reactions: Nargoua

Nargoua

Aventurier
31 Mars 2020
5
1
3
26
Aah je vais le dévorer alors !

Merci pour tout, avec ça plus de raison de pas réussir mon projet haha :merci
 
  • J'adore
Reactions: Oromis