MFF

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

    [1.7.2 ++] Le network

    Planifier Épinglé Verrouillé Déplacé Le réseau
    1.11.x1.12.x1.7.x1.8.x1.9.x
    66 Messages 20 Publieurs 40.0k Vues 4 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.
    • K Hors-ligne
      Kushhh
      dernière édition par

      Merci Blackout pour ce tuto, il vas bien m’aider pour enfin comprendre les paquets !

      🙂

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

        Merci pour le tuto, un petit problème (je sais pas si je dois le mettre ici on dans support) quand j’utilise la methode registermessage(…) eclipse me met une erreur (souligné en rouge), donc je met le commentaire qu’il me donne :

        
        The method registerMessage(Class>, Class<req>, int, Side) in the type SimpleNetworkWrapper is not applicable for the arguments (Class<packetshema.packethandler>, Class<packetshema.packet>, int, Side)
        
        

        Mon code :
        :::

        
        public static void register(){
        Defaults.channel.registerMessage(PacketShema.PacketHandler.class, PacketShema.Packet.class, Defaults.shemapacid, Side.SERVER);
        }
        
        

        :::

        ma classe PacketShema :
        :::

        
        public class PacketShema{
        public class Packet implements IMessage{
        public void fromBytes(ByteBuf buf) {
        }
        
        @Override
        public void toBytes(ByteBuf buf) {
        }
        }
        public class PacketHandler implements IMessageHandler{
        
        @Override
        public IMessage onMessage(IMessage message, MessageContext ctx) {
        return null;
        }
        
        }
        }
        
        

        :::

        Merci pour votre aide.

        Edit : je suis en 1.7.10</packetshema.packet></packetshema.packethandler></req>

        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

          public class PacketShema{
          public class Packet implements IMessage{
          public void fromBytes(ByteBuf buf) {
          }
          
          @Override
          public void toBytes(ByteBuf buf) {
          }
          }
          public class PacketHandler implements IMessageHandler<packet, imessage="">{
          
          @Override
          public IMessage onMessage(IMessage message, MessageContext ctx) {
          return null;
          }
          
          }
          }
          

          Ta classe devrait être comme ça.</packet,>

          1 réponse Dernière réponse Répondre Citer 1
          • RedRelayR Hors-ligne
            RedRelay Moddeurs confirmés
            dernière édition par

            Comme l’a dit Robin, ton IMessageHandler prend 2 parametres de type :
            IMessageHandler<packetarecevoir, packetaretourner=“”></packetarecevoir,>

            –------------------------------------------------------------------------------------
            Si tu trouves mon intervention pertinente, n'hésite pas a m…

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

              Ok merci, je vais revoir quelques cours de java sur les impléments ça ne fera pas de mal.

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

                Si je veux envoyer un message du client au serveur et avoir une réponse du serveur ( au client logiquement ) je dois faire un autre type de channel ? ( NetworkRegistry.INSTANCE.newChannel ) ou le ( NetworkRegistry.INSTANCE.newSimpleChannel ) suffit ?

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

                  Tu utilises ton channel pour l’envoie de message, que se soit client ou serveur.
                  Tu ne crées un nouveau channel que si tu as plus de 255 types de packet.

                  –------------------------------------------------------------------------------------
                  Si tu trouves mon intervention pertinente, n'hésite pas a m…

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

                    Salut j’ai un probleme:
                    le message ne s’affiche pas dans la console quand je mets ce code

                    
                    package com.harrypotter.sosoh.proxy;
                    
                    import io.netty.buffer.ByteBuf;
                    import cpw.mods.fml.common.network.ByteBufUtils;
                    import cpw.mods.fml.common.network.simpleimpl.IMessage;
                    import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
                    import cpw.mods.fml.common.network.simpleimpl.MessageContext;
                    
                    public class PaquetHandler implements IMessage {
                    
                        private String text;
                    
                        public PaquetHandler() { }
                    
                        public PaquetHandler(String text) {
                            this.text = text;
                        }
                    
                        @Override
                        public void fromBytes(ByteBuf buf) {
                            text = ByteBufUtils.readUTF8String(buf); // this class is very useful in general for writing more complex objects
                        }
                    
                        @Override
                        public void toBytes(ByteBuf buf) {
                            ByteBufUtils.writeUTF8String(buf, text);
                        }
                    
                        public static class Handler implements IMessageHandler <paquethandler, imessage="">{
                    
                            @Override
                            public IMessage onMessage(PaquetHandler message, MessageContext ctx) {
                    
                            if(message.text == "p"){
                            System.out.println(String.format("Received %s from %s", message.text, ctx.getServerHandler().playerEntity.getDisplayName()));
                            }
                                return null; // no response in this case
                            }
                        }
                    }
                    
                    

                    mais si je mets lui oui:

                    
                    package com.harrypotter.sosoh.proxy;
                    
                    import io.netty.buffer.ByteBuf;
                    import cpw.mods.fml.common.network.ByteBufUtils;
                    import cpw.mods.fml.common.network.simpleimpl.IMessage;
                    import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
                    import cpw.mods.fml.common.network.simpleimpl.MessageContext;
                    
                    public class PaquetHandler implements IMessage {
                    
                        private String text;
                    
                        public PaquetHandler() { }
                    
                        public PaquetHandler(String text) {
                            this.text = text;
                        }
                    
                        @Override
                        public void fromBytes(ByteBuf buf) {
                            text = ByteBufUtils.readUTF8String(buf); // this class is very useful in general for writing more complex objects
                        }
                    
                        @Override
                        public void toBytes(ByteBuf buf) {
                            ByteBufUtils.writeUTF8String(buf, text);
                        }
                    
                        public static class Handler implements IMessageHandler <paquethandler, imessage="">{
                    
                            @Override
                            public IMessage onMessage(PaquetHandler message, MessageContext ctx) {
                    
                            System.out.println(String.format("Received %s from %s", message.text, ctx.getServerHandler().playerEntity.getDisplayName()));
                                return null; // no response in this case
                            }
                        }
                    }
                    
                    

                    le code pour send le packet:

                    
                    protected void actionPerformed(GuiButton guiButton)
                    
                       {
                           if(guiButton.id == 0)
                           {
                            ModHarryPotter.network.sendToServer(new PaquetHandler("p"));
                           }
                       }
                    
                    ```</paquethandler,></paquethandler,>

                    Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

                    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

                      Pour les String utilise equals plutôt que ==
                      message.text.equals(“p”)

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

                        Ok merci !

                        Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

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

                          Bonjour j’ai suivi ton tuto sur les packets tout est operationnelle (super tuto appart que personne a demandé d’exemple concret ^^)

                          Mais je ne voie pas quelle méthode rajouter dans la partie implémentation de l’handler pour pouvoir téléporter un joueur à une position x, y, z défini

                          Merci d’avance

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

                            GG quand j’aurais le temps je vais venir le grignoté tranquillement ! j’ai trop de retard en ce moment j’ai du refaire mon mod 3 fois d’affilé " une corde svp" !!

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

                              @‘Antoine_’:

                              Bonjour j’ai suivi ton tuto sur les packets tout est operationnelle (super tuto appart que personne a demandé d’exemple concret ^^)

                              Mais je ne voie pas quelle méthode rajouter dans la partie implémentation de l’handler pour pouvoir téléporter un joueur à une position x, y, z défini

                              Merci d’avance

                              A mon avis, tu n’as pas besoin de paquet pour téléporter un joueur.
                              Je pense que le système de paquet est déjà implémenté de base pour cette action.
                              Tu dois avoir une méthode coté serveur pour le faire. Cette méthode envoie d’elle même les paquets qui vont bien pour que le client reste synchronisé.

                              Si tu veux TP un joueur a partir d’un client, dans ce cas, il faut envoyer un paquet qui contient toutes les informations nécessaire pour que le serveur TP le joueur avec cette même méthode.

                              –------------------------------------------------------------------------------------
                              Si tu trouves mon intervention pertinente, n'hésite pas a m…

                              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

                                Sinon tu peux faire un player.setPositionAndUpdate

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

                                  J’avais pensais à çà aussi robin mais j’ai une erreur ….

                                  
                                  public class Packetteleport implements IMessage
                                  {
                                  
                                     private static String text;
                                  
                                     public Packetteleport () { }
                                  
                                     public Packetteleport (String text) {
                                         this.text = text;
                                     }
                                  
                                     @Override
                                     public void fromBytes(ByteBuf buf)
                                     {
                                         text = ByteBufUtils.readUTF8String(buf);
                                     }
                                  
                                     @Override
                                     public void toBytes(ByteBuf buf) {
                                         ByteBufUtils.writeUTF8String(buf, text);
                                     }
                                  
                                     public static class Handler implements IMessageHandler <packetteleport ,="" imessage="">{
                                  @Override
                                  public IMessage onMessage(Packetteleport message, MessageContext ctx)
                                  {
                                  switch(text)
                                  {
                                  case "gui1":
                                     System.out.println("Bonjour monsieur !");
                                    player.setPositionAndUpdate(-22, 37, -694);
                                     break;
                                  case "gui2":
                                     System.out.println("Bonsoir monsieur !");
                                     break;
                                  }
                                  return null;
                                  }
                                     }
                                  }
                                  

                                  J’ai une erreur sur le player.setPositionAndUpdate(-22, 37, -694);</packetteleport>

                                  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

                                    Normal, il faut récupérer l’instance du joueur x)
                                    Remplace player par ctx.getServerHandler().playerEntity

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

                                      Oui je sais qu’il faut récupérer l’instance j’ai essayer plein de chose, mais je n’est rien trouvé de concluant mais tu viens de me sauver la vie .

                                      Merci beaucoup

                                      ROBIN IS GOD!!!

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

                                        Salut je ne trouves pas comment faire des packets avec ma List <string>voila ma classe de packet:

                                        ​public class PacketSpellsList implements IMessage
                                        
                                        {
                                        
                                        private static List <string>spellsList = new ArrayList<string>();
                                        
                                        public PacketSpellsList()
                                        {
                                        
                                        }
                                        
                                        public PacketSpellsList(List <string>spellsList)
                                        {
                                        this.spellsList = spellsList;
                                        }
                                        
                                        @Override
                                        public void fromBytes(ByteBuf buf) 
                                        {
                                        
                                        }
                                        
                                        @Override
                                        public void toBytes(ByteBuf buf) 
                                        {
                                        
                                        }
                                        public static class Handler implements IMessageHandler <packetmana, imessage="">{
                                        
                                        @Override
                                        public IMessage onMessage(PacketMana message, MessageContext ctx) 
                                        {
                                        EntityPlayerMP player = ctx.getServerHandler().playerEntity;
                                        ExtendedEntityProps props = ExtendedEntityProps.get(player);
                                        props.spellsList = spellsList;
                                        return null;
                                        }
                                        
                                        }
                                        }
                                        ```</packetmana,></string></string></string></string>

                                        Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

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

                                          @‘sosoh’:

                                          Salut je ne trouves pas comment faire des packets avec ma List <string>voila ma classe de packet:

                                          public class PacketSpellsList implements IMessage
                                          
                                          {
                                          
                                          private static List <string>spellsList = new ArrayList<string>();
                                          
                                          public PacketSpellsList()
                                          {
                                          
                                          }
                                          
                                          public PacketSpellsList(List <string>spellsList)
                                          {
                                          this.spellsList = spellsList;
                                          }
                                          
                                          @Override
                                          public void fromBytes(ByteBuf buf) 
                                          {
                                          
                                          }
                                          
                                          @Override
                                          public void toBytes(ByteBuf buf) 
                                          {
                                          
                                          }
                                          public static class Handler implements IMessageHandler <packetmana, imessage="">{
                                          
                                          @Override
                                          public IMessage onMessage(PacketMana message, MessageContext ctx) 
                                          {
                                          EntityPlayerMP player = ctx.getServerHandler().playerEntity;
                                          ExtendedEntityProps props = ExtendedEntityProps.get(player);
                                          props.spellsList = spellsList;
                                          return null;
                                          }
                                          
                                          }
                                          }
                                          ```</packetmana,></string></string></string></string>
                                          

                                          Tutoriel sur les paquets

                                          Site web contenant mes scripts : http://SCAREXgaming.github.io

                                          Pas de demandes de support par MP ni par skype SVP.
                                          Je n'accepte sur skype que l…

                                          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

                                            En effet je l’ai expliqué dans le tutoriel vidéo.
                                            toBytes :
                                            Tu écrit la taille de la liste
                                            Avec une boucle for tu initialise la liste.
                                            fromBytes :
                                            Tu lis la taille de la liste
                                            Avec une boucle for de 0 au nombre lu juste avant, tu ajoute à la liste ce que tu lis.

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB