MFF

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

    Système de rang

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    81 Messages 7 Publieurs 10.5k 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.
    • GabsG Hors-ligne
      Gabs
      dernière édition par

      C’est mieux ?

      
      public class PacketGuerrier implements IMessage {
      
      public static String name;
      
      public PacketGuerrier(){
      
      }
      public PacketGuerrier(String name){
      this.name = name;
      }
      
      @Override
      public void fromBytes(ByteBuf buf) {
      this.name = ByteBufUtils.readUTF8String(buf);
      
      }
      
      @Override
      public void toBytes(ByteBuf buf) {
      ByteBufUtils.writeUTF8String(buf, name);
      
      }
      
      public static class Handler implements IMessageHandler <packetguerrier, imessage="">{
      @Override
         public IMessage onMessage(PacketGuerrier message, MessageContext ctx) {
              EnumRank.GUERRIER.name();
              return message;
             }
         }
      
      ```</packetguerrier,>
      1 réponse Dernière réponse Répondre Citer 0
      • BrokenSwingB Hors-ligne
        BrokenSwing Moddeurs confirmés Rédacteurs
        dernière édition par

        Presque, il faut que dans la fonction onMessage tu ajoutes le rang à la HashMap avec l’UUID du joueur et tu pourra me montrer comment tu as enregistré ton paquets ?

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

          Alors
          J’ai fais ça:

          
          public class PacketGuerrier implements IMessage {
          
          public static String name;
          public static Minecraft mc;
          
          public PacketGuerrier(){
          
          }
          public PacketGuerrier(String name){
          this.name = name;
          }
          
          @Override
          public void fromBytes(ByteBuf buf) {
          this.name = ByteBufUtils.readUTF8String(buf);
          
          }
          
          @Override
          public void toBytes(ByteBuf buf) {
          ByteBufUtils.writeUTF8String(buf, name);
          
          }
          
          public static class Handler implements IMessageHandler <packetguerrier, imessage="">{
          @Override
             public IMessage onMessage(PacketGuerrier message, MessageContext ctx) {
          EntityPlayer player = mc.thePlayer;
                  EnumRank.GUERRIER.name();
                  ServerProxy.RANK.put(player.getUniqueID(), EnumRank.GUERRIER);
                  return message;
                 }
             }
          
          }
          
          

          Le packet est enregistrer côté serveur:

          network.registerMessage(PacketGuerrier.Handler.class, PacketGuerrier.class, 1, Side.SERVER);
          

          Et mon ServerProxy qui a mon avis n’est pas bon:

          
          package net.legacymod.proxy;
          
          import java.util.HashMap;
          import java.util.UUID;
          
          import net.legacymod.packets.PacketGuerrier;
          import net.legacymod.properties.EnumRank;
          
          public class ServerProxy {
          
          public static final HashMap <uuid, enumrank="">RANK = new HashMap<uuid, enumrank="">();
          
          public ServerProxy(){
          EnumRank.valueOf(PacketGuerrier.name);
          
          }
          
          }
          
          ```</uuid,></uuid,></packetguerrier,>
          1 réponse Dernière réponse Répondre Citer 0
          • BrokenSwingB Hors-ligne
            BrokenSwing Moddeurs confirmés Rédacteurs
            dernière édition par

            J’ai la flemme de te faire les bonnes classes, donc je vais essayer de t’expliquer :
            Dans ton paquet tu enlève l’attibut static la variable name et tu enlève la variable mc, pour ce qui est du constructeur tu met ça

            
            public PacketGuerrier(){
            
            }
            
            public PacketGuerrier(EnumRank rank) {
            this.name = rank.name();
            }
            
            

            dans la fonction onMessage tu met ça

            
            public IMessage onMessage(PacketGuerrier message, MessageContext ctx) {
            
            ServerProxy.RANK.put(ctx.getServerHandler().playerEntity.getUniqueID(), EnumRank.valueOf(message.name));
            return null;
            }
            }
            
            

            Et tu enlèves ce que tu as mis dans le constructeur de ton ServerProxy

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

              Ok j’ai essayer ça mais j’ai eu un crash:

              
              [17:54:54] [main/INFO] [GradleStart]: Extra: []
              [17:54:54] [main/INFO] [GradleStart]: Running with arguments: [–userProperties, {}, --assetsDir, C:/Users/Admin/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
              [17:54:54] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
              [17:54:54] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
              [17:54:54] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
              [17:54:54] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
              [17:54:54] [main/INFO] [FML]: Forge Mod Loader version 7.10.85.1291 for Minecraft 1.7.10 loading
              [17:54:54] [main/INFO] [FML]: Java is Java HotSpot(TM) Client VM, version 1.8.0_45, running on Windows 7:x86:6.1, installed at C:\Program Files (x86)\Java\jdk1.8.0_45\jre
              [17:54:54] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
              [17:54:54] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
              [17:54:54] [main/INFO] [GradleStart]: Injecting location in coremod cpw.mods.fml.relauncher.FMLCorePlugin
              [17:54:54] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
              [17:54:54] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
              [17:54:54] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLDeobfTweaker
              [17:54:54] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
              [17:54:54] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
              [17:54:54] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
              [17:54:54] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
              [17:54:54] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
              [17:54:55] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing
              [17:54:55] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
              [17:54:55] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker
              [17:54:55] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
              [17:54:55] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.TerminalTweaker
              [17:54:55] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.TerminalTweaker
              [17:54:55] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
              [17:54:55] [main/INFO]: Setting user: Player604
              [17:54:56] [Client thread/INFO]: LWJGL Version: 2.9.1
              [17:54:56] [Client thread/INFO] [MinecraftForge]: Attempting early MinecraftForge initialization
              [17:54:56] [Client thread/INFO] [FML]: MinecraftForge v10.13.2.1291 Initialized
              [17:54:56] [Client thread/INFO] [FML]: Replaced 183 ore recipies
              [17:54:56] [Client thread/INFO] [MinecraftForge]: Completed early MinecraftForge initialization
              [17:54:56] [Client thread/INFO] [FML]: Searching C:\Users\Admin\Documents\Modding\LegacyMod\eclipse\mods for mods
              [17:54:56] [Client thread/INFO] [lc]: Mod lc is missing the required element 'name'. Substituting lc
              [17:54:58] [Client thread/INFO] [FML]: Forge Mod Loader has identified 4 mods to load
              [17:54:58] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, lc] at CLIENT
              [17:54:58] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, lc] at SERVER
              [17:54:58] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:lc, [1.10] Firewolf v1.36.zip
              [17:54:58] [Client thread/INFO] [FML]: Processing ObjectHolder annotations
              [17:54:58] [Client thread/INFO] [FML]: Found 341 ObjectHolder annotations
              [17:54:58] [Client thread/INFO] [FML]: Configured a dormant chunk cache size of 0
              [17:54:58] [Client thread/INFO] [FML]: Applying holder lookups
              [17:54:58] [Client thread/INFO] [FML]: Holder lookups applied
              [17:54:58] [Sound Library Loader/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: 
              [17:54:58] [Sound Library Loader/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: Starting up SoundSystem…
              [17:54:58] [Thread-5/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: Initializing LWJGL OpenAL
              [17:54:58] [Thread-5/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]:     (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
              [17:54:58] [Thread-5/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: OpenAL initialized.
              [17:54:59] [Sound Library Loader/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: 
              [17:54:59] [Sound Library Loader/INFO]: Sound engine started
              [17:55:01] [Client thread/INFO]: Created: 2048x2048 textures/blocks-atlas
              [17:55:01] [Client thread/INFO]: Created: 256x256 textures/items-atlas
              [17:55:01] [Client thread/INFO] [FML]: Forge Mod Loader has successfully loaded 4 mods
              [17:55:01] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:lc, [1.10] Firewolf v1.36.zip
              [17:55:03] [Client thread/INFO]: Created: 2048x2048 textures/blocks-atlas
              [17:55:03] [Client thread/INFO]: Created: 256x256 textures/items-atlas
              [17:55:03] [Client thread/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: 
              [17:55:03] [Client thread/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: SoundSystem shutting down…
              [17:55:03] [Client thread/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:importantMessage:90]:     Author: Paul Lamb, www.paulscode.com
              [17:55:03] [Client thread/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: 
              [17:55:03] [Sound Library Loader/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: 
              [17:55:03] [Sound Library Loader/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: Starting up SoundSystem…
              [17:55:04] [Thread-7/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: Initializing LWJGL OpenAL
              [17:55:04] [Thread-7/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]:     (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
              [17:55:04] [Thread-7/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: OpenAL initialized.
              [17:55:04] [Sound Library Loader/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: 
              [17:55:04] [Sound Library Loader/INFO]: Sound engine started
              [17:55:08] [Server thread/INFO]: Starting integrated minecraft server version 1.7.10
              [17:55:08] [Server thread/INFO]: Generating keypair
              [17:55:08] [Server thread/INFO] [FML]: Injecting existing block and item data into this server instance
              [17:55:08] [Server thread/INFO] [FML]: Applying holder lookups
              [17:55:08] [Server thread/INFO] [FML]: Holder lookups applied
              [17:55:08] [Server thread/INFO] [FML]: Loading dimension 0 (New World) (net.minecraft.server.integrated.IntegratedServer@1e30337)
              [17:55:08] [Server thread/INFO] [FML]: Loading dimension 1 (New World) (net.minecraft.server.integrated.IntegratedServer@1e30337)
              [17:55:08] [Server thread/INFO] [FML]: Loading dimension -1 (New World) (net.minecraft.server.integrated.IntegratedServer@1e30337)
              [17:55:08] [Server thread/INFO]: Preparing start region for level 0
              [17:55:09] [Server thread/INFO]: Changing view distance to 8, from 10
              [17:55:09] [Netty Client IO #0/INFO] [FML]: Server protocol version 1
              [17:55:09] [Netty IO #1/INFO] [FML]: Client protocol version 1
              [17:55:09] [Netty IO #1/INFO] [FML]: Client attempting to join with 4 mods : FML@7.10.85.1291,lc@1.0,Forge@10.13.2.1291,mcp@9.05
              [17:55:09] [Netty IO #1/INFO] [FML]: Attempting connection with missing mods [] at CLIENT
              [17:55:09] [Netty Client IO #0/INFO] [FML]: Attempting connection with missing mods [] at SERVER
              [17:55:09] [Client thread/INFO] [FML]: [Client thread] Client side modded connection established
              [17:55:09] [Server thread/INFO] [FML]: [Server thread] Server side modded connection established
              [17:55:09] [Server thread/INFO]: Player604[local:E:a526ab7a] logged in with entity id 356 at (-140.53934696846642, 86.27882464665369, 238.05525667116646)
              [17:55:09] [Server thread/INFO]: Player604 joined the game
              [17:55:11] [Server thread/INFO]: Saving and pausing game…
              [17:55:11] [Server thread/INFO]: Saving chunks for level 'New World'/Overworld
              [17:55:11] [Server thread/INFO]: Saving chunks for level 'New World'/Nether
              [17:55:11] [Server thread/INFO]: Saving chunks for level 'New World'/The End
              [17:55:12] [Client thread/ERROR] [FML]: FMLIndexedMessageCodec exception caught
              io.netty.handler.codec.EncoderException: java.lang.NullPointerException
              at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:107) ~[MessageToMessageEncoder.class:?]
              at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116) ~[MessageToMessageCodec.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.invokeWrite(DefaultChannelHandlerContext.java:644) ~[DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.write(DefaultChannelHandlerContext.java:698) ~[DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.writeAndFlush(DefaultChannelHandlerContext.java:688) ~[DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.writeAndFlush(DefaultChannelHandlerContext.java:717) ~[DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:893) ~[DefaultChannelPipeline.class:?]
              at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:239) ~[AbstractChannel.class:?]
              at cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper.sendToServer(SimpleNetworkWrapper.java:236) [SimpleNetworkWrapper.class:?]
              at net.legacymod.gui.ClassesGUI.actionPerformed(ClassesGUI.java:86) [ClassesGUI.class:?]
              at net.minecraft.client.gui.GuiScreen.mouseClicked(GuiScreen.java:252) [GuiScreen.class:?]
              at net.minecraft.client.gui.GuiScreen.handleMouseInput(GuiScreen.java:344) [GuiScreen.class:?]
              at net.minecraft.client.gui.GuiScreen.handleInput(GuiScreen.java:313) [GuiScreen.class:?]
              at net.minecraft.client.Minecraft.runTick(Minecraft.java:1720) [Minecraft.class:?]
              at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1028) [Minecraft.class:?]
              at net.minecraft.client.Minecraft.run(Minecraft.java:951) [Minecraft.class:?]
              at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
              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.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?]
              at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?]
              at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
              at GradleStart.main(Unknown Source) [start/:?]
              Caused by: java.lang.NullPointerException
              at cpw.mods.fml.common.network.ByteBufUtils.writeUTF8String(ByteBufUtils.java:132) ~[ByteBufUtils.class:?]
              at net.legacymod.packets.PacketGuerrier.toBytes(PacketGuerrier.java:36) ~[PacketGuerrier.class:?]
              at cpw.mods.fml.common.network.simpleimpl.SimpleIndexedCodec.encodeInto(SimpleIndexedCodec.java:11) ~[SimpleIndexedCodec.class:?]
              at cpw.mods.fml.common.network.simpleimpl.SimpleIndexedCodec.encodeInto(SimpleIndexedCodec.java:7) ~[SimpleIndexedCodec.class:?]
              at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.encode(FMLIndexedMessageToMessageCodec.java:51) ~[FMLIndexedMessageToMessageCodec.class:?]
              at io.netty.handler.codec.MessageToMessageCodec$1.encode(MessageToMessageCodec.java:67) ~[MessageToMessageCodec$1.class:?]
              at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:89) ~[MessageToMessageEncoder.class:?]
              … 24 more
              [17:55:12] [Client thread/INFO]: [CHAT] §7blablabla: [] §8!
              [17:55:12] [Client thread/ERROR] [FML]: There was a critical exception handling a packet on channel lc:
              io.netty.handler.codec.EncoderException: java.lang.NullPointerException
              at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:107) ~[MessageToMessageEncoder.class:?]
              at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116) ~[MessageToMessageCodec.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.invokeWrite(DefaultChannelHandlerContext.java:644) ~[DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.write(DefaultChannelHandlerContext.java:698) ~[DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.writeAndFlush(DefaultChannelHandlerContext.java:688) ~[DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.writeAndFlush(DefaultChannelHandlerContext.java:717) ~[DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:893) ~[DefaultChannelPipeline.class:?]
              at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:239) ~[AbstractChannel.class:?]
              at cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper.sendToServer(SimpleNetworkWrapper.java:236) ~[SimpleNetworkWrapper.class:?]
              at net.legacymod.gui.ClassesGUI.actionPerformed(ClassesGUI.java:86) ~[ClassesGUI.class:?]
              at net.minecraft.client.gui.GuiScreen.mouseClicked(GuiScreen.java:252) ~[GuiScreen.class:?]
              at net.minecraft.client.gui.GuiScreen.handleMouseInput(GuiScreen.java:344) ~[GuiScreen.class:?]
              at net.minecraft.client.gui.GuiScreen.handleInput(GuiScreen.java:313) ~[GuiScreen.class:?]
              at net.minecraft.client.Minecraft.runTick(Minecraft.java:1720) [Minecraft.class:?]
              at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1028) [Minecraft.class:?]
              at net.minecraft.client.Minecraft.run(Minecraft.java:951) [Minecraft.class:?]
              at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
              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.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?]
              at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?]
              at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
              at GradleStart.main(Unknown Source) [start/:?]
              Caused by: java.lang.NullPointerException
              at cpw.mods.fml.common.network.ByteBufUtils.writeUTF8String(ByteBufUtils.java:132) ~[ByteBufUtils.class:?]
              at net.legacymod.packets.PacketGuerrier.toBytes(PacketGuerrier.java:36) ~[PacketGuerrier.class:?]
              at cpw.mods.fml.common.network.simpleimpl.SimpleIndexedCodec.encodeInto(SimpleIndexedCodec.java:11) ~[SimpleIndexedCodec.class:?]
              at cpw.mods.fml.common.network.simpleimpl.SimpleIndexedCodec.encodeInto(SimpleIndexedCodec.java:7) ~[SimpleIndexedCodec.class:?]
              at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.encode(FMLIndexedMessageToMessageCodec.java:51) ~[FMLIndexedMessageToMessageCodec.class:?]
              at io.netty.handler.codec.MessageToMessageCodec$1.encode(MessageToMessageCodec.java:67) ~[MessageToMessageCodec$1.class:?]
              at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:89) ~[MessageToMessageEncoder.class:?]
              … 24 more
              [17:55:12] [Server thread/INFO]: Player604 lost connection: TextComponent{text='Disconnected', siblings=[], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null}}
              [17:55:12] [Server thread/INFO]: Player604 left the game
              [17:55:12] [Server thread/INFO]: Stopping singleplayer server as player logged out
              [17:55:12] [Server thread/INFO]: Stopping server
              [17:55:12] [Server thread/INFO]: Saving players
              [17:55:12] [Server thread/INFO]: Saving worlds
              [17:55:12] [Server thread/INFO]: Saving chunks for level 'New World'/Overworld
              [17:55:12] [Server thread/INFO]: Saving chunks for level 'New World'/Nether
              [17:55:12] [Server thread/INFO]: Saving chunks for level 'New World'/The End
              [17:55:12] [Server thread/INFO] [FML]: Unloading dimension 0
              [17:55:12] [Server thread/INFO] [FML]: Unloading dimension -1
              [17:55:12] [Server thread/INFO] [FML]: Unloading dimension 1
              [17:55:12] [Server thread/INFO] [FML]: Applying holder lookups
              [17:55:12] [Server thread/INFO] [FML]: Holder lookups applied
              
              

              PacketGuerrier:

              
              public class PacketGuerrier implements IMessage {
              
              public String name;
              
              public PacketGuerrier(){
              
              }
              public PacketGuerrier(EnumRank rank){
              this.name = rank.name();
              }
              
              @Override
              public void fromBytes(ByteBuf buf) {
              this.name = ByteBufUtils.readUTF8String(buf);
              
              }
              
              @Override
              public void toBytes(ByteBuf buf) {
              ByteBufUtils.writeUTF8String(buf, name);//ligne 36
              
              }
              
              public static class Handler implements IMessageHandler <packetguerrier, imessage="">{
              @Override
                 public IMessage onMessage(PacketGuerrier message, MessageContext ctx) {
                      ServerProxy.RANK.put(ctx.getServerHandler().playerEntity.getUniqueID(), EnumRank.valueOf(message.name));
                      return null;
                     }
                 }
              
              }
              
              

              ClasseGUI:

              
              case 1:
              LegacyMod.network.sendToServer(new PacketGuerrier());//ligne 86
              this.mc.thePlayer.closeScreen();
              break;
              
              ```</packetguerrier,>
              1 réponse Dernière réponse Répondre Citer 0
              • BrokenSwingB Hors-ligne
                BrokenSwing Moddeurs confirmés Rédacteurs
                dernière édition par

                Il faut que tu mette ça :

                
                LegacyMod.network.sendToServer(new PacketGuerrier(EnumRank.LERANG));
                
                
                1 réponse Dernière réponse Répondre Citer 0
                • GabsG Hors-ligne
                  Gabs
                  dernière édition par

                  Ok merci c’est nickel !

                  EDIT:

                  Par contre j’ai un soucis comment je peux faire?
                  En gros je voudrais faire que une fois que le joueur a choisis sont rang il ne puisse plus changer.

                  J’ai fais ça:

                  case 1:
                  if(ServerProxy.RANK.values() == null){
                  LegacyMod.network.sendToServer(new PacketGuerrier(EnumRank.GUERRIER));
                  this.mc.thePlayer.closeScreen();
                  EntityPlayer player1 = Minecraft.getMinecraft().thePlayer;
                  ChatComponentText text1 = new ChatComponentText("§7blablabla: " + ServerProxy.RANK.values() +" §8!");
                  player1.addChatComponentMessage(text1);
                  }else{
                  this.mc.thePlayer.closeScreen();
                  }
                  

                  Le problème est que quand le joueur n’a pas de grade sa ne return pas null du coup je sais pas comment faire…

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

                    Il suffit juste que dans la méthode onMessage tu mette ceci :

                    
                    public IMessage onMessage(PacketGuerrier message, MessageContext ctx) {
                    if(ServerProxy.RANK.get(ctx.getServerHandler().playerEntity.getUniqueID() == null) {
                    ServerProxy.RANK.put(ctx.getServerHandler().playerEntity.getUniqueID(), EnumRank.valueOf(message.name));
                    return null;
                    }
                    }
                    }
                    
                    
                    1 réponse Dernière réponse Répondre Citer 0
                    • GabsG Hors-ligne
                      Gabs
                      dernière édition par

                      Ok c’est bon j’ai trouvé merci
                      Et pour save comment je peux faire ?

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

                        Il va falloir utiliser ceci : https://www.minecraftforgefrance.fr/showthread.php?tid=2444 pour sauvegarder le contenu de ta liste dans les tags nbt de ta map.

                        Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                        AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                        Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                        Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                          Ok par contre faut m’aider x)

                          
                          public class RankSave extends WorldSavedData {
                          
                          /**
                          /* Ce constructeur est obligatoire
                          */
                          
                          public static RankSave load(World w) {
                          MapStorage storage = w.perWorldStorage; 
                          final String KEY = getDataStorageKey(); // il faut modifier ici mais par quoi ? ServerProxy.RANK.get(…) ?
                          RankSave result = (RankSave)storage.loadData(RankSave.class, KEY);
                          if (result == null) { 
                          result = new RankSave(KEY);
                          storage.setData(KEY, result);
                          }
                          
                          return result; 
                          }
                          
                          public RankSave(String key) {
                          super(key);
                          }
                          
                          @Override
                          public void readFromNBT(NBTTagCompound p_76184_1_) {
                          // Vous remplissez les attributs de votre objet via le NBTTagCompound
                          
                          }
                          
                          @Override
                          public void writeToNBT(NBTTagCompound p_76187_1_) {
                          // Vous écrivez le contenu de votre objet dans le NBTTagCompound
                          
                          }
                          
                          }
                          
                          
                          1 réponse Dernière réponse Répondre Citer 0
                          • AymericRedA Hors-ligne
                            AymericRed
                            dernière édition par

                            Le KEY sera le nom de la sauvegarde donc tu peux mettre, par exemple, Ranks.

                            Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                            AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                            Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                            Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                              Ok mais le problème c’est que quand je met ServerProxy.Rank j’ai des érreurs:

                              public static RankSave load(World w) {
                              MapStorage storage = w.perWorldStorage; //On récupère la mapStorage de la dimension
                              final HashMap <uuid, enumrank="">KEY = ServerProxy.RANK; // 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.
                              RankSave result = (RankSave)storage.loadData(RankSave.class, KEY);//On charge nos données//ici a loadData
                              if (result == null) { //Si nos données n'existe pas, …
                              result = new RankSave(KEY);// ici a new RankSave
                              storage.setData(KEY, result);// et ici a setData
                              }
                              ```</uuid,>
                              1 réponse Dernière réponse Répondre Citer 0
                              • AymericRedA Hors-ligne
                                AymericRed
                                dernière édition par

                                As-tu créé une variable de type String qui s’appelle RANK dans ton ServerProxy :

                                public static final String SAVE_KEY = "Ranks";
                                

                                Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

                                Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                                  Le problème est qu’il a utilisé une HashMap pour clé, il n’a pas suivi correctement le tutoriel

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

                                    D’acc j’ai fais ça:

                                    RankSave:

                                    
                                    package net.legacymod.save;
                                    
                                    import java.util.HashMap;
                                    import java.util.UUID;
                                    
                                    import net.legacymod.properties.EnumRank;
                                    import net.legacymod.proxy.ServerProxy;
                                    import net.minecraft.nbt.NBTBase;
                                    import net.minecraft.nbt.NBTTagCompound;
                                    import net.minecraft.nbt.NBTTagList;
                                    import net.minecraft.nbt.NBTTagString;
                                    import net.minecraft.world.World;
                                    import net.minecraft.world.WorldSavedData;
                                    import net.minecraft.world.storage.MapStorage;
                                    
                                    public class RankSave extends WorldSavedData {
                                    
                                    /**
                                    /* Ce constructeur est obligatoire
                                    */
                                    
                                    public static RankSave load(World w) {
                                    MapStorage storage = w.perWorldStorage; //On récupère la mapStorage de la dimension
                                    final String KEY = ServerProxy.SAVE_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.
                                    RankSave result = (RankSave)storage.loadData(RankSave.class, KEY);//On charge nos données
                                    if (result == null) { //Si nos données n'existe pas, …
                                    result = new RankSave(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 RankSave(String key) {
                                    super(key);
                                    }
                                    
                                    public void readFromNBT(NBTTagCompound nbt) {
                                    // Vous remplissez les attributs de votre objet via le NBTTagCompound
                                    readFromNBT(nbt);
                                    NBTTagCompound nbtTagCompound = nbt.getCompoundTag(ServerProxy.SAVE_KEY);
                                    }
                                    
                                    @Override
                                    public void writeToNBT(NBTTagCompound nbt) {
                                    // Vous écrivez le contenu de votre objet dans le NBTTagCompound
                                    writeToNBT(nbt);
                                    NBTTagCompound nbtTagCompound = nbt.getCompoundTag(ServerProxy.SAVE_KEY); 
                                    
                                    }
                                    
                                    }
                                    
                                    

                                    ServerProxy:

                                    
                                    package net.legacymod.proxy;
                                    
                                    import java.util.HashMap;
                                    import java.util.UUID;
                                    
                                    import net.legacymod.packets.PacketGuerrier;
                                    import net.legacymod.properties.EnumRank;
                                    
                                    public class ServerProxy {
                                    
                                    public static final HashMap <uuid, enumrank="">RANK = new HashMap<uuid, enumrank="">();
                                    
                                    public static final String SAVE_KEY = "Ranks"; 
                                    
                                    }
                                    
                                    

                                    Dite moi si c’est bon sinon une fois que c’est fini je dois enregistrer la classe ?</uuid,></uuid,>

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

                                      ça a l’air d’être bon, mis à part le fait que les fonctions readFromNBT et writeToNBT font chancune une boucle infinie…
                                      Dans ta fonction write, il faut que tu mettes chaque élément de ta HashMap de rang dans le tag (en utilisant une NBTTagList()) et dans read, que tu lises ton tag et remplisses la liste avec ce qui a été lu.

                                      Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                      AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                      Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                      Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                                        Je comprend pas tu me dis de que dans le write je met chaque élément de ma hashmap de rang c’est a dire -> EnumRank.Guerrier EnumRank.Archer etc… ? ou ServerProxy.Rank …
                                        Et dans le read dont je lis le tag sa c’est bon et je le remplis avec la liste de se qui a été lu ? -> ?

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

                                          En gros

                                          
                                          public static void writeToNBT(NBTTagCompound compound) {
                                          NBTTagList rankList = new NBTTagList();
                                          Iterator<entry<uuid, enumrank="">> iterator = RANK.entrySet().iterator();
                                          while(iterator.hasNext()) {
                                          NBTTagCompound rankTag = new NBTTagCompound();
                                          Entry <uuid, enumrank="">entry = iterator.next();
                                          rankTag.setString("uuid", entry.getKey().toString());
                                          rankTag.setString("rank", entry.getValue().name());
                                          rankList.appendTag(rankTag);
                                          }
                                          compound.setTag("rankList", rankList);
                                          }
                                          
                                          

                                          Et :

                                          
                                          public static void readFromNBT(NBTTagCompound compound) {
                                          NBTTagList rankList= (NBTTagList)compound.getTag("rankList");
                                          for(int i = 0; i < rankList.tagCount(); i++) {
                                          NBTTagCompound rankTag = rankList.getCompoundTagAt(i);
                                          RANK.put(UUID.fromString(rankTag.getString("uuid")), EnumRank.valueOf(rankTag.getString("rank")));
                                          }
                                          }
                                          
                                          ```</uuid,></entry<uuid,>
                                          1 réponse Dernière réponse Répondre Citer 0
                                          • GabsG Hors-ligne
                                            Gabs
                                            dernière édition par

                                            Merci 🙂 c’est bon normalement!
                                            Un dernier truc !
                                            Je veux récupéré le rank exact du joueur si je fais:
                                            if(ServerProxy.RANK.get(event.entityPlayer.getUniqueID()) != EnumRank.GUERRIER);
                                            j’ai une érreur
                                            Merci!

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB