From fc799564ed6d601364bc6cfe51bbfd2721d847e9 Mon Sep 17 00:00:00 2001 From: Ben Staddon Date: Sun, 22 Apr 2018 22:42:05 +0100 Subject: [PATCH] Add checks for undefined packet discriminators when sending messages (#4890) --- .../network/FMLIndexedMessageToMessageCodec.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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)