From 5317672631f30e1c9655f0bb28dd8b158deea2fb Mon Sep 17 00:00:00 2001 From: Christian Date: Fri, 3 Jan 2014 22:57:36 -0500 Subject: [PATCH] Add a utility method for finding the channel handler name based on type. Should fix naming weirdnesses. --- .../fml/common/network/FMLEmbeddedChannel.java | 16 ++++++++++++++++ .../network/internal/FMLNetworkHandler.java | 12 +++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/main/java/cpw/mods/fml/common/network/FMLEmbeddedChannel.java b/src/main/java/cpw/mods/fml/common/network/FMLEmbeddedChannel.java index 6a78904725..0f96063dde 100644 --- a/src/main/java/cpw/mods/fml/common/network/FMLEmbeddedChannel.java +++ b/src/main/java/cpw/mods/fml/common/network/FMLEmbeddedChannel.java @@ -1,5 +1,6 @@ package cpw.mods.fml.common.network; +import java.util.Map.Entry; import net.minecraft.network.Packet; import io.netty.channel.ChannelHandler; import io.netty.channel.embedded.EmbeddedChannel; @@ -7,6 +8,7 @@ import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.ModContainer; import cpw.mods.fml.common.network.FMLOutboundHandler.OutboundTarget; import cpw.mods.fml.common.network.internal.FMLProxyPacket; +import cpw.mods.fml.common.network.internal.FMLRuntimeCodec; import cpw.mods.fml.relauncher.Side; /** @@ -49,4 +51,18 @@ public class FMLEmbeddedChannel extends EmbeddedChannel { attr(FMLOutboundHandler.FML_MESSAGETARGET).set(outboundTarget); return pkt; } + + public String findChannelHandlerNameForType(Class type) + { + String targetName = null; + for (Entry entry : pipeline()) + { + if (FMLRuntimeCodec.class.isInstance(entry.getValue())) + { + targetName = entry.getKey(); + break; + } + } + return targetName; + } } \ No newline at end of file diff --git a/src/main/java/cpw/mods/fml/common/network/internal/FMLNetworkHandler.java b/src/main/java/cpw/mods/fml/common/network/internal/FMLNetworkHandler.java index eabf4e12ba..3f291671d6 100644 --- a/src/main/java/cpw/mods/fml/common/network/internal/FMLNetworkHandler.java +++ b/src/main/java/cpw/mods/fml/common/network/internal/FMLNetworkHandler.java @@ -12,14 +12,13 @@ package cpw.mods.fml.common.network.internal; +import io.netty.channel.ChannelPipeline; import io.netty.channel.embedded.EmbeddedChannel; - import java.util.ArrayList; import java.util.EnumMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; - import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -28,11 +27,8 @@ import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.server.management.ServerConfigurationManager; import net.minecraft.world.World; - import org.apache.logging.log4j.core.helpers.Integers; - import com.google.common.collect.Lists; - import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLContainer; import cpw.mods.fml.common.FMLLog; @@ -149,8 +145,10 @@ public class FMLNetworkHandler @SideOnly(Side.CLIENT) private static void addClientHandlers() { - channelPair.get(Side.CLIENT).pipeline().addAfter("FMLRuntimeCodec#0", "GuiHandler", new OpenGuiHandler()); - channelPair.get(Side.CLIENT).pipeline().addAfter("FMLRuntimeCodec#0", "EntitySpawnHandler", new EntitySpawnHandler()); + ChannelPipeline pipeline = channelPair.get(Side.CLIENT).pipeline(); + String targetName = channelPair.get(Side.CLIENT).findChannelHandlerNameForType(FMLRuntimeCodec.class); + pipeline.addAfter(targetName, "GuiHandler", new OpenGuiHandler()); + pipeline.addAfter(targetName, "EntitySpawnHandler", new EntitySpawnHandler()); } public static void registerChannel(FMLContainer container, Side side) {