MFF

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

    Système de nom et prénom à la place du pseudo

    Planifier Épinglé Verrouillé Déplacé Résolu 1.8.x
    1.8
    155 Messages 8 Publieurs 32.8k 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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

      Je viens de faire quelque vérification, PlayerEvent.NameFormat est un event commun (client et serveur) donc ce que tu as fait actuellement ne risque pas de fonctionner.

      Il faudrait plutôt :

      • garder dans une variable client le pseudo changé et l’envoyer au serveur lors de la connexion (voir simplement proposer le changement de pseudo uniquement si on est sur le serveur et l’envoyer directement).
      • sauvegarder côté serveur le pseudo dans une map de joueur + l’enregistrer dans le monde ou enregistrer directement dans le nbt du joueur (pas besoin de map alors)
      • envoyer également au client son pseudo custom lors de la connexion.
      1 réponse Dernière réponse Répondre Citer 1
      • GabsG Hors-ligne
        Gabs
        dernière édition par

        @‘robin4002’:

        Je viens de faire quelque vérification, PlayerEvent.NameFormat est un event commun (client et serveur) donc ce que tu as fait actuellement ne risque pas de fonctionner.

        Il faudrait plutôt :

        • garder dans une variable client le pseudo changé et l’envoyer au serveur lors de la connexion (voir simplement proposer le changement de pseudo uniquement si on est sur le serveur et l’envoyer directement).
        • sauvegarder côté serveur le pseudo dans une map de joueur + l’enregistrer dans le monde ou enregistrer directement dans le nbt du joueur (pas besoin de map alors)
        • envoyer également au client son pseudo custom lors de la connexion.

        Je vais faire comme tu as dis ça a l’air plus simple. “(voir simplement proposer le changement de pseudo uniquement si on est sur le serveur et l’envoyer directement)”
        Donc j’ouvre mon gui quand je me connecte.
        Une fois ouvert je choisis mon nom puis prénom, je valide…
        J’envois donc un packet au serveur contenant deux string, L’UUID et le nom et le prénom espacé d’un tiré du 8 (Nom + “_” + Prénom)
        Dans ce packet j’ajoute tout ça dans une hashmap qui se situe dans le ServerProxy.
        L’event NameFormat récupére donc le nom et prénom du joueur via la hashmap
        et j’ai pas fais le reste…

        Je crash au moment de validé mon nom prénom. (au moment ou j’envois ça au serveur avec le packet)

        Je vous passe mon gui et mon packet:

        GUI:

        
        package com.CSC.net.GUI;
        
        import java.io.IOException;
        
        import com.CSC.net.Main;
        import com.CSC.net.packet.PacketNameServer;
        import com.CSC.net.proxy.ServerProxy;
        
        import net.minecraft.client.Minecraft;
        import net.minecraft.client.gui.GuiButton;
        import net.minecraft.client.gui.GuiScreen;
        import net.minecraft.client.gui.GuiSelectWorld;
        import net.minecraft.client.gui.GuiTextField;
        import net.minecraft.util.EnumChatFormatting;
        
        public class GuiJoinServer extends GuiScreen
        {
        private static boolean erreur;
        
        public static boolean b;
        
        private int valider;
        
        private int nom;
        
        private int prenom;
        
        public static GuiTextField text;
        
        public static GuiTextField text2;
        
        public GuiJoinServer() {
        
        }
        
        @Override
        public void initGui() {
        
        valider = 0;
        
        nom = 1;
        
        prenom = 2;
        
        text = new GuiTextField(nom, fontRendererObj, width / 2, 130, 64,
        20);
        
        text2 = new GuiTextField(prenom, fontRendererObj, width / 2, 100, 64,
        20);
        
        text.setFocused(false);
        
        text2.setFocused(true);
        
        text.setMaxStringLength(20);
        
        text2.setMaxStringLength(20);
        
        this.buttonList.add(new GuiButton(valider, width / 2 - 123, 200, 40,
        20, "Valider"));
        
        super.initGui();
        }
        
        @Override
        public void mouseClicked (int i , int j, int k) { 
        text.mouseClicked (i, j, k); 
        text2.mouseClicked (i, j, k); 
        try {
        super.mouseClicked (i, j, k);
        } catch (IOException e) {
        e.printStackTrace();
        } 
        } 
        
        @Override
        protected void keyTyped(char typedChar, int keyCode) throws IOException {
        
        text.textboxKeyTyped(typedChar, keyCode);
        text2.textboxKeyTyped(typedChar, keyCode);
        super.keyTyped(typedChar, keyCode);
        }
        
        @Override
        protected void actionPerformed(GuiButton button) throws IOException {
        
        switch (button.id) {
        case 0:
        if (!text.getText().equals("") && text.getText().length() > 3
        && !text2.getText().equals("")
        && text2.getText().length() > 3) {
        System.out.println(b);
        b = false;
        ServerProxy.name = text2.getText() + "_" + text.getText();
        Main.network.sendToServer(new PacketNameServer(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText() + "_" + text.getText()));
        System.out.println(ServerProxy.name);
        erreur = false;
        mc.thePlayer.closeScreen();
        }
        // else if(text.getText().equals("72") && !text2.getText().equals("")
        // && text2.getText().length() > 3)
        // {
        // System.out.println(b);
        // b = false;
        // ServerProxy.name = text2.getText();
        // Main.network.sendToServer(new PacketNameServer(Minecraft.getMinecraft().getSession().getPlayerID(), ServerProxy.name));
        // System.out.println(ServerProxy.name);
        // erreur = false;
        // mc.thePlayer.closeScreen();
        // }
        // else {
        // erreur = true;
        // }
        break;
        default:
        erreur = false;
        break;
        }
        
        super.actionPerformed(button);
        }
        
        @Override
        public void updateScreen() {
        super.updateScreen();
        }
        
        public void drawScreen(int mouseX, int mouseY, float partialTick) {
        
        this.drawDefaultBackground();
        
        text.drawTextBox();
        text2.drawTextBox();
        
        this.drawString(this.fontRendererObj, EnumChatFormatting.GRAY +"Nom", width / 2 - 80, 135, 0);
        
        this.drawString(this.fontRendererObj, EnumChatFormatting.GRAY + "Prénom", width / 2 - 80, 105, 0);
        
        super.drawScreen(mouseX, mouseY, partialTick);
        
        if (erreur) {
        this.drawString(fontRendererObj,
        "§cVotre nom et/ou prénom est/sont vide ou trop court !",
        this.width / 2 - 110, this.height / 2 - 50, 0);
        }
        }
        
        @Override
        public void onGuiClosed() {
        
        }
        }
        
        

        Packet:

        
        package com.CSC.net.packet;
        
        import com.CSC.net.proxy.ServerProxy;
        
        import io.netty.buffer.ByteBuf;
        import net.minecraftforge.fml.common.network.ByteBufUtils;
        import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
        import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
        import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
        import net.minecraftforge.fml.relauncher.Side;
        import net.minecraftforge.fml.relauncher.SideOnly;
        
        public class PacketNameServer implements IMessage{
        
        private String string1;
        
        private String string2;
        
        public PacketNameServer(String s1, String s2)
        {
        this.string1 = s1;
        this.string2 = s2;
        }
        
        public PacketNameServer()
        {
        }
        
        @Override
        public void fromBytes(ByteBuf buf) {
        this.string1 = ByteBufUtils.readUTF8String(buf);
        this.string2 = ByteBufUtils.readUTF8String(buf);
        }
        
        @Override
        public void toBytes(ByteBuf buf) {
        ByteBufUtils.writeUTF8String(buf, string1);
        ByteBufUtils.writeUTF8String(buf, string2);
        }
        
        public static class Handler implements IMessageHandler <packetnameserver, imessage="">{
        @SideOnly(Side.SERVER)
        @Override
           public IMessage onMessage(PacketNameServer message, MessageContext ctx) 
           {
        
        ServerProxy.map.put(message.string1, message.string2);
        
        return null;
        
           }
        }
        
        }
        
        

        Crash:

        
        [20:25:39] [Netty Server IO #1/ERROR] [FML]: There was a critical exception handling a packet on channel csc:
        java.lang.NoSuchMethodError: com.CSC.net.packet.PacketNameServer$Handler.onMessage(Lcom/CSC/net/packet/PacketNameServer;Lnet/minecraftforge/fml/common/network/simpleimpl/MessageContext;)Lnet/minecraftforge/fml/common/network/simpleimpl/IMessage;
        at com.CSC.net.packet.PacketNameServer$Handler.onMessage(PacketNameServer.java:1) ~[PacketNameServer$Handler.class:?]
        at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:37) ~[SimpleChannelHandlerWrapper.class:?]
        at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:17) ~[SimpleChannelHandlerWrapper.class:?]
        at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:103) ~[SimpleChannelInboundHandler.class:4.0.15.Final]
        at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:338) ~[DefaultChannelHandlerContext.class:4.0.15.Final]
        at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:324) ~[DefaultChannelHandlerContext.class:4.0.15.Final]
        at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[MessageToMessageDecoder.class:4.0.15.Final]
        at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:4.0.15.Final]
        at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:338) ~[DefaultChannelHandlerContext.class:4.0.15.Final]
        at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:324) ~[DefaultChannelHandlerContext.class:4.0.15.Final]
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) ~[DefaultChannelPipeline.class:4.0.15.Final]
        at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) ~[EmbeddedChannel.class:4.0.15.Final]
        at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:88) [FMLProxyPacket.class:?]
        at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:144) [NetworkManager.class:?]
        at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:469) [NetworkManager.class:?]
        at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:103) [SimpleChannelInboundHandler.class:4.0.15.Final]
        at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:338) [DefaultChannelHandlerContext.class:4.0.15.Final]
        at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:324) [DefaultChannelHandlerContext.class:4.0.15.Final]
        at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleServerSideCustomPacket(NetworkDispatcher.java:398) [NetworkDispatcher.class:?]
        at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:226) [NetworkDispatcher.class:?]
        at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:49) [NetworkDispatcher.class:?]
        at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:103) [SimpleChannelInboundHandler.class:4.0.15.Final]
        at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:338) [DefaultChannelHandlerContext.class:4.0.15.Final]
        at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:324) [DefaultChannelHandlerContext.class:4.0.15.Final]
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:4.0.15.Final]
        at io.netty.channel.local.LocalChannel.finishPeerRead(LocalChannel.java:312) [LocalChannel.class:4.0.15.Final]
        at io.netty.channel.local.LocalChannel.access$400(LocalChannel.java:44) [LocalChannel.class:4.0.15.Final]
        at io.netty.channel.local.LocalChannel$6.run(LocalChannel.java:298) [LocalChannel$6.class:4.0.15.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:354) [SingleThreadEventExecutor.class:4.0.15.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:353) [NioEventLoop.class:4.0.15.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101) [SingleThreadEventExecutor$2.class:4.0.15.Final]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]
        [20:25:39] [Server thread/INFO]: floriangabet lost connection: TextComponent{text='A fatal error has occured, this connection is terminated', siblings=[], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}
        [20:25:39] [Server thread/INFO]: floriangabet a quitté la partie
        [20:25:39] [Server thread/INFO]: Stopping singleplayer server as player logged out
        [20:25:39] [Server thread/INFO]: Stopping server
        [20:25:39] [Server thread/INFO]: Saving players
        [20:25:39] [Server thread/INFO]: Saving worlds
        [20:25:39] [Server thread/INFO]: Saving chunks for level 'New World'/Overworld
        [20:25:39] [Server thread/INFO]: Saving chunks for level 'New World'/Nether
        [20:25:39] [Server thread/INFO]: Saving chunks for level 'New World'/The End
        [20:25:40] [Server thread/INFO] [FML]: Unloading dimension 0
        [20:25:40] [Server thread/INFO] [FML]: Unloading dimension -1
        [20:25:40] [Server thread/INFO] [FML]: Unloading dimension 1
        [20:25:40] [Server thread/INFO] [FML]: Applying holder lookups
        [20:25:40] [Server thread/INFO] [FML]: Holder lookups applied
        
        

        Merci :)</packetnameserver,>

        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

          Retires le @SideOnly(Side.SERVER)

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

            @‘robin4002’:

            Retires le @SideOnly(Side.SERVER)

            Ah ouais merci 🙂

            Donc je suis bon je crois il me manque plus que a save ça dans le worldsaveddata.

            Tu peux me donner un peu plus d’indice pour la worldsaved s’il te plait ?

            En tout cas 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

              https://www.minecraftforgefrance.fr/showthread.php?tid=2444

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

                @‘robin4002’:

                https://www.minecraftforgefrance.fr/showthread.php?tid=2444

                Merci,
                C’est bien comme ça:

                
                package com.CSC.net.save;
                
                import java.util.Iterator;
                import java.util.Map.Entry;
                
                import com.CSC.net.Events.Events;
                import com.CSC.net.Events.Events.Position;
                import com.CSC.net.proxy.ServerProxy;
                
                import net.minecraft.nbt.NBTTagCompound;
                import net.minecraft.nbt.NBTTagList;
                import net.minecraft.world.World;
                import net.minecraft.world.WorldSavedData;
                import net.minecraft.world.storage.MapStorage;
                import net.minecraftforge.common.DimensionManager;
                
                public class NameSave extends WorldSavedData{
                
                public static NameSave instance;
                
                /**
                /* Ce constructeur est obligatoire
                */
                
                public static NameSave load(World w) {
                if(DimensionManager.getWorlds().length < 1) return null;
                MapStorage storage = DimensionManager.getWorlds()[0].getMapStorage(); //On récupère la mapStorage de la dimension
                final String KEY = Events.Key; // Si vous avez choisis de faire une fonction static String. Quoiqu'il en soit, la variable KEY que nous utiliserons ici représente votre clé. Si vous utilisez un attribut static, utilisez le directement.
                NameSave result = (NameSave)storage.loadData(NameSave.class, KEY);//On charge nos données
                if (result == null) { //Si nos données n'existe pas, …
                result = new NameSave(KEY);// Alors on les crée ...
                storage.setData(KEY, result);// Et on les ajoutes à la mapStorage.
                }
                
                return result; //On retourne notre objet qui représente les données a sauvegarder
                }
                
                public NameSave(String key) {
                super(key);
                instance = this;
                
                }
                
                @Override
                public void readFromNBT(NBTTagCompound compound) {
                NBTTagList keyList = (NBTTagList)compound.getTag("keyList");
                for(int i = 0; i < keyList.tagCount(); i++) {
                NBTTagCompound keyTag = keyList.getCompoundTagAt(i);
                ServerProxy.map.put(keyTag.getString("uuid"), keyTag.getString("name"));
                }
                }
                @Override
                public void writeToNBT(NBTTagCompound compound) {
                NBTTagList keyList = new NBTTagList();
                Iterator<entry<string, string="">> iterator = ServerProxy.map.entrySet().iterator();
                while(iterator.hasNext()) {
                NBTTagCompound keyTag = new NBTTagCompound();
                Entry <string, string="">entry = iterator.next();
                keyTag.setString("uuid", entry.getKey().toString());
                keyTag.setString("name", entry.getKey().toString());
                keyList.appendTag(keyTag);
                }
                compound.setTag("keyList", keyList);
                }
                
                }
                
                

                EDIT:

                Le markdirty génère un crash.

                Packet:

                
                package com.CSC.net.packet;
                
                import com.CSC.net.proxy.ServerProxy;
                import com.CSC.net.save.NameSave;
                
                import io.netty.buffer.ByteBuf;
                import net.minecraft.client.Minecraft;
                import net.minecraftforge.fml.common.network.ByteBufUtils;
                import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
                import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
                import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
                import net.minecraftforge.fml.relauncher.Side;
                import net.minecraftforge.fml.relauncher.SideOnly;
                
                public class PacketNameServer implements IMessage{
                
                private String string1;
                
                private int i;
                
                private String string2;
                
                public PacketNameServer(String s1, String s2, Integer in)
                {
                this.string1 = s1;
                this.string2 = s2;
                this.i = in;
                }
                
                public PacketNameServer()
                {
                }
                
                @Override
                public void fromBytes(ByteBuf buf) {
                this.string1 = ByteBufUtils.readUTF8String(buf);
                this.string2 = ByteBufUtils.readUTF8String(buf);
                this.i = buf.readInt();
                }
                
                @Override
                public void toBytes(ByteBuf buf) {
                ByteBufUtils.writeUTF8String(buf, string1);
                ByteBufUtils.writeUTF8String(buf, string2);
                buf.writeInt(i);
                }
                
                public static class Handler implements IMessageHandler <packetnameserver, imessage="">{
                @Override
                   public IMessage onMessage(PacketNameServer message, MessageContext ctx) 
                   {
                switch(message.i)
                {
                case 1:
                ServerProxy.map.put(message.string1, message.string2);
                NameSave.instance.markDirty(); //
                break;
                case 2:
                ServerProxy.map.remove(Minecraft.getMinecraft().getSession().getPlayerID());
                NameSave.instance.markDirty();//
                break;
                default:
                break;
                }
                
                return null;
                
                   }
                }
                
                }
                
                

                Crash:

                
                [22:14:03] [Netty Server IO #1/ERROR] [FML]: SimpleChannelHandlerWrapper exception
                java.lang.NullPointerException
                at com.CSC.net.packet.PacketNameServer$Handler.onMessage(PacketNameServer.java:58) ~[PacketNameServer$Handler.class:?]
                at com.CSC.net.packet.PacketNameServer$Handler.onMessage(PacketNameServer.java:1) ~[PacketNameServer$Handler.class:?]
                at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:37) ~[SimpleChannelHandlerWrapper.class:?]
                at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:17) ~[SimpleChannelHandlerWrapper.class:?]
                at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:103) ~[SimpleChannelInboundHandler.class:4.0.15.Final]
                at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:338) [DefaultChannelHandlerContext.class:4.0.15.Final]
                at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:324) [DefaultChannelHandlerContext.class:4.0.15.Final]
                at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:4.0.15.Final]
                at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:4.0.15.Final]
                at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:338) [DefaultChannelHandlerContext.class:4.0.15.Final]
                at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:324) [DefaultChannelHandlerContext.class:4.0.15.Final]
                at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:4.0.15.Final]
                at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:4.0.15.Final]
                at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:88) [FMLProxyPacket.class:?]
                at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:144) [NetworkManager.class:?]
                at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:469) [NetworkManager.class:?]
                at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:103) [SimpleChannelInboundHandler.class:4.0.15.Final]
                at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:338) [DefaultChannelHandlerContext.class:4.0.15.Final]
                at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:324) [DefaultChannelHandlerContext.class:4.0.15.Final]
                at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleServerSideCustomPacket(NetworkDispatcher.java:398) [NetworkDispatcher.class:?]
                at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:226) [NetworkDispatcher.class:?]
                at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:49) [NetworkDispatcher.class:?]
                at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:103) [SimpleChannelInboundHandler.class:4.0.15.Final]
                at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:338) [DefaultChannelHandlerContext.class:4.0.15.Final]
                at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:324) [DefaultChannelHandlerContext.class:4.0.15.Final]
                at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:4.0.15.Final]
                at io.netty.channel.local.LocalChannel.finishPeerRead(LocalChannel.java:312) [LocalChannel.class:4.0.15.Final]
                at io.netty.channel.local.LocalChannel.access$400(LocalChannel.java:44) [LocalChannel.class:4.0.15.Final]
                at io.netty.channel.local.LocalChannel$6.run(LocalChannel.java:298) [LocalChannel$6.class:4.0.15.Final]
                at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:354) [SingleThreadEventExecutor.class:4.0.15.Final]
                at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:353) [NioEventLoop.class:4.0.15.Final]
                at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101) [SingleThreadEventExecutor$2.class:4.0.15.Final]
                at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]
                
                

                Register NameSave:

                
                if(NameSave.instance != null)
                        {
                        NameSave.load(event.getServer().getEntityWorld());
                        }
                

                Mon gui:

                
                package com.CSC.net.GUI;
                
                import java.io.IOException;
                
                import com.CSC.net.Main;
                import com.CSC.net.packet.PacketNameServer;
                import com.CSC.net.proxy.ServerProxy;
                import com.CSC.net.save.NameSave;
                
                import net.minecraft.client.Minecraft;
                import net.minecraft.client.gui.GuiButton;
                import net.minecraft.client.gui.GuiScreen;
                import net.minecraft.client.gui.GuiSelectWorld;
                import net.minecraft.client.gui.GuiTextField;
                import net.minecraft.util.EnumChatFormatting;
                
                public class GuiJoinServer extends GuiScreen
                {
                private static boolean erreur;
                
                public static boolean b;
                
                private int valider;
                
                private int nom;
                
                private int prenom;
                
                public static GuiTextField text;
                
                public static GuiTextField text2;
                
                public GuiJoinServer() {
                
                }
                
                @Override
                public void initGui() {
                
                valider = 0;
                
                nom = 1;
                
                prenom = 2;
                
                text = new GuiTextField(nom, fontRendererObj, width / 2, 130, 64,
                20);
                
                text2 = new GuiTextField(prenom, fontRendererObj, width / 2, 100, 64,
                20);
                
                text.setFocused(false);
                
                text2.setFocused(true);
                
                text.setMaxStringLength(20);
                
                text2.setMaxStringLength(20);
                
                this.buttonList.add(new GuiButton(valider, width / 2 - 123, 200, 40,
                20, "Valider"));
                
                super.initGui();
                }
                
                @Override
                public void mouseClicked (int i , int j, int k) { 
                text.mouseClicked (i, j, k); 
                text2.mouseClicked (i, j, k); 
                try {
                super.mouseClicked (i, j, k);
                } catch (IOException e) {
                e.printStackTrace();
                } 
                } 
                
                @Override
                protected void keyTyped(char typedChar, int keyCode) throws IOException {
                
                text.textboxKeyTyped(typedChar, keyCode);
                text2.textboxKeyTyped(typedChar, keyCode);
                super.keyTyped(typedChar, keyCode);
                }
                
                @Override
                protected void actionPerformed(GuiButton button) throws IOException {
                
                switch (button.id) {
                case 0:
                if (!text.getText().equals("") && text.getText().length() > 3
                && !text2.getText().equals("")
                && text2.getText().length() > 3 && !ServerProxy.map.containsKey(Minecraft.getMinecraft().getSession().getPlayerID())) {
                System.out.println(b);
                b = false;
                ServerProxy.name = text2.getText() + "_" + text.getText();
                Main.network.sendToServer(new PacketNameServer(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText() + "_" + text.getText(), 1));
                System.out.println(ServerProxy.name);
                System.out.println(ServerProxy.map.get(Minecraft.getMinecraft().getSession().getPlayerID()));
                erreur = false;
                mc.thePlayer.closeScreen();
                }
                else if(!text.getText().equals("") && text.getText().length() > 3
                && !text2.getText().equals("")
                && text2.getText().length() > 3 && ServerProxy.map.containsKey(Minecraft.getMinecraft().getSession().getPlayerID())) {
                System.out.println(b);
                b = false;
                
                ServerProxy.name = text2.getText() + "_" + text.getText();
                Main.network.sendToServer(new PacketNameServer(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText() + "_" + text.getText(), 2));// 2 = remove / 1 = add
                Main.network.sendToServer(new PacketNameServer(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText() + "_" + text.getText(), 1));
                System.out.println(ServerProxy.name);
                System.out.println(ServerProxy.map.get(Minecraft.getMinecraft().getSession().getPlayerID()));
                erreur = false;
                mc.thePlayer.closeScreen();
                }
                else if(text.getText().equals("72") && !text2.getText().equals("")
                && text2.getText().length() > 3 && !ServerProxy.map.containsKey(Minecraft.getMinecraft().getSession().getPlayerID()))
                {
                System.out.println(b);
                b = false;
                ServerProxy.name = text2.getText();
                Main.network.sendToServer(new PacketNameServer(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText(), 1));
                System.out.println(ServerProxy.name);
                erreur = false;
                mc.thePlayer.closeScreen();
                }
                else if(text.getText().equals("72") && !text2.getText().equals("")
                && text2.getText().length() > 3 && ServerProxy.map.containsKey(Minecraft.getMinecraft().getSession().getPlayerID()))
                {
                System.out.println(b);
                b = false;
                ServerProxy.name = text2.getText();
                Main.network.sendToServer(new PacketNameServer(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText(), 2));
                Main.network.sendToServer(new PacketNameServer(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText(), 1));
                System.out.println(ServerProxy.name);
                erreur = false;
                mc.thePlayer.closeScreen();
                }
                else {
                erreur = true;
                }
                break;
                default:
                erreur = false;
                break;
                }
                
                super.actionPerformed(button);
                }
                
                @Override
                public void updateScreen() {
                super.updateScreen();
                }
                
                public void drawScreen(int mouseX, int mouseY, float partialTick) {
                
                this.drawDefaultBackground();
                
                text.drawTextBox();
                text2.drawTextBox();
                
                this.drawString(this.fontRendererObj, EnumChatFormatting.GRAY +"Nom", width / 2 - 80, 135, 0);
                
                this.drawString(this.fontRendererObj, EnumChatFormatting.GRAY + "Prénom", width / 2 - 80, 105, 0);
                
                super.drawScreen(mouseX, mouseY, partialTick);
                
                if (erreur) {
                this.drawString(fontRendererObj,
                "§cVotre nom et/ou prénom est/sont vide ou trop court !",
                this.width / 2 - 110, this.height / 2 - 50, 0);
                }
                }
                
                @Override
                public void onGuiClosed() {
                
                }
                }
                
                ```</packetnameserver,></string,></entry<string,>
                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

                  Ton instance n’est jamais initialisé.

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

                    @‘robin4002’:

                    Ton instance n’est jamais initialisé.

                    Pourtant elle est initialisé la:

                    
                    if(NameSave.instance != null)
                            {
                            NameSave.load(event.getServer().getEntityWorld());
                            }
                    

                    J’ai remplacer le != par == pour voir si ça régler mon problème, j’ai un autre crash mais maintenant quand je me connecte:

                    
                    [23:35:49] [Server thread/ERROR] [FML]: Fatal errors were detected during the transition from SERVER_ABOUT_TO_START to SERVER_STARTING. Loading cannot continue
                    [23:35:49] [Server thread/ERROR] [FML]: 
                    mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available
                    FML{8.0.37.1334} [Forge Mod Loader] (forgeSrc-1.8-11.14.1.1334.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available
                    Forge{11.14.1.1334} [Minecraft Forge] (forgeSrc-1.8-11.14.1.1334.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available
                    csc{1.0} [Cite Sous Controle] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Errored
                    [23:35:49] [Server thread/ERROR] [FML]: The following problems were captured during this phase
                    [23:35:49] [Server thread/ERROR] [FML]: Caught exception from csc
                    java.lang.ClassCastException: com.CSC.net.save.KeySave cannot be cast to com.CSC.net.save.NameSave
                    at com.CSC.net.save.NameSave.load(NameSave.java:31) ~[bin/:?]
                    at com.CSC.net.Main.onServerStarting(Main.java:186) ~[bin/:?]
                    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_45]
                    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_45]
                    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_45]
                    at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_45]
                    at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:518) ~[forgeSrc-1.8-11.14.1.1334.jar:?]
                    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_45]
                    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_45]
                    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_45]
                    at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_45]
                    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
                    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
                    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
                    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
                    at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
                    at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:208) ~[forgeSrc-1.8-11.14.1.1334.jar:?]
                    at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:187) ~[forgeSrc-1.8-11.14.1.1334.jar:?]
                    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_45]
                    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_45]
                    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_45]
                    at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_45]
                    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
                    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
                    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
                    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
                    at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
                    at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:118) [LoadController.class:?]
                    at net.minecraftforge.fml.common.Loader.serverStarting(Loader.java:738) [Loader.class:?]
                    at net.minecraftforge.fml.common.FMLCommonHandler.handleServerStarting(FMLCommonHandler.java:319) [FMLCommonHandler.class:?]
                    at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:132) [IntegratedServer.class:?]
                    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:500) [MinecraftServer.class:?]
                    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]
                    
                    

                    Ligne 186 main class:

                    
                            if(NameSave.instance == null)
                            {
                            NameSave.load(event.getServer().getEntityWorld());// ici
                            }
                    

                    Ligne 31 namesave

                    
                    public static NameSave load(World w) {
                    if(DimensionManager.getWorlds().length < 1) return null;
                    MapStorage storage = DimensionManager.getWorlds()[0].getMapStorage();
                    final String KEY = Events.Key;
                    NameSave result = (NameSave)storage.loadData(NameSave.class, KEY);// ICI
                    if (result == null) {
                    result = new NameSave(KEY);
                    storage.setData(KEY, result);
                    }
                    
                    return result;
                    }
                    
                    
                    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

                      storage.loadData(NameSave.class, KEY) renvoie visiblement un objet com.CSC.net.save.KeySave et non com.CSC.net.save.NameSave donc le cast échoue.

                      Tu peux envoyer les deux classes en question ?

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

                        @‘robin4002’:

                        storage.loadData(NameSave.class, KEY) renvoie visiblement un objet com.CSC.net.save.KeySave et non com.CSC.net.save.NameSave donc le cast échoue.

                        Tu peux envoyer les deux classes en question ?

                        oui tien:

                        
                        package com.CSC.net.save;
                        
                        import java.util.Iterator;
                        import java.util.UUID;
                        import java.util.Map.Entry;
                        
                        import javafx.geometry.Pos;
                        
                        import com.CSC.net.Events.Events;
                        import com.CSC.net.Events.Events.Position;
                        import com.CSC.net.properties.EnumRank;
                        import com.CSC.net.proxy.ServerProxy;
                        
                        import net.minecraft.nbt.NBTTagCompound;
                        import net.minecraft.nbt.NBTTagList;
                        import net.minecraft.world.World;
                        import net.minecraft.world.WorldSavedData;
                        import net.minecraft.world.storage.MapStorage;
                        import net.minecraftforge.common.DimensionManager;
                        
                        public class KeySave
                        extends WorldSavedData
                        {
                        
                        public static KeySave instance;
                        
                        /**
                        /* Ce constructeur est obligatoire
                        */
                        
                        public static KeySave load(World w) {
                        if(DimensionManager.getWorlds().length < 1) return null;
                        MapStorage storage = DimensionManager.getWorlds()[0].getMapStorage(); //On récupère la mapStorage de la dimension
                        final String KEY = Events.Key; // Si vous avez choisis de faire une fonction static String. Quoiqu'il en soit, la variable KEY que nous utiliserons ici représente votre clé. Si vous utilisez un attribut static, utilisez le directement.
                        KeySave result = (KeySave)storage.loadData(KeySave.class, KEY);//On charge nos données
                        if (result == null) { //Si nos données n'existe pas, …
                        result = new KeySave(KEY);// Alors on les crée ...
                        storage.setData(KEY, result);// Et on les ajoutes à la mapStorage.
                        }
                        
                        return result; //On retourne notre objet qui représente les données a sauvegarder
                        }
                        
                        public KeySave(String key) {
                        super(key);
                        instance = this;
                        
                        }
                        
                        @Override
                        public void readFromNBT(NBTTagCompound compound) {
                        NBTTagList keyList= (NBTTagList)compound.getTag("keyList");
                        for(int i = 0; i < keyList.tagCount(); i++) {
                        NBTTagCompound keyTag = keyList.getCompoundTagAt(i);
                        Events.doorsPositions.add(new Position(keyTag.getInteger("x"), keyTag.getInteger("y"), keyTag.getInteger("z"), keyTag.getInteger("dimension")));
                        }
                        }
                        @Override
                        public void writeToNBT(NBTTagCompound compound) {
                        NBTTagList keyList = new NBTTagList();
                        Iterator <position>iterator = Events.doorsPositions.iterator();
                        Position pos;
                        NBTTagCompound keyTag;
                        while(iterator.hasNext()) {
                        pos = iterator.next();
                        keyTag = new NBTTagCompound();
                        keyTag.setInteger("x", pos.getX());
                        keyTag.setInteger("y", pos.getY());
                        keyTag.setInteger("z", pos.getZ());
                        keyTag.setInteger("dimension", pos.dimensionId);
                        keyList.appendTag(keyTag);
                        }
                        compound.setTag("keyList", keyList);
                        }
                        }
                        
                        
                        
                        package com.CSC.net.save;
                        
                        import java.util.Iterator;
                        import java.util.Map.Entry;
                        
                        import com.CSC.net.Events.Events;
                        import com.CSC.net.Events.Events.Position;
                        import com.CSC.net.proxy.ServerProxy;
                        
                        import net.minecraft.nbt.NBTTagCompound;
                        import net.minecraft.nbt.NBTTagList;
                        import net.minecraft.world.World;
                        import net.minecraft.world.WorldSavedData;
                        import net.minecraft.world.storage.MapStorage;
                        import net.minecraftforge.common.DimensionManager;
                        
                        public class NameSave extends WorldSavedData{
                        
                        public static NameSave instance;
                        
                        /**
                        /* Ce constructeur est obligatoire
                        */
                        
                        public static NameSave load(World w) {
                        if(DimensionManager.getWorlds().length < 1) return null;
                        MapStorage storage = DimensionManager.getWorlds()[0].getMapStorage(); //On récupère la mapStorage de la dimension
                        final String KEY = Events.Key; // Si vous avez choisis de faire une fonction static String. Quoiqu'il en soit, la variable KEY que nous utiliserons ici représente votre clé. Si vous utilisez un attribut static, utilisez le directement.
                        NameSave result = (NameSave)storage.loadData(NameSave.class, KEY);//On charge nos données
                        if (result == null) { //Si nos données n'existe pas, …
                        result = new NameSave(KEY);// Alors on les crée ...
                        storage.setData(KEY, result);// Et on les ajoutes à la mapStorage.
                        }
                        
                        return result; //On retourne notre objet qui représente les données a sauvegarder
                        }
                        
                        public NameSave(String key) {
                        super(key);
                        instance = this;
                        
                        }
                        
                        @Override
                        public void readFromNBT(NBTTagCompound compound) {
                        NBTTagList keyList = (NBTTagList)compound.getTag("keyList");
                        for(int i = 0; i < keyList.tagCount(); i++) {
                        NBTTagCompound keyTag = keyList.getCompoundTagAt(i);
                        ServerProxy.map.put(keyTag.getString("uuid"), keyTag.getString("name"));
                        }
                        }
                        @Override
                        public void writeToNBT(NBTTagCompound compound) {
                        NBTTagList keyList = new NBTTagList();
                        Iterator<entry<string, string="">> iterator = ServerProxy.map.entrySet().iterator();
                        while(iterator.hasNext()) {
                        NBTTagCompound keyTag = new NBTTagCompound();
                        Entry <string, string="">entry = iterator.next();
                        keyTag.setString("uuid", entry.getKey().toString());
                        keyTag.setString("name", entry.getKey().toString());
                        keyList.appendTag(keyTag);
                        }
                        compound.setTag("keyList", keyList);
                        }
                        
                        }
                        
                        
                        
                          @EventHandler
                            public void onServerStarting(FMLServerStartingEvent event)
                             {
                                if(KeySave.instance == null)
                                {
                                KeySave.load(event.getServer().getEntityWorld());
                                }
                                if(NameSave.instance == null)
                                {
                                NameSave.load(event.getServer().getEntityWorld());
                                }
                        
                            }
                        
                        ```</string,></entry<string,></position>
                        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

                          Pourquoi avoir deux WorldSavedData ?
                          Tu peux tout mettre dans le même.

                          Et si en veux vraiment deux, il faut une clé différente.

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

                            @‘robin4002’:

                            Pourquoi avoir deux WorldSavedData ?
                            Tu peux tout mettre dans le même.

                            Et si en veux vraiment deux, il faut une clé différente.

                            Ahhhhh ok

                            Du coup j’ai regroupé tout dans une classe j’ai plus de crash donc ça ma l’air bon 😄

                            Merci ! j’essaye ça dès que je peux en multi et je te dis !

                            
                            package com.CSC.net.save;
                            
                            import java.util.Iterator;
                            import java.util.UUID;
                            import java.util.Map.Entry;
                            
                            import javafx.geometry.Pos;
                            
                            import com.CSC.net.Events.Events;
                            import com.CSC.net.Events.Events.Position;
                            import com.CSC.net.properties.EnumRank;
                            import com.CSC.net.proxy.ServerProxy;
                            
                            import net.minecraft.nbt.NBTTagCompound;
                            import net.minecraft.nbt.NBTTagList;
                            import net.minecraft.world.World;
                            import net.minecraft.world.WorldSavedData;
                            import net.minecraft.world.storage.MapStorage;
                            import net.minecraftforge.common.DimensionManager;
                            
                            public class WorldSaved
                            extends WorldSavedData
                            {
                            
                            public static WorldSaved instance;
                            
                            /**
                            /* Ce constructeur est obligatoire
                            */
                            
                            public static WorldSaved load(World w) {
                            if(DimensionManager.getWorlds().length < 1) return null;
                            {
                            MapStorage storage = DimensionManager.getWorlds()[0].getMapStorage(); //On récupère la mapStorage de la dimension
                            final String KEY = Events.Key; // Si vous avez choisis de faire une fonction static String. Quoiqu'il en soit, la variable KEY que nous utiliserons ici représente votre clé. Si vous utilisez un attribut static, utilisez le directement.
                            WorldSaved result = (WorldSaved)storage.loadData(WorldSaved.class, KEY);//On charge nos données
                            if (result == null) { //Si nos données n'existe pas, …
                            result = new WorldSaved(KEY);// Alors on les crée ...
                            storage.setData(KEY, result);// Et on les ajoutes à la mapStorage.
                            }
                            return result;
                            }
                            
                            }
                            
                            public WorldSaved(String key) {
                            super(key);
                            instance = this;
                            
                            }
                            
                            @Override
                            public void readFromNBT(NBTTagCompound compound) {
                            NBTTagList keyList= (NBTTagList)compound.getTag("keyList");
                            for(int i = 0; i < keyList.tagCount(); i++) {
                            NBTTagCompound keyTag = keyList.getCompoundTagAt(i);
                            Events.doorsPositions.add(new Position(keyTag.getInteger("x"), keyTag.getInteger("y"), keyTag.getInteger("z"), keyTag.getInteger("dimension")));
                            }
                            for(int i = 0; i < keyList.tagCount(); i++) {
                            NBTTagCompound keyTag = keyList.getCompoundTagAt(i);
                            ServerProxy.map.put(keyTag.getString("uuid"), keyTag.getString("name"));
                            }
                            }
                            
                            @Override
                            public void writeToNBT(NBTTagCompound compound) {
                            NBTTagList keyList = new NBTTagList();
                            Iterator <position>iterator = Events.doorsPositions.iterator();
                            Position pos;
                            NBTTagCompound keyTag = new NBTTagCompound();
                            while(iterator.hasNext()) {
                            pos = iterator.next();
                            keyTag.setInteger("x", pos.getX());
                            keyTag.setInteger("y", pos.getY());
                            keyTag.setInteger("z", pos.getZ());
                            keyTag.setInteger("dimension", pos.dimensionId);
                            keyList.appendTag(keyTag);
                            }
                            Iterator<entry<string, string="">> iterator2 = ServerProxy.map.entrySet().iterator();
                            while(iterator.hasNext()) {
                            Entry <string, string="">entry = iterator2.next();
                            keyTag.setString("uuid", entry.getKey().toString());
                            keyTag.setString("name", entry.getKey().toString());
                            keyList.appendTag(keyTag);
                            }
                            compound.setTag("keyList", keyList);
                            }
                            }
                            
                            

                            edit:

                            je viens de voir un truc quand je relance mon mc mon nom n’est pas sauvegarder normal?

                            Et aussi une fois que j’ai un nom et que je déco reco simplement mon nom est save mais je peux plus le changer normal?</string,></entry<string,></position>

                            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

                              1. non
                              2. ça dépend de comment ton code est fait
                              1 réponse Dernière réponse Répondre Citer 0
                              • GabsG Hors-ligne
                                Gabs
                                dernière édition par

                                Peux tu essayer de voir ou est du coup le soucis ?

                                Je te passe ma classe worldsaveddata mon gui mon packet et comment est enregistrer le worldsaved.

                                WorldSaved:

                                
                                package com.CSC.net.save;
                                
                                import java.util.Iterator;
                                import java.util.UUID;
                                import java.util.Map.Entry;
                                
                                import javafx.geometry.Pos;
                                
                                import com.CSC.net.Events.Events;
                                import com.CSC.net.Events.Events.Position;
                                import com.CSC.net.properties.EnumRank;
                                import com.CSC.net.proxy.ServerProxy;
                                
                                import net.minecraft.nbt.NBTTagCompound;
                                import net.minecraft.nbt.NBTTagList;
                                import net.minecraft.world.World;
                                import net.minecraft.world.WorldSavedData;
                                import net.minecraft.world.storage.MapStorage;
                                import net.minecraftforge.common.DimensionManager;
                                
                                public class WorldSaved
                                extends WorldSavedData
                                {
                                
                                public static WorldSaved instance;
                                
                                /**
                                /* Ce constructeur est obligatoire
                                */
                                
                                public static WorldSaved load(World w) {
                                if(DimensionManager.getWorlds().length < 1) return null;
                                {
                                MapStorage storage = DimensionManager.getWorlds()[0].getMapStorage(); //On récupère la mapStorage de la dimension
                                final String KEY = Events.Key; // Si vous avez choisis de faire une fonction static String. Quoiqu'il en soit, la variable KEY que nous utiliserons ici représente votre clé. Si vous utilisez un attribut static, utilisez le directement.
                                WorldSaved result = (WorldSaved)storage.loadData(WorldSaved.class, KEY);//On charge nos données
                                if (result == null) { //Si nos données n'existe pas, …
                                result = new WorldSaved(KEY);// Alors on les crée ...
                                storage.setData(KEY, result);// Et on les ajoutes à la mapStorage.
                                }
                                return result;
                                }
                                
                                }
                                
                                public WorldSaved(String key) {
                                super(key);
                                instance = this;
                                
                                }
                                
                                @Override
                                public void readFromNBT(NBTTagCompound compound) {
                                NBTTagList keyList= (NBTTagList)compound.getTag("keyList");
                                for(int i = 0; i < keyList.tagCount(); i++) {
                                NBTTagCompound keyTag = keyList.getCompoundTagAt(i);
                                Events.doorsPositions.add(new Position(keyTag.getInteger("x"), keyTag.getInteger("y"), keyTag.getInteger("z"), keyTag.getInteger("dimension")));
                                }
                                for(int i = 0; i < keyList.tagCount(); i++) {
                                NBTTagCompound keyTag = keyList.getCompoundTagAt(i);
                                ServerProxy.map.put(keyTag.getString("uuid"), keyTag.getString("name"));
                                }
                                }
                                
                                @Override
                                public void writeToNBT(NBTTagCompound compound) {
                                NBTTagList keyList = new NBTTagList();
                                Iterator <position>iterator = Events.doorsPositions.iterator();
                                Position pos;
                                NBTTagCompound keyTag = new NBTTagCompound();
                                while(iterator.hasNext()) {
                                pos = iterator.next();
                                keyTag.setInteger("x", pos.getX());
                                keyTag.setInteger("y", pos.getY());
                                keyTag.setInteger("z", pos.getZ());
                                keyTag.setInteger("dimension", pos.dimensionId);
                                keyList.appendTag(keyTag);
                                }
                                Iterator<entry<string, string="">> iterator2 = ServerProxy.map.entrySet().iterator();
                                while(iterator.hasNext()) {
                                Entry <string, string="">entry = iterator2.next();
                                keyTag.setString("uuid", entry.getKey().toString());
                                keyTag.setString("name", entry.getKey().toString());
                                keyList.appendTag(keyTag);
                                }
                                compound.setTag("keyList", keyList);
                                }
                                }
                                
                                

                                GUI:

                                
                                package com.CSC.net.GUI;
                                
                                import java.io.IOException;
                                
                                import com.CSC.net.Main;
                                import com.CSC.net.packet.PacketNameServer;
                                import com.CSC.net.proxy.ServerProxy;
                                import com.CSC.net.save.NameSave;
                                
                                import net.minecraft.client.Minecraft;
                                import net.minecraft.client.gui.GuiButton;
                                import net.minecraft.client.gui.GuiScreen;
                                import net.minecraft.client.gui.GuiSelectWorld;
                                import net.minecraft.client.gui.GuiTextField;
                                import net.minecraft.util.EnumChatFormatting;
                                
                                public class GuiJoinServer extends GuiScreen
                                {
                                private static boolean erreur;
                                
                                public static boolean b;
                                
                                private int valider;
                                
                                private int nom;
                                
                                private int prenom;
                                
                                public static GuiTextField text;
                                
                                public static GuiTextField text2;
                                
                                public GuiJoinServer() {
                                
                                }
                                
                                @Override
                                public void initGui() {
                                
                                valider = 0;
                                
                                nom = 1;
                                
                                prenom = 2;
                                
                                text = new GuiTextField(nom, fontRendererObj, width / 2, 130, 64,
                                20);
                                
                                text2 = new GuiTextField(prenom, fontRendererObj, width / 2, 100, 64,
                                20);
                                
                                text.setFocused(false);
                                
                                text2.setFocused(true);
                                
                                text.setMaxStringLength(20);
                                
                                text2.setMaxStringLength(20);
                                
                                this.buttonList.add(new GuiButton(valider, width / 2 - 123, 200, 40,
                                20, "Valider"));
                                
                                super.initGui();
                                }
                                
                                @Override
                                public void mouseClicked (int i , int j, int k) { 
                                text.mouseClicked (i, j, k); 
                                text2.mouseClicked (i, j, k); 
                                try {
                                super.mouseClicked (i, j, k);
                                } catch (IOException e) {
                                e.printStackTrace();
                                } 
                                } 
                                
                                @Override
                                protected void keyTyped(char typedChar, int keyCode) throws IOException {
                                
                                text.textboxKeyTyped(typedChar, keyCode);
                                text2.textboxKeyTyped(typedChar, keyCode);
                                super.keyTyped(typedChar, keyCode);
                                }
                                
                                @Override
                                protected void actionPerformed(GuiButton button) throws IOException {
                                
                                switch (button.id) {
                                case 0:
                                if (!text.getText().equals("") && text.getText().length() > 3
                                && !text2.getText().equals("")
                                && text2.getText().length() > 3 && !ServerProxy.map.containsKey(Minecraft.getMinecraft().getSession().getPlayerID())) {
                                System.out.println(b);
                                b = false;
                                ServerProxy.name = text2.getText() + "_" + text.getText();
                                Main.network.sendToServer(new PacketNameServer(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText() + "_" + text.getText(), 1));
                                System.out.println(ServerProxy.name);
                                System.out.println(ServerProxy.map.get(Minecraft.getMinecraft().getSession().getPlayerID()));
                                erreur = false;
                                mc.thePlayer.closeScreen();
                                }
                                else if(!text.getText().equals("") && text.getText().length() > 3
                                && !text2.getText().equals("")
                                && text2.getText().length() > 3 && ServerProxy.map.containsKey(Minecraft.getMinecraft().getSession().getPlayerID())) {
                                System.out.println(b);
                                b = false;
                                
                                ServerProxy.name = text2.getText() + "_" + text.getText();
                                Main.network.sendToServer(new PacketNameServer(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText() + "_" + text.getText(), 2));// 2 = remove / 1 = add
                                Main.network.sendToServer(new PacketNameServer(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText() + "_" + text.getText(), 1));
                                System.out.println(ServerProxy.name);
                                System.out.println(ServerProxy.map.get(Minecraft.getMinecraft().getSession().getPlayerID()));
                                erreur = false;
                                mc.thePlayer.closeScreen();
                                }
                                else if(text.getText().equals("72") && !text2.getText().equals("")
                                && text2.getText().length() > 3 && !ServerProxy.map.containsKey(Minecraft.getMinecraft().getSession().getPlayerID()))
                                {
                                System.out.println(b);
                                b = false;
                                ServerProxy.name = text2.getText();
                                Main.network.sendToServer(new PacketNameServer(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText(), 1));
                                System.out.println(ServerProxy.name);
                                erreur = false;
                                mc.thePlayer.closeScreen();
                                }
                                else if(text.getText().equals("72") && !text2.getText().equals("")
                                && text2.getText().length() > 3 && ServerProxy.map.containsKey(Minecraft.getMinecraft().getSession().getPlayerID()))
                                {
                                System.out.println(b);
                                b = false;
                                ServerProxy.name = text2.getText();
                                Main.network.sendToServer(new PacketNameServer(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText(), 2));
                                Main.network.sendToServer(new PacketNameServer(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText(), 1));
                                System.out.println(ServerProxy.name);
                                erreur = false;
                                mc.thePlayer.closeScreen();
                                }
                                else {
                                erreur = true;
                                }
                                break;
                                default:
                                erreur = false;
                                break;
                                }
                                
                                super.actionPerformed(button);
                                }
                                
                                @Override
                                public void updateScreen() {
                                super.updateScreen();
                                }
                                
                                public void drawScreen(int mouseX, int mouseY, float partialTick) {
                                
                                this.drawDefaultBackground();
                                
                                text.drawTextBox();
                                text2.drawTextBox();
                                
                                this.drawString(this.fontRendererObj, EnumChatFormatting.GRAY +"Nom", width / 2 - 80, 135, 0);
                                
                                this.drawString(this.fontRendererObj, EnumChatFormatting.GRAY + "Prénom", width / 2 - 80, 105, 0);
                                
                                super.drawScreen(mouseX, mouseY, partialTick);
                                
                                if (erreur) {
                                this.drawString(fontRendererObj,
                                "§cVotre nom et/ou prénom est/sont vide ou trop court !",
                                this.width / 2 - 110, this.height / 2 - 50, 0);
                                }
                                }
                                
                                @Override
                                public void onGuiClosed() {
                                
                                }
                                }
                                
                                

                                Packet:

                                
                                package com.CSC.net.packet;
                                
                                import com.CSC.net.proxy.ServerProxy;
                                import com.CSC.net.save.NameSave;
                                import com.CSC.net.save.WorldSaved;
                                
                                import io.netty.buffer.ByteBuf;
                                import net.minecraft.client.Minecraft;
                                import net.minecraftforge.fml.common.network.ByteBufUtils;
                                import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
                                import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
                                import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
                                import net.minecraftforge.fml.relauncher.Side;
                                import net.minecraftforge.fml.relauncher.SideOnly;
                                
                                public class PacketNameServer implements IMessage{
                                
                                private String string1;
                                
                                private int i;
                                
                                private String string2;
                                
                                public PacketNameServer(String s1, String s2, Integer in)
                                {
                                this.string1 = s1;
                                this.string2 = s2;
                                this.i = in;
                                }
                                
                                public PacketNameServer()
                                {
                                }
                                
                                @Override
                                public void fromBytes(ByteBuf buf) {
                                this.string1 = ByteBufUtils.readUTF8String(buf);
                                this.string2 = ByteBufUtils.readUTF8String(buf);
                                this.i = buf.readInt();
                                }
                                
                                @Override
                                public void toBytes(ByteBuf buf) {
                                ByteBufUtils.writeUTF8String(buf, string1);
                                ByteBufUtils.writeUTF8String(buf, string2);
                                buf.writeInt(i);
                                }
                                
                                public static class Handler implements IMessageHandler <packetnameserver, imessage="">{
                                @Override
                                   public IMessage onMessage(PacketNameServer message, MessageContext ctx) 
                                   {
                                switch(message.i)
                                {
                                case 1:
                                ServerProxy.map.put(message.string1, message.string2);
                                WorldSaved.instance.markDirty();
                                break;
                                case 2:
                                ServerProxy.map.remove(Minecraft.getMinecraft().getSession().getPlayerID());
                                WorldSaved.instance.markDirty();
                                break;
                                default:
                                break;
                                }
                                
                                return null;
                                
                                   }
                                }
                                
                                }
                                
                                

                                Register WorldSaved:

                                
                                  @EventHandler
                                    public void onServerStarting(FMLServerStartingEvent event)
                                    {
                                        if(WorldSaved.instance == null)
                                        {
                                        WorldSaved.load(event.getServer().getEntityWorld());
                                        }
                                
                                    }
                                
                                

                                Je penses que le problème vient du gui, une fois que on a un nom_prénom:

                                
                                else if(!text.getText().equals("") && text.getText().length() > 3
                                && !text2.getText().equals("")
                                && text2.getText().length() > 3 && ServerProxy.map.containsKey(Minecraft.getMinecraft().getSession().getPlayerID())) {
                                System.out.println(b);
                                b = false;
                                ServerProxy.name = text2.getText() + "_" + text.getText();
                                Main.network.sendToServer(new PacketNameServer(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText() + "_" + text.getText(), 2));// 2 = remove / 1 = add
                                System.out.println(ServerProxy.map.get(Minecraft.getMinecraft().getSession().getPlayerID()));
                                Main.network.sendToServer(new PacketNameServer(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText() + "_" + text.getText(), 1));
                                System.out.println(ServerProxy.name);
                                System.out.println(ServerProxy.map.get(Minecraft.getMinecraft().getSession().getPlayerID()));
                                erreur = false;
                                mc.thePlayer.closeScreen();
                                }
                                
                                

                                Voilà se que me donne le débug:

                                false
                                [19:53:48] [Client thread/INFO] [STDOUT]: [com.CSC.net.GUI.GuiJoinServer:actionPerformed:109]: bjrrr_rrrrr
                                [19:53:48] [Client thread/INFO] [STDOUT]: [com.CSC.net.GUI.GuiJoinServer:actionPerformed:111]: rrrrr_rrrr
                                [19:53:48] [Client thread/INFO] [STDOUT]: [com.CSC.net.GUI.GuiJoinServer:actionPerformed:112]: null
                                

                                Merci :)!</packetnameserver,></string,></entry<string,></position>

                                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

                                  Commence déjà par formater ton code, car franchement lire ton code est actuellement est juste impossible.
                                  Je ne sais pas comment tu fais pour coder avec ça.

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

                                    @‘robin4002’:

                                    Commence déjà par formater ton code, car franchement lire ton code est actuellement est juste impossible.
                                    Je ne sais pas comment tu fais pour coder avec ça.

                                    C’est plus clair comme ça?

                                    
                                    package com.CSC.net.GUI;
                                    
                                    import java.io.IOException;
                                    
                                    import com.CSC.net.Main;
                                    import com.CSC.net.packet.PacketNameServerAdd;
                                    import com.CSC.net.packet.PacketNameServerRemove;
                                    import com.CSC.net.proxy.ServerProxy;
                                    import com.CSC.net.save.NameSave;
                                    
                                    import net.minecraft.client.Minecraft;
                                    import net.minecraft.client.gui.GuiButton;
                                    import net.minecraft.client.gui.GuiScreen;
                                    import net.minecraft.client.gui.GuiSelectWorld;
                                    import net.minecraft.client.gui.GuiTextField;
                                    import net.minecraft.util.EnumChatFormatting;
                                    
                                    public class GuiJoinServer extends GuiScreen
                                    {
                                    private static boolean erreur;
                                    
                                    public static boolean b;
                                    
                                    private int valider;
                                    
                                    private int nom;
                                    
                                    private int prenom;
                                    
                                    public static GuiTextField text;
                                    
                                    public static GuiTextField text2;
                                    
                                    public GuiJoinServer() {
                                    
                                    }
                                    
                                    @Override
                                    public void initGui() {
                                    
                                    valider = 0;
                                    
                                    nom = 1;
                                    
                                    prenom = 2;
                                    
                                    text = new GuiTextField(nom, fontRendererObj, width / 2, 130, 64,
                                    20);
                                    
                                    text2 = new GuiTextField(prenom, fontRendererObj, width / 2, 100, 64,
                                    20);
                                    
                                    text.setFocused(false);
                                    
                                    text2.setFocused(true);
                                    
                                    text.setMaxStringLength(20);
                                    
                                    text2.setMaxStringLength(20);
                                    
                                    this.buttonList.add(new GuiButton(valider, width / 2 - 123, 200, 40,
                                    20, "Valider"));
                                    
                                    super.initGui();
                                    }
                                    
                                    @Override
                                    public void mouseClicked (int i , int j, int k) { 
                                    text.mouseClicked (i, j, k); 
                                    text2.mouseClicked (i, j, k); 
                                    try {
                                    super.mouseClicked (i, j, k);
                                    } catch (IOException e) {
                                    e.printStackTrace();
                                    } 
                                    } 
                                    
                                    @Override
                                    protected void keyTyped(char typedChar, int keyCode) throws IOException {
                                    
                                    text.textboxKeyTyped(typedChar, keyCode);
                                    text2.textboxKeyTyped(typedChar, keyCode);
                                    super.keyTyped(typedChar, keyCode);
                                    }
                                    
                                    @Override
                                    protected void actionPerformed(GuiButton button) throws IOException {
                                    
                                    switch (button.id) {
                                    case 0:
                                    if (!text.getText().equals("") && text.getText().length() > 3 && !text2.getText().equals("") && text2.getText().length() > 3 && !ServerProxy.map.containsKey(Minecraft.getMinecraft().getSession().getPlayerID())) {
                                    //si les text ne sont pas vide et que il sont > que 3 arguments et que le joueur n'a pas de nom_prénom:
                                    System.out.println(b);
                                    b = false;
                                    ServerProxy.name = text2.getText() + "_" + text.getText();
                                    Main.network.sendToServer(new PacketNameServerAdd(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText() + "_" + text.getText())); // ajoute le nouveau nom prénom dans la map
                                    System.out.println(ServerProxy.name);
                                    System.out.println(ServerProxy.map.get(Minecraft.getMinecraft().getSession().getPlayerID()));
                                    erreur = false;
                                    mc.thePlayer.closeScreen();
                                    }
                                    else if(!text.getText().equals("") && text.getText().length() > 3 && !text2.getText().equals("") && text2.getText().length() > 3 && ServerProxy.map.containsKey(Minecraft.getMinecraft().getSession().getPlayerID())) {
                                    //si les text ne sont pas vide et que il sont > que 3 arguments et que le joueur à déjà un nom_prénom:
                                    System.out.println(b);
                                    b = false;
                                    ServerProxy.name = text2.getText() + "_" + text.getText();
                                    Main.network.sendToServer(new PacketNameServerRemove(Minecraft.getMinecraft().getSession().getPlayerID()));// retire l'ancient nom_prénom de la map
                                    System.out.println(ServerProxy.map.get(Minecraft.getMinecraft().getSession().getPlayerID()));
                                    Main.network.sendToServer(new PacketNameServerAdd(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText() + "_" + text.getText())); // ajoute le nouveau nom prénom dans la map
                                    System.out.println(ServerProxy.name);
                                    System.out.println(ServerProxy.map.get(Minecraft.getMinecraft().getSession().getPlayerID()));
                                    erreur = false;
                                    mc.thePlayer.closeScreen();
                                    }
                                    else if(text.getText().equals("72") && !text2.getText().equals("") && text2.getText().length() > 3 && !ServerProxy.map.containsKey(Minecraft.getMinecraft().getSession().getPlayerID()))
                                    {
                                    //Ici en gros c'est pour ne pas avoir de nom, juste un prénom, le joueur met 72 dans le champ nom pour ne pas avoir de nom, on s'en occupe pas d'ici et en dessous.
                                    System.out.println(b);
                                    b = false;
                                    ServerProxy.name = text2.getText();
                                    Main.network.sendToServer(new PacketNameServerAdd(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText())); // ….
                                    System.out.println(ServerProxy.name);
                                    erreur = false;
                                    mc.thePlayer.closeScreen();
                                    }
                                    else if(text.getText().equals("72") && !text2.getText().equals("") && text2.getText().length() > 3 && ServerProxy.map.containsKey(Minecraft.getMinecraft().getSession().getPlayerID()))
                                    {
                                    System.out.println(b);
                                    b = false;
                                    ServerProxy.name = text2.getText();
                                    Main.network.sendToServer(new PacketNameServerRemove(Minecraft.getMinecraft().getSession().getPlayerID()));// ....
                                    Main.network.sendToServer(new PacketNameServerAdd(Minecraft.getMinecraft().getSession().getPlayerID(), text2.getText()));// ....
                                    System.out.println(ServerProxy.name);
                                    erreur = false;
                                    mc.thePlayer.closeScreen();
                                    }
                                    else {
                                    erreur = true;
                                    }
                                    break;
                                    default:
                                    erreur = false;
                                    break;
                                    }
                                    
                                    super.actionPerformed(button);
                                    }
                                    
                                    @Override
                                    public void updateScreen() {
                                    super.updateScreen();
                                    }
                                    
                                    public void drawScreen(int mouseX, int mouseY, float partialTick) {
                                    
                                    this.drawDefaultBackground();
                                    
                                    text.drawTextBox();
                                    text2.drawTextBox();
                                    
                                    this.drawString(this.fontRendererObj, EnumChatFormatting.GRAY +"Nom", width / 2 - 80, 135, 0);
                                    
                                    this.drawString(this.fontRendererObj, EnumChatFormatting.GRAY + "Prénom", width / 2 - 80, 105, 0);
                                    
                                    super.drawScreen(mouseX, mouseY, partialTick);
                                    
                                    if (erreur) {
                                    this.drawString(fontRendererObj,
                                    "§cVotre nom et/ou prénom est/sont vide ou trop court !",
                                    this.width / 2 - 110, this.height / 2 - 50, 0);
                                    }
                                    }
                                    
                                    @Override
                                    public void onGuiClosed() {
                                    
                                    Minecraft.getMinecraft().displayGuiScreen(this);
                                    
                                    }
                                    }
                                    
                                    

                                    PacketNameServerRemove:

                                    
                                    package com.CSC.net.packet;
                                    
                                    import io.netty.buffer.ByteBuf;
                                    import net.minecraftforge.fml.common.network.ByteBufUtils;
                                    import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
                                    import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
                                    import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
                                    
                                    import com.CSC.net.proxy.ServerProxy;
                                    import com.CSC.net.save.WorldSaved;
                                    
                                    public class PacketNameServerRemove implements IMessage{
                                    private String string1;
                                    
                                    public PacketNameServerRemove(String s1)
                                    {
                                    this.string1 = s1;
                                    
                                    }
                                    
                                    public PacketNameServerRemove()
                                    {
                                    }
                                    
                                    @Override
                                    public void fromBytes(ByteBuf buf) {
                                    this.string1 = ByteBufUtils.readUTF8String(buf);
                                    }
                                    
                                    @Override
                                    public void toBytes(ByteBuf buf) {
                                    ByteBufUtils.writeUTF8String(buf, string1);
                                    }
                                    
                                    public static class Handler implements IMessageHandler <packetnameserverremove, imessage="">{
                                    @Override
                                       public IMessage onMessage(PacketNameServerRemove message, MessageContext ctx) 
                                       {
                                    ServerProxy.map.remove(message.string1);
                                    WorldSaved.instance.markDirty();
                                    return null;
                                    
                                       }
                                    }
                                    }
                                    
                                    

                                    PacketNameServerAdd:

                                    
                                    package com.CSC.net.packet;
                                    
                                    import com.CSC.net.proxy.ServerProxy;
                                    import com.CSC.net.save.NameSave;
                                    import com.CSC.net.save.WorldSaved;
                                    
                                    import io.netty.buffer.ByteBuf;
                                    import net.minecraft.client.Minecraft;
                                    import net.minecraftforge.fml.common.network.ByteBufUtils;
                                    import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
                                    import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
                                    import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
                                    import net.minecraftforge.fml.relauncher.Side;
                                    import net.minecraftforge.fml.relauncher.SideOnly;
                                    
                                    public class PacketNameServerAdd implements IMessage{
                                    
                                    private String string1;
                                    
                                    private String string2;
                                    
                                    public PacketNameServerAdd(String s1, String s2)
                                    {
                                    this.string1 = s1;
                                    this.string2 = s2;
                                    }
                                    
                                    public PacketNameServerAdd()
                                    {
                                    }
                                    
                                    @Override
                                    public void fromBytes(ByteBuf buf) {
                                    this.string1 = ByteBufUtils.readUTF8String(buf);
                                    this.string2 = ByteBufUtils.readUTF8String(buf);
                                    }
                                    
                                    @Override
                                    public void toBytes(ByteBuf buf) {
                                    ByteBufUtils.writeUTF8String(buf, string1);
                                    ByteBufUtils.writeUTF8String(buf, string2);
                                    }
                                    
                                    public static class Handler implements IMessageHandler <packetnameserveradd, imessage="">{
                                    @Override
                                       public IMessage onMessage(PacketNameServerAdd message, MessageContext ctx) 
                                       {
                                    ServerProxy.map.put(message.string1, message.string2);
                                    WorldSaved.instance.markDirty();
                                    return null;
                                    
                                       }
                                    }
                                    
                                    }
                                    
                                    ```</packetnameserveradd,></packetnameserverremove,>
                                    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

                                      ctrl + shift + f et voila …
                                      ça prend 2 secondes formater correcte du code.

                                      Au pire envoies-moi un zip de ton dossier src, ça sera plus simple.

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

                                        @‘robin4002’:

                                        ctrl + shift + f et voila …
                                        ça prend 2 secondes formater correcte du code.

                                        Au pire envoies-moi un zip de ton dossier src, ça sera plus simple.

                                        [size=mediumTien:]
                                        [size=medium(Si ça te dérange pas biensûr, vérifie l’item “batonp” avec son gui et tout, qui a pour but de mettre un joueur en prison en choisissant le nom de temps avec des sicles )]

                                        [size=mediumMerci :)]

                                        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

                                          Tu utilises quelle mapping ? J’ai des erreurs partout de mon côté, donc on a pas les même.

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

                                            @‘robin4002’:

                                            Tu utilises quelle mapping ? J’ai des erreurs partout de mon côté, donc on a pas les même.

                                            mapping ??? c’est quoi ?

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB