Bonjour à tous !!!
Dans ce tutoriel, je vais vous montrer comment réaliser un changement d'armes sur tous les squelettes de la map : ils prendront une épée lorsqu'ils se situent à moins de 4 blocs d'un joueur, un arc lors ce qu'il est à plus de 4 blocs.
Tout d'abord faîtes une fill clock (ou autres clock rapide) puis désactivez la sortie des command blocks (pour ne pas être spam de messages, /gamerule commandBlockOutput false).
Ici, elle est dirigée vers le sud avec, dans le command block du haut :
Code (cpp):
- /fill ~1 ~ ~ ~1 ~ ~3 stone
Puis dans celui du bas :
Code (cpp):
- /fill ~-1 ~ ~ ~-1 ~ ~3 redstone_block
Créez ensuite un objectif nommé Switch
Code (cpp):
- /scoreboard objectives add Switch dummy
Il faut tout d'abord détecter l'objet que porte en main le squelette puis lui attribuer un score de 1 s'il porte un arc dans un rayon de 4 blocs du joueur.
Pour cela, mettez un command block sur cette clock puis écrivez ceci dedans :
Code (cpp):
- /execute @a ~ ~ ~ scoreboard players set @e[type=Skeleton,r=4] Switch 1 {Equipment:[{id:"minecraft:bow"}]}
Pour l'expliquer, le joueur va éxécuter en boucle une commande qui mettra 1 à l'objectif Switch à tout squelette se trouvant dans un rayon de 4 et portant un arc.
S'il porte bien un arc (donc si son score est de 1), il faut ajouter un command block qui remplacera l'arc par une épée en fer :
Code (cpp):
- /replaceitem entity @e[type=Skeleton,score_Switch_min=1,score_Switch=1] slot.weapon minecraft:iron_sword 1 0
Cette commande va remplacer l'arc tenu en main par une épée QUE si le score Switch du squelette est de 1.
Là, le système en lui-même est fini, si vous essayez, le squelette prendra bien une épée si vous êtes dans le rayon sélectionné par contre si vous vous en éloignez il gardera l'épée et là on veut qu'il reprenne l'arc donc continuons !
Maintenant, il faut détecter si le squelette tient une épée alors qu'il n'est plus dans le rayon :
Code (cpp):
- /execute @a ~ ~ ~ scoreboard players set @e[type=Skeleton,rm=5] Switch 0 {Equipment:[{id:"minecraft:iron_sword"}]}
Plus ou moins la même commande que tout à l'heure sauf que là on regarde dans un rayon minimum de 5 autour du joueur s'il se trouve un squelette ayant une épée.
Comme pour qu'il prenne l'épée, on rajoute une commande lui donnant l'arc si le score est de 0
Code (cpp):
- /replaceitem entity @e[type=Skeleton,score_Switch=0] slot.weapon minecraft:bow 1 0
Il ne reste plus qu'une chose à ajouter, car là si vous essayez le système, le switch fonctionnera dans les deux sens mais le squelette ne tirera pas avec l'arc.
C'est parce que la commande lui donnant l'arc le "spam" (car le score reste à 0) donc le changement ce fait en permanence ce qui déroute un peu le squelette. Donc ajoutons une commande en sortie des deux command blocks changeant l'état du squelette pour mettre son score à 2.
Code (cpp):
- /execute @a ~ ~ ~ scoreboard players set @e[type=Skeleton] Switch 2
Et voilà, le système fonctionne parfaitement !!!
J'espère qu'il vous aura plu.