CommandBlock Minecraft 1.14 (Java) - Détection de mort d'un mob.

Xotoks

Aventurier
3 Août 2019
5
0
1
33
Bonjour,

après de nombreuses recherches désastreuses sur le sujet, je décide à contrecœur de poser ma demande sur une "plate-forme" d'entraide. En effet, j'ai beau trifouiller les tréfonds du web sur des forums anglophones et francophones, je tombe sur de tout et de n'importe quoi. À vrai dire, c'est assez frustrant. Soit, ce n'est plus la bonne version, soit les solutions qui sont proposées sont foireuses... Alors, afin d'être sûr de trouver mon bonheur, je viens m'adresser ici en espérant que vous puissiez m'aider.

Donc, je souhaite faire via les blocs de commandes un système qui détecte la mort d'un mob afin de déclencher une autre commande (setblock, summon, fill, etc..).

De ce fait, dans le cadre du mapmaking, je pourrais, par exemple, faire spawn deux zombies dès qu'un zombie est tué par le joueur. Ou alors, dès qu'un mob spécifique meurt, cela permet d'ouvrir une porte.

J'ai souvent vu des suggestions utilisant le scorboard ou le tag, voire le trigger!

Je pense avoir fait le tour, mais si vous avez besoin de plus de précision, je suis à l'écoute. En vous remerciant d'avance.
 
16 Février 2014
1 944
391
217
le sud (de Melun)
Ha tient j'ai réfléchi à ça l'autre jour. On peut par exemple avoir un armor stand invisible qui chevauche l'entité dont tu veux détecter la mort.
Lorsqu'on tue le monstre l'armor stand tombe et on peut faire un /execute (sur ceux qui n'ont pas le tag passager par exemple).

Après un scoreboard suffit si les zombies ne peuvent être tués que par des joueurs ou d'autres mobs.
 

Xotoks

Aventurier
3 Août 2019
5
0
1
33
Bonjour.

Merci pour cette réponse rapide. Pourrais-je abuser en demandant le code complet avec l'exemple de l'armor_stand et du scoreboard afin que je puisse recopier? Et surtout, au niveau du bloc de commande, il faudrait me préciser également leur nombre et leur état (répétition, conditionnelle, etc...). J'ai besoin d'un schémas clair en réalité. Le texte seul ne me suffit pas pour comprendre. :(
 
16 Février 2014
1 944
391
217
le sud (de Melun)
Tout d'abord il existe des systèmes beaucoup plus simples si détecter le fait qu'un mob n'existe pas te suffit. Tu peux par exemple avoir un command block qui execute ta commande seulement si les zombies n'existent pas. Le command block serait actif qu'après l'apparition des zombies (avec un bloc de redstone).

Mais si tu as deux zombies identiques et que tu as vraiment besoin de savoir si l'un des deux meurt je pense que c'est ça le meilleur moyen de procéder :

Quand tu fais apparaître les zombies il faut leur ajouter le tag suivant :
{Passengers:[{id:"minecraft:armor_stand",Marker:1,Invisible:1,CustomName:"\"mort_zombie\""}]}
Le "marker:1" retire la hitbox de l'armor stand donc on sera pas gêné avec ça.

Puis dans un command block en boucle non conditionnel toujours actif (et à la limite uniquement actif après l'apparition des mobs) tu mets cette commande :
/execute as @e[name=mort_zombie] at @s unless entity @e[dy=0,type=minecraft:zombie] run kill @s

À la suite tu mets un command block chain conditionnel toujours actif avec la commande que tu veux exécuter à chaque fois qu'un zombie meurt.

Par contre si tu veux que ça ne s'active qu'une seule fois il faut que le command block conditionnel bloque le système avec un /setblock air (le premier command block a donc besoin d'un bloc de redstone) et active un troisième command block conditionnel où tu mets ta commande.

Il y a donc deux système possible selon ce que tu pourrais avoir besoin, je pense qu'il y a assez d'infos sur le schéma pour ne pas se tromper dans les réglages.
cb.png
 
Dernière édition:

Xotoks

Aventurier
3 Août 2019
5
0
1
33
Quel genre d'info' as-tu besoin? Dis-toi que l'idée est de pouvoir réaliser des maps semblables aux maps Zelda.

J'entre dans une pièce, je verrouille la pièce en question et je fais apparaître un mob. Pour déverrouiller la salle, il faut tuer le mob. Tout ce qu'il y a autour je sais comment faire. Mon seul hic, c'est de pouvoir détecter la mort du mob. Et donc, je pense que c'est important de le souligner, mais le mob est unique avec un CustomName ou un Tag?

Dis-moi si tu veux plus de précision.

Est-ce possible d'avoir la solution en vidéo?
 
16 Février 2014
1 944
391
217
le sud (de Melun)
J'essaye de comprendre ce qui ne fonctionne pas de ton côté. Tu demandais initialement un système qui détecte lorsqu'un zombie meurt après en avoir fait apparaître plusieurs.
J'ai jamais joué à zelda mais il me semble qu'il faut tuer tous les monstres (quand il y en a plusieurs) pour ouvrir la porte.

Si c'est ça que tu cherches à faire voici un système qui est plus fiable et qui marche avec des mobs différents.
Je peux pas faire de vidéo par contre. :/
cb.png

Ça peut exécuter des commandes lorsque que tous les mobs avec {Tags:["detection_mort"]} sont morts après qu'ils aient été invoqués.

Quand j'appuie sur le bouton des monstres spawn et quand je les tue tous le command block à droite est activé.

1: Impulse - Unconditional - Needs Redstone
Fait apparaître un zombie.
/summon minecraft:zombie x y z {Tags:["detection_mort"]}

2: Chain - Unconditional - Always Active
Fait apparaître un creeper.
/summon minecraft:creeper x y z {Tags:["detection_mort"]}

3: Chain - Unconditional - Always Active
Place un bloc de redstone à sa droite.
/setblock x y z minecraft:redstone_block

4: Repeat - Unconditional - Needs Redstone
Activé si il y a de la redstone, execute en boucle. Si il n'existe aucun mob avec le tag, détruit la redstone ce qui active le command block à droite (qui est conditionnel).
/execute unless entity @e[tag=detection_mort] run setblock ~ ~ ~1 air

5: Chain - Conditional - Always Active
Ouvre la porte.
Ta commande.

Évidemment il faut relier ça à tes autres systèmes qui ferment la porte et spawn les monstres...


le mob est unique avec un CustomName ou un Tag?
J'ai expliqué que ça détectait la mort de n'importe quel zombie qui a le gros tag qui leur met un armor stand spécial sur la tête, après tu peux leur rajouter d'autres tags si tu veux ça ne va pas déranger. Ce n'est pas forcément sur des mobs uniques dans le sens où tu peux en invoquer plein et ça fonctionnera.
 
Dernière édition:

Xotoks

Aventurier
3 Août 2019
5
0
1
33
Parfait. Merci beaucoup. Là, ça marche. J'ai trouvé l'explication plus clair aussi :s Désolé d'avoir mis autant de temps à comprendre.

Du coup, on peut archiver.