Anti déconnections en combats



  • Bonjour, je voudrait savoir comment (pas forcement empêcher les joueurs de se déco car c'est impossible) mais par exemple quand des joueurs sont en combats et que 1 des deux se déconnecte le serveur exécute la commande /broadcast Le joueur <player>c'est déconnecter en plein combats (le <player>pointe le joueur qui a déconnecter)</player></player>


  • Administrateurs

    Salut,
    Il y a un event de fml lorsqu'un joueur se déconnecte (PlayerEvent.PlayerLoggedOutEvent) et il y a la fonction player.getAttackingEntity() qui renvoie l'entité l'ayant attaqué récemment.
    player.getAttackingEntity() est null s'il n'y a pas d'attaquant récent.

    Donc tu as juste a envoyer un message si player.getAttackingEntity() n'est pas null.



  • Oui mais part exemple si je fait comme tu ma dits sa va dire que meme si il la attaquer il y à 2min il peux toujours pas ce déco


  • Administrateurs

    Non.
    Je ne connais pas le timer exacte, mais c'est pas du tout 2 minutes. Minecraft utilise player.getAttackingEntity() pour les messages de mort.
    Si tu te fait attaqué par un joueur et que tu meurs dans la lave 2 minutes après il y a juste écrit "x est mort dans la lave" et non "x est mort dans la lave lors d'un combat contre y".

    Faudrait vérifier dans le code mais à mon avis au bout de 15 secondes voire moins sans être attaqué player.getAttackingEntity() renvoie à nouveau null.

    EDIT : je viens de vérifier dans le code, c'est 300 tick, donc exactement 15 secondes.



  • sauf si je dis des conneries le timer est de 15sc pour ton principe de combat.



  • Au cas ou personne ne l'a dit, le timer est de 15 secondes



  • Alors en voulant mettre en résolu les sujet que j'ai pas mis j'ai retrouvé celui là donc j'ai fait se que ta dit sauf que j'arrive pas à regarder si c'est supérieure à null

    @SubscribeEvent
       public void PlayerLoggedOutEvent(PlayerEvent.PlayerLoggedOutEvent event)
       {
        event.player.getAttackingEntity();
       }