diff --git a/src/main/java/net/minecraftforge/fml/common/network/FMLIndexedMessageToMessageCodec.java b/src/main/java/net/minecraftforge/fml/common/network/FMLIndexedMessageToMessageCodec.java index 1244a2ac01..17e9d09a5c 100644 --- a/src/main/java/net/minecraftforge/fml/common/network/FMLIndexedMessageToMessageCodec.java +++ b/src/main/java/net/minecraftforge/fml/common/network/FMLIndexedMessageToMessageCodec.java @@ -65,11 +65,17 @@ public abstract class FMLIndexedMessageToMessageCodec extends MessageToMessag @Override protected final void encode(ChannelHandlerContext ctx, A msg, List out) throws Exception { + String channel = ctx.channel().attr(NetworkRegistry.FML_CHANNEL).get(); + Class clazz = msg.getClass(); + if (!types.containsKey(clazz)) + { + throw new RuntimeException("Undefined discriminator for message type " + clazz.getSimpleName() + " in channel " + channel); + } + byte discriminator = types.get(clazz); PacketBuffer buffer = new PacketBuffer(Unpooled.buffer()); - byte discriminator = types.get(msg.getClass()); buffer.writeByte(discriminator); encodeInto(ctx, msg, buffer); - FMLProxyPacket proxy = new FMLProxyPacket(buffer/*.copy()*/, ctx.channel().attr(NetworkRegistry.FML_CHANNEL).get()); + FMLProxyPacket proxy = new FMLProxyPacket(buffer, channel); WeakReference ref = ctx.channel().attr(INBOUNDPACKETTRACKER).get().get(); FMLProxyPacket old = ref == null ? null : ref.get(); if (old != null)