Problème avec le PacketPipeline [1.7.10]



  • Bonjour à vous!

    Voilà, j'ai créé la classe PacketPipeline et lorsque je souhaite l’initialisé dans ma classe principal.
    Mon jeu crash et j'ai beau à cherché de comprendre d’où vient le problème, je n'y arrive pas.

    Voici les classes concerner :

    PacketPipeline :

    import cpw.mods.fml.common.network.FMLEmbeddedChannel;
    import cpw.mods.fml.common.network.FMLOutboundHandler;
    import cpw.mods.fml.common.network.NetworkRegistry;
    import cpw.mods.fml.common.network.internal.FMLProxyPacket;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import fr.irisium.irisiummod.IrisiumMod;
    import io.netty.buffer.ByteBuf;
    import io.netty.buffer.Unpooled;
    import io.netty.channel.ChannelHandler;
    import io.netty.channel.ChannelHandler.Sharable;
    import io.netty.channel.ChannelHandlerContext;
    import io.netty.handler.codec.MessageToMessageCodec;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.EnumMap;
    import java.util.LinkedList;
    import java.util.List;
    import net.minecraft.client.Minecraft;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.entity.player.EntityPlayerMP;
    import net.minecraft.network.INetHandler;
    import net.minecraft.network.NetHandlerPlayServer;
    
    public class PacketPipeline extends MessageToMessageCodec<FMLProxyPacket, AbstractPacket>
    {
    	  private EnumMap<Side, FMLEmbeddedChannel> channels;
    	  private LinkedList<Class<? extends AbstractPacket>> packets = new LinkedList();
    	  private boolean isPostInitialised = false;
    
    	  public boolean registerPacket(Class<? extends AbstractPacket> clazz) 
    	  {
    	    if (this.packets.size() > 256)
    	    {
    	      return false;
    	    }
    	    if (this.packets.contains(clazz))
    	    {
    	      return false;
    	    }
    	    if (this.isPostInitialised)
    	    {
    	      return false;
    	    }
    	    this.packets.add(clazz);
    	    return true;
    	  }
    
    	  protected void encode(ChannelHandlerContext ctx, AbstractPacket msg, List<Object> out) throws Exception 
    	  {
    	    ByteBuf buffer = Unpooled.buffer();
    	    Class<? extends AbstractPacket> clazz = msg.getClass();
    	    if (!this.packets.contains(msg.getClass())) 
    	    {
    	      throw new NullPointerException("No Packet Registered for: " + msg.getClass().getCanonicalName());
    	    }
    	    byte discriminator = (byte)this.packets.indexOf(clazz);
    	    buffer.writeByte(discriminator);
    	    msg.encodeInto(ctx, buffer);
    	    FMLProxyPacket proxyPacket = new FMLProxyPacket(buffer.copy(), (String)ctx.channel().attr(NetworkRegistry.FML_CHANNEL).get());
    	    out.add(proxyPacket);
    	  }
    	  
    	  protected void decode(ChannelHandlerContext ctx, FMLProxyPacket msg, List<Object> out) throws Exception 
    	  {
    	    INetHandler netHandler;
    	    EntityPlayerMP entityPlayerMP;
    	    EntityPlayer player;
    	    ByteBuf payload = msg.payload();
    	    byte discriminator = payload.readByte();
    	    Class<? extends AbstractPacket> clazz = (Class)this.packets.get(discriminator);
    	    if (clazz == null) 
    	    {
    	      throw new NullPointerException("No packet registered for discriminator: " + discriminator);
    	    }
    	    AbstractPacket pkt = (AbstractPacket)clazz.newInstance();
    	    pkt.decodeInto(ctx, payload.slice());
    	    switch (FMLCommonHandler.instance().getEffectiveSide()) 
    	    {
    	      case CLIENT:
    	        player = getClientPlayer();
    	        pkt.handleClientSide(player);
    	        break;
    	      case SERVER:
    	        netHandler = (INetHandler)ctx.channel().attr(NetworkRegistry.NET_HANDLER).get();
    	        entityPlayerMP = ((NetHandlerPlayServer)netHandler).playerEntity;
    	        pkt.handleServerSide(entityPlayerMP);
    	        break;
    	    } 
    	    out.add(pkt);
    	  }
    
    	  public void initialise() 
    	  { 
    		  this.channels = NetworkRegistry.INSTANCE.newChannel("irisiummod", new ChannelHandler[] { this }); 
    	  }
    
    	  public void postInitialise() 
    	  {
    	    if (this.isPostInitialised) 
    	    {
    	      return;
    	    }
    	    
    	    this.isPostInitialised = true;
    	    Collections.sort(this.packets, new Comparator<Class<? extends AbstractPacket>>()
    	        {
    	          public int compare(Class<? extends AbstractPacket> clazz1, Class<? extends AbstractPacket> clazz2)
    	          {
    	            int com = String.CASE_INSENSITIVE_ORDER.compare(clazz1.getCanonicalName(), clazz2.getCanonicalName());
    	            if (com == 0) 
    	            {
    	              com = clazz1.getCanonicalName().compareTo(clazz2.getCanonicalName());
    	            }
    	            
    	            return com;
    	          }
    	        });
    	  }
    
    	  @SideOnly(Side.CLIENT)
    	  private EntityPlayer getClientPlayer() 
    	  { 
    		  return (Minecraft.getMinecraft()).thePlayer; 
    	  }
    
    	  public void sendToAll(AbstractPacket message) 
    	  {
    	    ((FMLEmbeddedChannel)this.channels.get(Side.SERVER)).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALL);
    	    ((FMLEmbeddedChannel)this.channels.get(Side.SERVER)).writeAndFlush(message);
    	  }
    
    	  public void sendTo(AbstractPacket message, EntityPlayerMP player) 
    	  {
    	    ((FMLEmbeddedChannel)this.channels.get(Side.SERVER)).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.PLAYER);
    	    ((FMLEmbeddedChannel)this.channels.get(Side.SERVER)).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(player);
    	    ((FMLEmbeddedChannel)this.channels.get(Side.SERVER)).writeAndFlush(message);
    	  }
    
    	  public void sendToAllAround(AbstractPacket message, NetworkRegistry.TargetPoint point) 
    	  {
    	    ((FMLEmbeddedChannel)this.channels.get(Side.SERVER)).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALLAROUNDPOINT);
    	    ((FMLEmbeddedChannel)this.channels.get(Side.SERVER)).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(point);
    	    ((FMLEmbeddedChannel)this.channels.get(Side.SERVER)).writeAndFlush(message);
    	  }
    
    	  public void sendToDimension(AbstractPacket message, int dimensionId) 
    	  {
    	    ((FMLEmbeddedChannel)this.channels.get(Side.SERVER)).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.DIMENSION);
    	    ((FMLEmbeddedChannel)this.channels.get(Side.SERVER)).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(Integer.valueOf(dimensionId));
    	    ((FMLEmbeddedChannel)this.channels.get(Side.SERVER)).writeAndFlush(message);
    	  }
    
    	  public void sendToServer(AbstractPacket message) 
    	  {
    	    ((FMLEmbeddedChannel)this.channels.get(Side.CLIENT)).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.TOSERVER);
    	    ((FMLEmbeddedChannel)this.channels.get(Side.CLIENT)).writeAndFlush(message);
    	  }
    }
    

    La classe principal :

    
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    import cpw.mods.fml.common.Loader;
    import cpw.mods.fml.client.registry.ClientRegistry;
    import cpw.mods.fml.common.FMLCommonHandler;
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.Mod.EventHandler;
    import cpw.mods.fml.common.Mod.Instance;
    import cpw.mods.fml.common.SidedProxy;
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    import cpw.mods.fml.common.event.FMLServerStartingEvent;
    import cpw.mods.fml.common.network.NetworkRegistry;
    import cpw.mods.fml.common.registry.EntityRegistry;
    import cpw.mods.fml.common.registry.GameRegistry;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import fr.irisium.irisiummod.blocks.machine.BlockDisenchantmentTable;
    import fr.irisium.irisiummod.command.StatsCommand;
    import fr.irisium.irisiummod.entity.EntityDynamite;
    import fr.irisium.irisiummod.event.Events;
    import fr.irisium.irisiummod.gui.GuiHandler;
    import fr.irisium.irisiummod.init.BlocksMod;
    import fr.irisium.irisiummod.init.ItemsMod;
    import fr.irisium.irisiummod.init.TilesMod;
    import fr.irisium.irisiummod.network.packets.PacketPipeline;
    import fr.irisium.irisiummod.network.packets.PacketStatAlter;
    import fr.irisium.irisiummod.network.packets.PacketStatSync;
    import fr.irisium.irisiummod.network.packets.PacketSyncStatConfig;
    import fr.irisium.irisiummod.network.packets.PacketSyncXP;
    import fr.irisium.irisiummod.network.packets.TickHandler;
    import fr.irisium.irisiummod.proxy.CommonProxy;
    import fr.irisium.irisiummod.recipes.HammerMachineRecipes;
    import fr.irisium.irisiummod.recipes.RecipesMod;
    import fr.irisium.irisiummod.recipes.StickMachineRecipes;
    import fr.irisium.irisiummod.render.RenderDisenchantmentTable;
    import fr.irisium.irisiummod.stats.Stat;
    import fr.irisium.irisiummod.tileentity.TileEntityDisenchantmentTableAutomatic;
    import fr.irisium.irisiummod.tileentity.TileEntityIrisiumChest;
    import fr.irisium.irisiummod.tileentity.TileEntityIrisiumChestRender;
    import fr.irisium.irisiummod.tileentity.machine.TileEntityDisenchantmentTable;
    import fr.irisium.irisiummod.tileentity.machine.TileEntityStickMachine;
    import fr.irisium.irisiummod.util.ConfigHandler;
    import fr.irisium.irisiummod.util.IMConfiguration;
    import fr.irisium.irisiummod.util.IMEventHandler;
    import fr.irisium.irisiummod.world.WorldGenIrisium;
    import net.minecraft.command.ICommandManager;
    import net.minecraft.command.ServerCommandManager;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.server.MinecraftServer;
    import net.minecraft.util.ResourceLocation;
    import net.minecraft.util.StatCollector;
    import net.minecraftforge.common.MinecraftForge;
    import net.minecraftforge.common.config.Configuration;
    
    @Mod (modid = "irisiummod", name = "Irisium Mod", version = "0.1", acceptedMinecraftVersions = "[1.7.10]")
    public class IrisiumMod 
    {
    public static final String MODID = "irisiummod";
    	
    	@Instance("irisiummod")
    	public static IrisiumMod instance;
    	
    	public static Configuration config;
    	public static BlockDisenchantmentTable disenchantmentTable;
    	public static String strin;
    	
    	
    	@SidedProxy(clientSide = "fr.irisium.irisiummod.proxy.ClientProxy", serverSide = "fr.irisium.irisiummod.proxy.CommonProxy")
        public static CommonProxy proxy;
    	public static Logger logger = LogManager.getLogger("IrisiumMod");
    	public static Random random = new Random();
    	public static CreativeTabs IrisiumCreativeTab = new IrisiumModCreativeTab("irisium");
    	public static final PacketPipeline packetPipeline = new PacketPipeline();
    	public static boolean isPlayerAPILoaded = false;
    	public static final String CONFIGURATION_VERSION = "v1";
    	public static final ResourceLocation PARTICLES_TEXTURE = new ResourceLocation("irisiummod".toLowerCase(), "textures/particles.png");
    	public static final String STAT_TAG = "irisiumStats_Stats";
    	public static final ResourceLocation RPG_ICON_TEXTURE_LOCATION = new ResourceLocation("irisiummod".toLowerCase(), "textures/rpg_icons.png");
    	public static final ResourceLocation RPG_ICON_2_TEXTURE_LOCATION = new ResourceLocation("irisiummod".toLowerCase(), "textures/rpg_icons_2.png");
    
    	private FMLPreInitializationEvent configFile;
    
        @EventHandler
        public void preInit(FMLPreInitializationEvent ev)
        {
        	instance = this;
        	proxy.preInit(ev);
            logger = ev.getModLog();
            IrisiumMod.config = new Configuration(ev.getSuggestedConfigurationFile());
            IrisiumMod.config.load();
            if (!IrisiumMod.config.get("Version", "Configuration Version", "v1").getString().equals("v1"))
            {
              System.err.println("irisiumStats configuration file has changed! May cause errors! Delete the configuration file and relaunch.");
            }
            IMConfiguration.init(ev);
            IMConfiguration.syncConfig();
            IMEventHandler ime = new IMEventHandler();
            Stat.loadOptions(IrisiumMod.config);
            Stat.loadAllStatsFromConfiguration(IrisiumMod.config);
            proxy.registerKeybinding();
            proxy.registerHandlers();
        }
     
        @EventHandler
        public void init(FMLInitializationEvent ev)
        {
        	ItemsMod.init();
        	BlocksMod.init();
        	BlocksMod.register();
        	ItemsMod.register();
        	RecipesMod.init();
        	TilesMod.init();
        	StickMachineRecipes.getManager();
        	GameRegistry.registerWorldGenerator(new WorldGenIrisium(), 0);
        	proxy.init(ev);
        	proxy.registerEntityRender();
        	proxy.registerOverlay();
        	proxy.registerItemRender();
        	packetPipeline.initialise();
            packetPipeline.registerPacket(PacketStatSync.class);
            packetPipeline.registerPacket(PacketStatAlter.class);
            packetPipeline.registerPacket(PacketSyncXP.class);
            packetPipeline.registerPacket(PacketSyncStatConfig.class);
        	NetworkRegistry.INSTANCE.registerGuiHandler(IrisiumMod.instance, new GuiHandler());
        	IMConfiguration.syncConfig();
        	GameRegistry.registerTileEntity(TileEntityDisenchantmentTable.class, "TileDisentchantmentTable");
    		GameRegistry.registerTileEntity(TileEntityDisenchantmentTableAutomatic.class, "TileDisentchantmentTableAutomatic");
    		ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDisenchantmentTable.class, new RenderDisenchantmentTable());
    		EntityRegistry.registerModEntity(EntityDynamite.class, "Dynamite", 420, IrisiumMod.instance, 32, 20, true);
    		ClientRegistry.bindTileEntitySpecialRenderer(TileEntityIrisiumChest.class, new TileEntityIrisiumChestRender());
    		FMLCommonHandler.instance().bus().register(new TickHandler());
    		MinecraftForge.EVENT_BUS.register(new Events());
        }
        
        @EventHandler
        public void postInit(FMLPostInitializationEvent ev) 
        {
        	 packetPipeline.postInitialise();
        	 if (Loader.isModLoaded("PlayerAPI")) 
        	 {
        	      IrisiumMod.isPlayerAPILoaded = true;
        	      Stat.STAT_ATHLETICISM.enabled = false;
        	      Stat.STAT_CLIMBING.enabled = false;
        	 } 
        	 Stat.saveAllStatsToConfiguration(IrisiumMod.config);
        	 Stat.saveGlobalMultipliers(IrisiumMod.config);
        	 IrisiumMod.config.save();
        }
        
        @EventHandler
        public void serverStart(FMLServerStartingEvent event) 
        {
          MinecraftServer server = MinecraftServer.getServer();
          ICommandManager command = server.getCommandManager();
          ServerCommandManager serverCommand = (ServerCommandManager)command;
          serverCommand.registerCommand(new StatsCommand());
        }
    }
    

    Le crash-report :

    // Hi. I'm Minecraft, and I'm a crashaholic.
    
    Time: 30/08/19 13:08
    Description: Initializing game
    
    io.netty.channel.ChannelPipelineException: fr.irisium.irisiummod.network.packets.PacketPipeline is not a @Sharable handler, so can't be added or removed multiple times.
    	at io.netty.channel.DefaultChannelPipeline.checkMultiplicity(DefaultChannelPipeline.java:461)
    	at io.netty.channel.DefaultChannelPipeline.addLast0(DefaultChannelPipeline.java:138)
    	at io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:131)
    	at io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:258)
    	at io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:245)
    	at io.netty.channel.embedded.EmbeddedChannel.<init>(EmbeddedChannel.java:79)
    	at cpw.mods.fml.common.network.FMLEmbeddedChannel.<init>(FMLEmbeddedChannel.java:27)
    	at cpw.mods.fml.common.network.FMLEmbeddedChannel.<init>(FMLEmbeddedChannel.java:23)
    	at cpw.mods.fml.common.network.NetworkRegistry.newChannel(NetworkRegistry.java:151)
    	at fr.irisium.irisiummod.network.packets.PacketPipeline.initialise(PacketPipeline.java:98)
    	at fr.irisium.irisiummod.IrisiumMod.init(IrisiumMod.java:125)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
    	at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
    	at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
    	at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
    	at com.google.common.eventbus.EventBus.post(EventBus.java:275)
    	at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
    	at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
    	at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
    	at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
    	at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
    	at com.google.common.eventbus.EventBus.post(EventBus.java:275)
    	at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
    	at cpw.mods.fml.common.Loader.initializeMods(Loader.java:737)
    	at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:311)
    	at net.minecraft.client.Minecraft.startGame(Minecraft.java:597)
    	at net.minecraft.client.Minecraft.run(Minecraft.java:942)
    	at net.minecraft.client.main.Main.main(Main.java:164)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    	at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
    	at GradleStart.main(Unknown Source)
    
    
    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------
    
    -- Head --
    Stacktrace:
    	at io.netty.channel.DefaultChannelPipeline.checkMultiplicity(DefaultChannelPipeline.java:461)
    	at io.netty.channel.DefaultChannelPipeline.addLast0(DefaultChannelPipeline.java:138)
    	at io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:131)
    	at io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:258)
    	at io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:245)
    	at io.netty.channel.embedded.EmbeddedChannel.<init>(EmbeddedChannel.java:79)
    	at cpw.mods.fml.common.network.FMLEmbeddedChannel.<init>(FMLEmbeddedChannel.java:27)
    	at cpw.mods.fml.common.network.FMLEmbeddedChannel.<init>(FMLEmbeddedChannel.java:23)
    	at cpw.mods.fml.common.network.NetworkRegistry.newChannel(NetworkRegistry.java:151)
    	at fr.irisium.irisiummod.network.packets.PacketPipeline.initialise(PacketPipeline.java:98)
    	at fr.irisium.irisiummod.IrisiumMod.init(IrisiumMod.java:125)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
    	at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
    	at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
    	at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
    	at com.google.common.eventbus.EventBus.post(EventBus.java:275)
    	at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
    	at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
    	at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
    	at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
    	at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
    	at com.google.common.eventbus.EventBus.post(EventBus.java:275)
    	at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
    	at cpw.mods.fml.common.Loader.initializeMods(Loader.java:737)
    	at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:311)
    	at net.minecraft.client.Minecraft.startGame(Minecraft.java:597)
    
    -- Initialization --
    Details:
    Stacktrace:
    	at net.minecraft.client.Minecraft.run(Minecraft.java:942)
    	at net.minecraft.client.main.Main.main(Main.java:164)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    	at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
    	at GradleStart.main(Unknown Source)
    
    -- System Details --
    Details:
    	Minecraft Version: 1.7.10
    	Operating System: Windows 8.1 (amd64) version 6.3
    	Java Version: 1.8.0_221, Oracle Corporation
    	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    	Memory: 619452056 bytes (590 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
    	JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
    	AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    	IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    	FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1614 4 mods loaded, 4 mods active
    	States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
    	UCHI	mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) 
    	UCHI	FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar) 
    	UCHI	Forge{10.13.4.1614} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar) 
    	UCHE	irisiummod{0.1} [IrisiumMod] (bin) 
    	GL info: ' Vendor: 'Intel' Version: '4.3.0 - Build 10.18.14.4264' Renderer: 'Intel(R) HD Graphics 4600'
    	Launched Version: 1.7.10
    	LWJGL: 2.9.1
    	OpenGL: Intel(R) HD Graphics 4600 GL version 4.3.0 - Build 10.18.14.4264, Intel
    	GL Caps: Using GL 1.3 multitexturing.
    Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
    Anisotropic filtering is supported and maximum anisotropy is 16.
    Shaders are available because OpenGL 2.1 is supported.
    
    	Is Modded: Definitely; Client brand changed to 'fml,forge'
    	Type: Client (map_client.txt)
    	Resource Packs: []
    	Current Language: English (US)
    	Profiler Position: N/A (disabled)
    	Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    	Anisotropic Filtering: Off (1)
    

    Merci d'avance !



  • Up


  • Moddeurs confirmés Rédacteurs Administrateurs

    Bonjour,
    Suis plutôt ce tutoriel : https://www.minecraftforgefrance.fr/topic/1000/1-7-2-le-network

    Ce que tu es en train de faire était très répandu au début de la 1.7.2 jusqu'à cpw signal qu'il avait un gros problème avec cette implémentation : elle cause des fuites de mémoire.



  • Bonjour,

    Toujours le même problème que j'arrive pas à régler, pourtant j'ai utilisé cette méthode dans un ancien mod est ça marcher très bien.
    Donc je comprend pas pourquoi là ça ne marche pas.

    Merci d'avance.


  • Moddeurs confirmés Rédacteurs Administrateurs

    Tu as changé ton système de paquet par celui expliqué dans le tutoriel que je t'ai envoyé ?



  • @robin4002 Non j'ai gardé l'ancien car c'était le même que j'avais utilisé et ça marcher et même un ami à moi qui fait du modding utilise cette méthode et pour lui ça marche. C'est pour ça que j'ai du mal comprendre pourquoi là ça ne marche pas.


  • Moddeurs confirmés Rédacteurs Administrateurs

    Non mais remplace-le.
    Car même quand cela fonctionne cette façon de faire cause une fuite de mémoire donc ce n'est PAS bon.



  • D'accord, je vais faire ça.

    Merci


Log in to reply