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

Discussion dans 'Redstone et Command blocks' créé par Xotoks, 3 Août 2019.

  1. Xotoks

    Xotoks Nouveau

    Inscrit:
    3 Août 2019
    Messages:
    5
    J'aime reçus:
    0
    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.
     
  2. Régis Laspalès

    Inscrit:
    16 Février 2014
    Messages:
    1 917
    J'aime reçus:
    375
    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.
     
  3. Xotoks

    Xotoks Nouveau

    Inscrit:
    3 Août 2019
    Messages:
    5
    J'aime reçus:
    0
    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. :(
     
  4. Régis Laspalès

    Inscrit:
    16 Février 2014
    Messages:
    1 917
    J'aime reçus:
    375
    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
     
    #4 Régis Laspalès, 4 Août 2019
    Dernière édition: 4 Août 2019
  5. Xotoks

    Xotoks Nouveau

    Inscrit:
    3 Août 2019
    Messages:
    5
    J'aime reçus:
    0
    Ça ne marche pas. :'(
     
  6. Régis Laspalès

    Inscrit:
    16 Février 2014
    Messages:
    1 917
    J'aime reçus:
    375
    Je vais pas pouvoir t'aider si tu ne donnes pas plus d'informations.
     
  7. Xotoks

    Xotoks Nouveau

    Inscrit:
    3 Août 2019
    Messages:
    5
    J'aime reçus:
    0
    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?
     
  8. Régis Laspalès

    Inscrit:
    16 Février 2014
    Messages:
    1 917
    J'aime reçus:
    375
    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...


    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.
     
    #8 Régis Laspalès, 5 Août 2019
    Dernière édition: 5 Août 2019
  9. Xotoks

    Xotoks Nouveau

    Inscrit:
    3 Août 2019
    Messages:
    5
    J'aime reçus:
    0
    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.
     
  10. Régis Laspalès

    Inscrit:
    16 Février 2014
    Messages:
    1 917
    J'aime reçus:
    375

Partager cette page