Bonjour,
Pour les panneaux je te recommande ce site qui peut t'être utile : http://minecraft.tools/fr/sign.php
(en effet même en comprenant la commande celle-ci est plutôt longue à écrire donc ce genre d'outil est très utile quand on doit faire plusieurs panneaux rapidement)
Le site est assez intuitif et possède beaucoup d'options
Pour tester plusieurs items et plusieurs types c'est un peu compliqué, mais c'est possible :
On créer d’abord un score pour chaque items :
Code (cpp):
/scoreboard objectives Item1 dummy
Code (cpp):
/scoreboard objectives Item2 dummy
Code (cpp):
/scoreboard objectives Item3 dummy
...
Pour créer ce système il va falloir toujours passer par un setblock de bloc de redstone ce qui donne ici :
Code (cpp):
/give @p minecraft:sign 1 0 {BlockEntityTag:{Text1:"{\"text\":\"\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"setblock x y z redstone_block\"}}",Text2:"{\"text\":\"Acheter\"}",Text3:"{\"text\":\"item\"}"}}
Le principe de la commande est toujours le même avec :
Code (cpp):
{\"text\":\"\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"setblock x y z redstone_block\"}}
qui execute "setblock x y z redstone_block" au clique droit du joueur.
et
Code (cpp):
Text2:"{\"text\":\"Acheter\"}",Text3:"{\"text\":\"item\"}
qui affiche Acheter item sur deux ligne différentes (Text2 et Text3)
Puis comme la dernière fois on récupère le signal avec un repeater (pour éviter le spam clic) qui mène à une ligne de commande bloc avec :
Un commande bloc qui setblock d'air sur le bloc de redstone
et 3 commandes blocs alignés avec ces commandes :
Code (cpp):
/stats block "coordonnées du commande bloc qui suivra" set AffectedItems @p Item1
Code (cpp):
/stats block "coordonnées du commande bloc qui suivra" set AffectedItems @p Item2
Code (cpp):
/stats block "coordonnées du commande bloc qui suivra" set AffectedItems @p Item3
Pour expliquer cette commande c'est très simple, elle va récupérer le nombre d'items concernés pour chaque commande bloc et affecter ce nombre au score Item1/2/3 pour le joueur
Puis après un repeater pour chaque commande bloc, on va utiliser un clear :
La syntaxe du clear est celle ci :
Code (cpp):
/clear [joueur] [item] [data] [nombre] [dataTag]
Donc pour des items basiques :
Code (cpp):
/clear @p string 0 1
0 car notre fil est normal, ce nombre peut varier pour les laines par exemple, en fonction de la couleur (F3+H affiche ces nombres)
1 car on veux supprimer un fil, le nombre n'a pas de limite, on peux très bien supprimer 100 items
Pour des items nommés :
Code (cpp):
/clear @p string 0 1 {display:{Name:"Fil"}}
Code (cpp):
{display:{Name:"Fil"}}
indique le nom "Fil", c'est le dataTag
Mais dans ce cas ci nous ne pouvons pas supprimer un item sans être sur que le joueur possède les autres on va donc écrire :
Code (cpp):
/clear @p string 0 0 {display:{Name:"Fil"}}
Malgré le 0 0 cette commande est très utile pour la suite, en effet celle ci va renvoyer une valeur, le nombre de fils du joueurs.
Enfin, on testfor un joueur avec le nombre voulu pour chaque score, exemple pour 1 papier, 2 stone et 3 fils :
Code (cpp):
testfor @p[score_Item1_min=1,score_Item2_min=2,score_Item3_min=3]
Après ce testfor avec un comparateur on execute :
-Un clear de chaque items
-Un/des commande(s) bloc(s) qui execute(nt) ce que l'on veut (give/effect/...)
Il faut aussi sur un autre repeater,qui ne doit pas dépendre du comparateur,
un commande bloc qui va remettre à 0 l'état du commande bloc de testfor, celui en effet laissant activé le comparateur, avec ou sans redstone empêchant une futur utilisation. Cette état étant causé par le fait qu'il n'est pas actualisé. On utilise alors un blockdata pour le testfor utilisé:
Code (cpp):
/blockdata x y z {SuccessCount:false}
On ajoute aussi un reset des scores avec :
Code (cpp):
/scoreboard players set @p Item1 0
Code (cpp):
/scoreboard players set @p Item2 0
Code (cpp):
/scoreboard players set @p Item3 0
...
Enfin, on ajoute aussi une cloc qui va ajouter au score 0, car cela va permettre de correctement stocker les données avec la commande stat:
Code (cpp):
/scoreboard players add @a Item1 0
Code (cpp):
/scoreboard players add @a Item2 0
Code (cpp):
/scoreboard players add @a Item3 0
...
Le système est remis à 0 et prêt à être utilisé de nouveau
Une image :