• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu [+/- Résolu] Transfert du contenu d'une variable serveur vers client

    1.7.x
    1.7.10
    6
    10
    3017
    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.
    • JustPingo
      JustPingo dernière édition par

      Salut !

      J’aimerais qu’à la connexion au serveur, le serveur envoie le contenue d’une variable vers le client. Cependant, je n’ai aucune idée de comment gérer les paquets de cette manière avec Forge.

      Pouvez-vous m’éclairer ? Merci d’avance.


      Über Networking Antennas

      1 réponse Dernière réponse Répondre Citer 0
      • Gugu
        Gugu dernière édition par

        Tu peux utiliser l’event  [size=smallEntityJoinWorldEvent
        ]
        Après, il suffit d’envoyer un packet

        "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
        ― Jordan B. Peterson

        1 réponse Dernière réponse Répondre Citer 0
        • JustPingo
          JustPingo dernière édition par

          Oui, c’était la question du Packet qui me posait problème, mais je n’avais pas vu qu’il y avait ce tuto dans tutoriels des membres.

          Merci quand même ^^


          Über Networking Antennas

          1 réponse Dernière réponse Répondre Citer 0
          • JustPingo
            JustPingo dernière édition par

            En fait c’est pas du tout résolu.

            Je souhaite transférer une liste d’objets.
            J’ai pour cela procédé ainsi :

            package pingo.una.common;
            
            import io.netty.buffer.ByteBuf;
            
            import java.io.ByteArrayInputStream;
            import java.io.ByteArrayOutputStream;
            import java.io.ObjectInputStream;
            import java.io.ObjectOutputStream;
            import java.util.List;
            
            import net.minecraft.client.Minecraft;
            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 TransferSatellites implements IMessage {
            
            public List <satellite>satellites;
            
                public TransferSatellites() { }
            
                public TransferSatellites(List <satellite>sat) {
                    this.satellites = sat;
                }
            
            @SuppressWarnings("unchecked")
            @Override
            public void fromBytes(ByteBuf buf) {
            String serialized = ByteBufUtils.readUTF8String(buf);
            try {
                byte b[] = serialized.getBytes(); 
                ByteArrayInputStream bi = new ByteArrayInputStream(b);
                ObjectInputStream si = new ObjectInputStream(bi);
                this.satellites = (List<satellite>) si.readObject();
            } catch (Exception e) {
            System.out.println(e);
            }
            }
            
            @Override
            public void toBytes(ByteBuf buf) {
            String serialized = "";
            try {
               ByteArrayOutputStream bo = new ByteArrayOutputStream();
               ObjectOutputStream so = new ObjectOutputStream(bo);
               so.writeObject(this.satellites);
               so.flush();
               serialized = bo.toString();
            } catch (Exception e) {
            
            } 
            ByteBufUtils.writeUTF8String(buf, serialized);
            }
            
            public static class Handler implements IMessageHandler <transfersatellites, imessage="">{
            
            @Override
            public IMessage onMessage(TransferSatellites message, MessageContext ctx) {
            System.out.println("Received satellites " + Minecraft.getMinecraft().theWorld.isRemote);
            UberNetworkingAntennas.satellites = message.satellites;
            System.out.println(UberNetworkingAntennas.satellites == null);
            return null;
            }
            
                }
            
            }
            
            

            Cependant, à l’envoi les données partent, elles arrivent, mais il n’arrive pas à dé-sérialiser l’objet :

            java.io.InvalidClassException: java.util.ArrayList; local class incompatible: stream classdesc serialVersionUID = 8664875232659988799, local class serialVersionUID = 8683452581122892189
            
            

            Savez-vous pourquoi ?

            Merci d’avance !</transfersatellites,></satellite></satellite></satellite>


            Über Networking Antennas

            1 réponse Dernière réponse Répondre Citer 0
            • jglrxavpok
              jglrxavpok Modérateurs dernière édition par

              Va falloir que tu écrives la liste élément par élément. La sérialisation ne passera pas.

              Par exemple, écrit un int avec le nombre d’éléments puis écrit chacun des éléments à la suite.

              Modérateur sur MFF. 
              Mon Github: http://github.com/jglrxavpok
              Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

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

                Ta classe Satellite contient quoi ? Car sinon tu pourrais passer par un NBT.
                C’est ce qu’on a fait avec Kévin pour le projecteur de Nanotech :
                https://github.com/FFMT/nanotech_mod/blob/nanotechmod3/src/fr/mcnanotech/kevin_68/nanotechmod/core/network/packets/PacketSpotLightKey.java
                https://github.com/FFMT/nanotech_mod/blob/nanotechmod3/src/fr/mcnanotech/kevin_68/nanotechmod/core/utils/SpotLightEntry.java

                1 réponse Dernière réponse Répondre Citer 0
                • JustPingo
                  JustPingo dernière édition par

                  Ma classe Satellite contient d’autres classes contenant d’autres classes. Donc impossible.

                  Mais de toute façon, j’ai trouvé une solution plus légère et qui ne passe pas par les packets.

                  Merci quand même ^^


                  Über Networking Antennas

                  1 réponse Dernière réponse Répondre Citer 0
                  • mindany2
                    mindany2 dernière édition par

                    Et quelle est-elle, je ne m’y connais pas beaucoup (et je ne dois pas être le seul) et je sens que ce genre de problème peu arriver ^^

                    ^^

                    1 réponse Dernière réponse Répondre Citer 0
                    • JustPingo
                      JustPingo dernière édition par

                      Ça n’a rien à voir, j’ai complètement revu la gestion de stockage des satellites. Rien d’utile pour quelqu’un d’autre.

                      Envoyé de mon iPhone en utilisant Tapatalk


                      Über Networking Antennas

                      1 réponse Dernière réponse Répondre Citer 0
                      • T
                        toss dernière édition par

                        Coucou, encore une fois je vais rediriger vers mon github ^^

                        - Le repo: 
                        https://github.com/toss-dev/Magic_Crusade_Mod

                        Bon alors, l’envoie de données client / server c’est compliqué, mais chez forge (desfois, très rarement), ils sont gentils. Ils ont filé des fonctions / objets proposé pour faciliter l’utilisation des packets

                        fr.toss.common.packet balades toi ici pour la création et l’enregistrement des packets

                        Balades toi un peu n’importe où ou pour voir leur utilisation concrète,  genre dans fr.toss.client.gui j’envoie pas mal de données au serveur

                        (Si tu piges pas un truc dis le moi, je t’ai rien vraiment expliqué là en faite :p)

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

                        MINECRAFT FORGE FRANCE © 2018

                        Powered by NodeBB