EntityJoinWorld/EntityQuitWorld



  • Bonjour j'ai essayé de faire un message quand un joueur join et quit le serveur j'ai essayé sa mais sa ne marche

    @SubscribeEvent
    public void onEntityJoinWorld(PlayerEvent.PlayerLoggedInEvent worldevent)
    {
    worldevent.player.addChatMessage(new ChatComponentTranslation("join.msg", worldevent.player.getDisplayName()).setChatStyle((new ChatStyle().setColor(EnumChatFormatting.DARK_GREEN).setBold(true))));
    }
    @SubscribeEvent
    public void onEntityQuitWorld(PlayerEvent.PlayerLoggedOutEvent worldevent)
    {
    worldevent.player.addChatMessage(new ChatComponentTranslation("quit.msg", worldevent.player.getDisplayName()).setChatStyle((new ChatStyle().setColor(EnumChatFormatting.DARK_RED).setBold(true))));
    }
    

    Merci d'avance pour votre aide


  • Administrateurs

    Salut,
    Ce que tu fais là, c'est envoyer un message au joueur qui se connecte et à celui qui se déconnecte (inutile dans le cas de la déconnexion).
    Il faut envoyer le message à tous les joueurs du serveur avec MinecraftServer.getServer().getConfigurationManager().sendChatMsg(chatComponent);
    Attention aussi PlayerEvent.PlayerLoggedInEvent et PlayerEvent.PlayerLoggedInEvent sont des event fml, donc a enregistrer avec FMLCommonHandler.instance().bus().register



  • Je vais essayer sa et je vous dis si j'ai encore un problème
    edit : j'ai fait ceci qui fonctionne :

    @SubscribeEvent
    public void onEntityJoinWorld(PlayerEvent.PlayerLoggedInEvent worldevent)
    {
    MinecraftServer.getServer().getConfigurationManager().sendChatMsg(new ChatComponentText("[+]" + worldevent.player.getDisplayName()).setChatStyle((new ChatStyle().setColor(EnumChatFormatting.DARK_GREEN).setBold(true))));
    }
    @SubscribeEvent
    public void onEntityQuitWorld(PlayerEvent.PlayerLoggedOutEvent worldevent)
    {
    MinecraftServer.getServer().getConfigurationManager().sendChatMsg(new ChatComponentText("[-]" + worldevent.player.getDisplayName()).setChatStyle((new ChatStyle().setColor(EnumChatFormatting.DARK_RED).setBold(true))));
    }
    

    j'ai une seul question, si je le met comme sa sur mon serveur il me semble que le message vanillla va apparaître aussi non ? si oui comment puis-je le désactiver ?



  • Reflexion ou peut-être qu'un plugin existe déjà pour ça.



  • qu'entends-tu par réflexion ?



  • ClassTransformer pour modifier la classe contenant l'envoie du message.


  • Administrateurs

    @SideOnly(Side.CLIENT)
    @SubscribeEvent
    public void onMessageReceived(ClientChatReceivedEvent event)
    {
    if(event.getMessage().getFormattedText().contains(I18n.format("multiplayer.player.left", "")) || event.getMessage().getFormattedText().contains(I18n.format("multiplayer.player.joined", "")))
    {
    event.setCanceled(true);
    }
    }
    


  • C'est pas mal aussi ça xD
    Je cherche trop compliqué…



  • Je dois bien avouer que je ne vois pas trop comment faire; quelqu'un aurait une documentations ( un post forum, un github etc ) pour que je puisse me renseigner ?




  • Désolée mais sa ne fonctionne pas il me demande "add cast of 'event'" et je regarde sans trouver comment le corigé


  • Administrateurs

    Ah oui car c'est en code 1.10.2.
    Avant il n'y avait pas de getter, event.getMessage() devrait être juste event.message



  • effectivement merci beaucoup pour votre aide résolu

    edit : en faite non ce n'est pas résolu je m’explique ; le code du message vas très bien mais quand je met ce code :

    @SubscribeEvent
       public void onMessageReceived(ClientChatReceivedEvent event)
       {
           if(event.message.getFormattedText().contains(I18n.format("multiplayer.player.join")));
           {
               event.setCanceled(true);
           }
       }
    

    avec ou sans le side client le message custom se désactivé aussi.
    Le problème vient bien de cet event qui désactive le message du fais que sans ce code tous fonctionne et que les system.ou.println confirmes mes soupçon.
    J'ai beau y réfléchir je ne trouve pas de solution j'ai voulu essayer de mettre notament en condition si l'event est annulé alors sa active mon message mais certains des events sont FML et d'autre Forge donc sa ne marche pas.
    Voila pourquoi je redemande votre aide.



  • En effet ceci désactive le message le problème c'est que cet event désactive aussi le message custom ( j'ai essayé avec des println et sa vient en effet de ceci).
    J'ai essayé de faire en sorte que lorsque le message est cancel le message du chat s'active mais sa ne fonctionne pas car un event est fml et l'autre forge.


  • Administrateurs

    On utilises ce code sur nhg et on n'a pas de problème.
    Donc il faut que tu cherches pourquoi la condition annule aussi ton message.



  • trouvé résolu