diff --git a/src/main/java/net/minecraftforge/fml/common/network/handshake/NetworkDispatcher.java b/src/main/java/net/minecraftforge/fml/common/network/handshake/NetworkDispatcher.java index a31c38f846..cf37465851 100644 --- a/src/main/java/net/minecraftforge/fml/common/network/handshake/NetworkDispatcher.java +++ b/src/main/java/net/minecraftforge/fml/common/network/handshake/NetworkDispatcher.java @@ -238,7 +238,7 @@ public class NetworkDispatcher extends SimpleChannelInboundHandler imple manager.closeChannel(new ChatComponentText("Handshake Complete review log file for details.")); scm.initializeConnectionToPlayer(manager, player, serverHandler); } - + @Override protected void channelRead0(ChannelHandlerContext ctx, Packet msg) throws Exception { @@ -430,6 +430,8 @@ public class NetworkDispatcher extends SimpleChannelInboundHandler imple public void sendProxy(FMLProxyPacket msg) { + if (!manager.isChannelOpen()) + msg = msg.copy(); manager.sendPacket(msg); } diff --git a/src/main/java/net/minecraftforge/fml/common/network/internal/FMLProxyPacket.java b/src/main/java/net/minecraftforge/fml/common/network/internal/FMLProxyPacket.java index fa215c3ad1..50aba05cc1 100644 --- a/src/main/java/net/minecraftforge/fml/common/network/internal/FMLProxyPacket.java +++ b/src/main/java/net/minecraftforge/fml/common/network/internal/FMLProxyPacket.java @@ -186,4 +186,13 @@ public class FMLProxyPacket implements Packet { { return target; } + + public FMLProxyPacket copy() + { + FMLProxyPacket pkt = new FMLProxyPacket(new PacketBuffer(payload.duplicate()), channel); + pkt.dispatcher = dispatcher; + pkt.netHandler = netHandler; + pkt.target = target; + return pkt; + } }