Résolu Exécuter une commande à moins que... ?

Billboule

Chat bleu.
31 Mars 2012
417
24
125
Proche de moi :p
Salut à tous, alors voilà je me heurte à un problème :
je suis sur serveur, et j'essaie de faire en sorte que lorsque quelqu'un entre dans l'eau, celle-ci meurt SAUF si elle possède un item spécial, qui serait dans mon cas un bâton que j'obtiens comme cela :

/give @p minecraft:stick 1 0 {display:{Name:"Bâton défenseur",Lore:["Ce bâton est magique, il te permet de ne pas te faire tuer dans l'eau !"]},ench:[{id:0,lvl:4}]}

Et donc lorsque la personne a ce bâton et qu'elle rentre dans l'eau, rien ne ce passe. Si elle ne l'a pas, elle meurt de cette façon :

/execute @a[r=50] ~ ~ ~ detect ~ ~ ~ water 0 kill @p

Pourriez-vous m'aider pour trouver un moyen de ne pas tuer la personne si elle a le bâton ? Merci =)
 

Spirit

Méfie-toi.
2 Mars 2014
10 309
3 049
348
25
Tu détectes via un testfor (me demande pas le détail) si la personne a le bâton puis tu bloques le circuit qui tue la personne qui rentre dans l'eau (piston + bloc, répéteur locked).
 

BlueFuSion348

Architecte en herbe
9 Mars 2012
80
1
18
111
31
Si tu ne veux que des command_block tu peux faire ainsi :
- Incrémenter de 1 un scoreboard sur les joueurs qui ont le Bâton défenseur dans leur inventaire.
- Incrémenter de 2 ce même scoreboard sur les joueurs qui touche l'eau.
- Si un joueur a ce scoreboard à 2 : il meurt.
- Réinitialiser le scoreboard pour tous les joueurs, puis ça reboucle à la première étape.

0 = pas de bâton, pas d'eau = vivant !
1 = a bâton, pas d'eau = vivant !
2 = pas de bâton, dans l'eau = mort !
3 = a bâton, dans l'eau = vivant !
:D
 
Dernière édition:
C

Compte supprimé

Invité
Autre méthode, tu peux donner un tag aux joueurs protégés puis tuer ceux qui n'ont pas ce tag.
Il te faudra 3 command_blocks : repeat (toujours actif) > chaîne (toujours actif) > chaîne (toujours actif).
Code:
/scoreboard players tag @a add Protected {Inventory:[{id:"minecraft:stick",tag:{display:{Name:"Bâton défenseur",Lore:["Ce bâton est magique, il te permet de ne pas te faire tuer dans l'eau !"]}}}]}
Code:
/execute @a[tag=!Protected] ~ ~ ~ detect ~ ~ ~ minecraft:water -1 kill @p
Code:
/scoreboard players tag @a remove Protected
  • on donne le tag "Protected" à tous les joueurs qui ont le bâton dans leur inventaire
  • on passe par un execute, pour filtrer les joueurs non-protégés (tag=!Protected) en contact avec l'eau ; water -1 permet de prendre en compte toutes les tailles d'eau
  • on réinitialise le tag
  • ... et on recommence
rDIqF.gif
 
Dernière édition par un modérateur:
  • J'aime
Reactions: BlueFuSion348

Spirit

Méfie-toi.
2 Mars 2014
10 309
3 049
348
25
Autre méthode, tu peux donner un tag aux joueurs protégés puis tuer ceux qui n'ont pas ce tag.
Il te faudra 3 command_blocks : repeat (toujours actif) > chaîne (toujours actif) > chaîne (toujours actif).
Code:
/scoreboard players tag @a add Protected {Inventory:[{id:"minecraft:stick",tag:{display:{Name:"Bâton défenseur",Lore:["Ce bâton est magique, il te permet de ne pas te faire tuer dans l'eau !"]}}}]}
Code:
/execute @a[tag=!Protected] ~ ~ ~ detect ~ ~ ~ minecraft:water -1 kill @p
Code:
/scoreboard players tag @a remove Protected
  • on donne le tag "Protected" à tous les joueurs qui ont le bâton dans leur inventaire
  • on passe par un execute, pour filtrer les joueurs non-protégés (tag=!Protected) en contact avec l'eau ; water -1 permet de prendre en compte toutes les tailles d'eau
  • on réinitialise le tag
  • ... et on recommence
rDIqF.gif
Là tu crèves avec le bâton, c'était l'inverse qui était demandé 8)

Sinon j'aimais bien ma solution de paysan moi D: