diff --git a/src/main/java/detrav/net/DetravNetwork.java b/src/main/java/detrav/net/DetravNetwork.java index 30bdb23157e..be3a440456c 100644 --- a/src/main/java/detrav/net/DetravNetwork.java +++ b/src/main/java/detrav/net/DetravNetwork.java @@ -38,9 +38,10 @@ protected void encode(ChannelHandlerContext ctx, DetravPacket msg, List ByteBuf buf = Unpooled.buffer(); buf.writeByte(msg.getPacketID()); msg.encode(new ByteBufOutputStream(buf)); + // FMLProxyPacket sends the whole backing array of its buffer, so give it one holding only the written bytes out.add( new FMLProxyPacket( - buf, + buf.copy(), ctx.channel() .attr(NetworkRegistry.FML_CHANNEL) .get())); diff --git a/src/main/java/gregtech/api/net/GTPacketLMACraftingFX.java b/src/main/java/gregtech/api/net/GTPacketLMACraftingFX.java index 35537e75066..5f2a7eeaa9c 100644 --- a/src/main/java/gregtech/api/net/GTPacketLMACraftingFX.java +++ b/src/main/java/gregtech/api/net/GTPacketLMACraftingFX.java @@ -51,7 +51,9 @@ public void encode(ByteBuf buffer) { try { ByteBuf stackBuffer = Unpooled.buffer(); itemStack.writeToPacket(stackBuffer); - byte[] data = stackBuffer.array(); + // only the written bytes: the backing array also holds the buffer's unused capacity + byte[] data = new byte[stackBuffer.readableBytes()]; + stackBuffer.readBytes(data); buffer.writeInt(data.length); buffer.writeBytes(data); } catch (IOException e) { diff --git a/src/main/java/gregtech/common/GTNetwork.java b/src/main/java/gregtech/common/GTNetwork.java index f118f7120e0..892f498669f 100644 --- a/src/main/java/gregtech/common/GTNetwork.java +++ b/src/main/java/gregtech/common/GTNetwork.java @@ -55,9 +55,10 @@ protected void encode(ChannelHandlerContext aContext, GTPacket aPacket, List