MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Récupérer les packets envoyés au joueur ?

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.x
    38 Messages 6 Publieurs 8.2k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • BrokenSwingB Hors-ligne
      BrokenSwing Moddeurs confirmés Rédacteurs
      dernière édition par

      Peut-tu quand même mettre le code final, pour voir stp

      1 réponse Dernière réponse Répondre Citer 0
      • T Hors-ligne
        Toinou9120
        dernière édition par

        Hop, le voilà :

        
        package com.Toinou.LifeBarMod;
        
        import java.util.Comparator;
        import java.util.Iterator;
        import java.util.List;
        
        import net.minecraft.client.Minecraft;
        import net.minecraft.client.network.NetHandlerPlayClient;
        import net.minecraft.client.network.NetworkPlayerInfo;
        import net.minecraft.entity.player.EntityPlayer;
        import net.minecraft.scoreboard.ScorePlayerTeam;
        import net.minecraft.util.ChatComponentTranslation;
        import net.minecraft.world.WorldSettings;
        import net.minecraftforge.client.event.RenderGameOverlayEvent;
        import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
        import net.minecraftforge.fml.relauncher.Side;
        import net.minecraftforge.fml.relauncher.SideOnly;
        
        import com.google.common.collect.ComparisonChain;
        import com.google.common.collect.Ordering;
        
        public class EventClass {
        
            float Vie;
            float AncienneVie;
        
            @SubscribeEvent
            public void onRenderGameOverlay(RenderGameOverlayEvent e)
            {
                Ordering ordering = Ordering.from(new PlayerComparator());
                NetHandlerPlayClient nethandler = Minecraft.getMinecraft().thePlayer.sendQueue;
                List list = ordering.sortedCopy(nethandler.func_175106_d());
                Iterator iterator = list.iterator();
        
                while(iterator.hasNext())
                {
                    NetworkPlayerInfo playerinfo = (NetworkPlayerInfo)iterator.next();
                    EntityPlayer player = Minecraft.getMinecraft().thePlayer;
                    Vie = player.getHealth();
                    if(!(Vie == AncienneVie)){
        
                        double vieDouble = (double)Vie;
                        int vieArrondie = (int) Math.ceil(vieDouble);
                        String strVie = String.valueOf(vieArrondie);
                        Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentTranslation(strVie));
                    }
                    AncienneVie = Vie;
                }
        
            }
        
                @SideOnly(Side.CLIENT)
                static class PlayerComparator implements Comparator
                {
                    private PlayerComparator() {}
        
                    public int comparation(NetworkPlayerInfo p_178952_1_, NetworkPlayerInfo p_178952_2_)
                    {
                        ScorePlayerTeam scoreplayerteam = p_178952_1_.getPlayerTeam();
                        ScorePlayerTeam scoreplayerteam1 = p_178952_2_.getPlayerTeam();
                        return ComparisonChain.start().compareTrueFirst(p_178952_1_.getGameType() != WorldSettings.GameType.SPECTATOR, p_178952_2_.getGameType() != WorldSettings.GameType.SPECTATOR).compare(scoreplayerteam != null ? scoreplayerteam.getRegisteredName() : "", scoreplayerteam1 != null ? scoreplayerteam1.getRegisteredName() : "").compare(p_178952_1_.getGameProfile().getName(), p_178952_2_.getGameProfile().getName()).result();
                    }
        
                    public int compare(Object p_compare_1_, Object p_compare_2_)
                    {
                        return comparation((NetworkPlayerInfo)p_compare_1_, (NetworkPlayerInfo)p_compare_2_);
                    }
                }
        
        }
        
        
        1 réponse Dernière réponse Répondre Citer 0
        • BrokenSwingB Hors-ligne
          BrokenSwing Moddeurs confirmés Rédacteurs
          dernière édition par

          Ah ok, je pensais que tu voulais récupérer la vie de tout les joueurs sur le serveur … Si tu veux récupérer la ta vie à toi seulement c’est beacoup plus simple. Ya plein de lignes que tu peux enlever

          1 réponse Dernière réponse Répondre Citer 0
          • T Hors-ligne
            Toinou9120
            dernière édition par

            Ah mince, je croyais que t’avais compris que c’était juste la vie du joueur qui a le mod, désolé si je t’ai fait perdre ton temps … Si ca ne te dérange pas, quelles sont les lignes que je peux enlever ? Est-ce que je peux juste laisser ça :

            
            EntityPlayer player = Minecraft.getMinecraft().thePlayer;
                        Vie = player.getHealth();
                        if(!(Vie == AncienneVie)){
            
                            double vieDouble = (double)Vie;
                            int vieArrondie = (int) Math.ceil(vieDouble);
                            String strVie = String.valueOf(vieArrondie);
                            Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentTranslation(strVie));
                        }
                        AncienneVie = Vie;
            
            

            En les laissant dans l’event bien sur.

            1 réponse Dernière réponse Répondre Citer 0
            • BrokenSwingB Hors-ligne
              BrokenSwing Moddeurs confirmés Rédacteurs
              dernière édition par

              
              private lastHealth;
              
              public void onRenderGameOverlay(RenderGameOverlayEvent e) //Encore une fois l'event à peu d'importance
              {
                    EntityPlayer player = Minecraft.getMinecraft().thePlayer;
                    if(player.getHealth() != lastHealth) player.addChatMessage(new ChatComponentText(String.valueOf((int)(Math.ceil((double)player.getHealth())))));
                     lastHealth = player.getHealth();
              }
              
              1 réponse Dernière réponse Répondre Citer 0
              • T Hors-ligne
                Toinou9120
                dernière édition par

                Ah d’accord, c’était tout simple en fait, j’avais fait la même chose avec l’event PlayerTickEvent, mais sur les serveurs Bukkit, cela me renvoyait des choses étranges donc je cherchais d’autres moyens. Encore merci pour ton aide. 🙂

                1 réponse Dernière réponse Répondre Citer 0
                • DiabolicaTrixD Hors-ligne
                  DiabolicaTrix Correcteurs Moddeurs confirmés
                  dernière édition par

                  Aussi, fait attention à la convention, Une variable doit commencer par une lettre minuscule et si il y a un deuxieme mot le deuxieme commence par une lettre majuscule exemple: lastHealth. Tu dois les écrires préférablement en Anglais.

                  1 réponse Dernière réponse Répondre Citer 1
                  • T Hors-ligne
                    Toinou9120
                    dernière édition par

                    D’accord merci 🙂

                    1 réponse Dernière réponse Répondre Citer 0
                    • robin4002R Hors-ligne
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                      dernière édition par

                      Juste à titre informatif, il n’est impossible via un mod client side only de récupérer la vie de tous les joueurs du serveur.
                      Il faut forcement passer par le serveur (donc il faut un mod côté serveur). Pour la simple et bonne raison que le client ne connait que les joueurs autours de lui (les joueurs se trouvant dans les chunks chargés)
                      C’est pour cela que ce code :
                      @‘bodri’:

                      public class EventClientListener { //Enregistré côté client seulement
                      
                      @SubscribeEvent
                      public void onRenderGameOverlay(RenderGameOverlayEvent e) //J'ai pris cet event parce que c'est un event client et qu'il est exécuter sans aucune action
                      {
                      Ordering ordering = Ordering.from(new PlayerComparator()); //Pour trier les joueurs, c'est le système de minecraft
                      NetHandlerPlayClient nethandler = Minecraft.getMinecraft().thePlayer.sendQueue;
                      List list = ordering.sortedCopy(nethandler.func_175106_d());
                      Iterator iterator = list.iterator();
                      
                      while(iterator.hasNext())
                      {
                      NetworkPlayerInfo playerinfo = (NetworkPlayerInfo)iterator.next();
                      EntityPlayer player = Minecraft.getMinecraft().theWorld.getPlayerEntityByUUID(playerinfo.getGameProfile().getId());
                      Minecraft.getMinecraft().thePlayer.sendChatMessage(player.getName() + " a " + player.getHealth() + " demi-coeurs");
                      }
                      
                      }
                      
                      @SideOnly(Side.CLIENT)
                      static class PlayerComparator implements Comparator // trie un fonction des teams et des modes de jeu (je crois)
                      {
                      private PlayerComparator() {}
                      
                      public int comparation(NetworkPlayerInfo p_178952_1_, NetworkPlayerInfo p_178952_2_)
                      {
                      ScorePlayerTeam scoreplayerteam = p_178952_1_.getPlayerTeam();
                      ScorePlayerTeam scoreplayerteam1 = p_178952_2_.getPlayerTeam();
                      return ComparisonChain.start().compareTrueFirst(p_178952_1_.getGameType() != WorldSettings.GameType.SPECTATOR, p_178952_2_.getGameType() != WorldSettings.GameType.SPECTATOR).compare(scoreplayerteam != null ? scoreplayerteam.getRegisteredName() : "", scoreplayerteam1 != null ? scoreplayerteam1.getRegisteredName() : "").compare(p_178952_1_.getGameProfile().getName(), p_178952_2_.getGameProfile().getName()).result();
                      }
                      
                      public int compare(Object p_compare_1_, Object p_compare_2_)
                      {
                      return comparation((NetworkPlayerInfo)p_compare_1_, (NetworkPlayerInfo)p_compare_2_);
                      }
                      }
                      }
                      

                      Cause un NPE (certains joueurs ne sont pas présent sur le world client, donc Minecraft.getMinecraft().theWorld.getPlayerEntityByUUID(playerinfo.getGameProfile().getId()); return null, d’ou le NPE à la ligne suivante).

                      1 réponse Dernière réponse Répondre Citer 0
                      • BrokenSwingB Hors-ligne
                        BrokenSwing Moddeurs confirmés Rédacteurs
                        dernière édition par

                        Ok, merci pour l’information

                        1 réponse Dernière réponse Répondre Citer 0
                        • 1
                        • 2
                        • 2 / 2
                        • Premier message
                          Dernier message
                        Design by Woryk
                        ContactMentions Légales

                        MINECRAFT FORGE FRANCE © 2024

                        Powered by NodeBB