Résolu Chercher de l'air dans un slot ? + D'autres questions

iKreal

Massacreur de Mouton
30 Octobre 2015
40
2
23
22
Bonjour, bonsoir !
Je cherche un Data Tag qui permet de chercher si le joueur ne possède rien à un slot spécifique. Vous n'avez sûrement pas compris, voici donc une première commande que je vais expliquer :
Code:
/scoreboard players set @a ChapeauMagique 1 {Inventory:[{Slot:103b,id:"minecraft:leather_helmet",tag:{display:{Name:"Chapeau magique"}}}]}
Comme vous pouvez le voir, cette commande permet d'affecter au joueur qui possède un casque nommé "Chapeau magique" une valeur de 1 du scoreboard ChapeauMagique.
Suite à ceci, des autres commandes procurent des effets magiques au joueur qui a ce scoreboard. Le problème c'est pour reset le scoreboard à ce joueur lorsqu'il n'a plus son chapeau dans le slot slot.armor.head (Slot:103b).
J'ai essayé :
Code:
/scoreboard players set @a ChapeauMagique 0 {Inventory:[{Slot:103b,id:"minecraft:air"}]}

Ah et aussi, c'est plus compliqué que ça.
Il faut aussi chercher si le joueur change de casque. Je souhaiterais que lorsqu'il n'y a pas de chapeau magique dans le slot slot.armor.head, le scoreboard est reset et donc les effets n'apparaissent plus.

Merci à ceux qui m'aideront, car ça urge un peu :)
Bonne soirée !
 
Dernière édition:
  • J'aime
Reactions: Maduro Spielen

Myuto

Une pomme
22 Juin 2016
398
174
155
Bonjour,
tu peux pas détecter un emplacement vide. Le moyen c'est que sur ta chaine de commande block, tu mes avant le scoreboard un reset du score.
Si on rentre dans la chaine, un reset le score de tout le monde, un regarde ceux qui ont un chapeau et on leur donne le score.
 
  • J'aime
Reactions: Maduro Spielen

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
Effectivement, pas possible, ce qu'il faut faire c'est faire une détection d'un item quelconque dans un repeat :
Code:
testfor @a {Inventory:[{Slot:103b}]
Puis tu détectes si le command block repeat échoue sa command (ce qui veut donc dire que le slot est vide) avec un command block chain au dessus :
Code:
testforblock ~ ~-1 ~ repeating_command_block -1 {SuccessCount:0}
Puis tu mets ton action au-dessus en conditional ;)
 

iKreal

Massacreur de Mouton
30 Octobre 2015
40
2
23
22
Merci de m'avoir répondu.
Je n'ai pas bien compris ta réponse Myuto, en revanche j'ai compris la tienne, Oromis. Je vais tester ça après, et je vous dit le résultat.
Par contre le problème c'est que si le joueur remplace son Chapeau magique par un quelconque casque, il dupe le système... C'est problématique...
 

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
Dans ces cas-là, précise l'item dans le NBT du testfor, ainsi, le second command-block ne s'activera que si il n'y a pas le chapeau ;)
 

iKreal

Massacreur de Mouton
30 Octobre 2015
40
2
23
22
Merci, ça fonctionne à merveille !
En revanche, est-il possible de "itemdata" un item justement ? Je veux en effet modifier un Data Tag d'un item (Damage). Comme le /replaceitem entity <nom du joueur> <slot> <id du bloc> <nombre> <Data (pour une armure = damage)>
Sinon merci encore. :)
 
Dernière édition:

iKreal

Massacreur de Mouton
30 Octobre 2015
40
2
23
22
Sinon, j'ai encore un problème. Peut-on détecter l'item que le joueur a sur son curseur lorsqu'il est dans l'inventaire ? Et peut-on clear cette item dès qu'il l'a sur le curseur ?
Je vais me coucher mais je suis la discussion, et je répondrai demain si j'obtiens une réponse !