diff --git a/src/main/java/net/packet/ByteBufInPacket.java b/src/main/java/net/packet/ByteBufInPacket.java index 02c8f3cb41..d1b9f4f87e 100644 --- a/src/main/java/net/packet/ByteBufInPacket.java +++ b/src/main/java/net/packet/ByteBufInPacket.java @@ -1,6 +1,7 @@ package net.packet; import io.netty.buffer.ByteBuf; +import io.netty.buffer.ByteBufUtil; import java.awt.*; @@ -13,10 +14,7 @@ public class ByteBufInPacket implements InPacket { @Override public byte[] getBytes() { - byte[] bytes = new byte[byteBuf.readableBytes()]; - int readerIndex = byteBuf.readerIndex(); - byteBuf.getBytes(readerIndex, bytes); - return bytes; + return ByteBufUtil.getBytes(byteBuf); } @Override diff --git a/src/main/java/net/packet/ByteBufOutPacket.java b/src/main/java/net/packet/ByteBufOutPacket.java index 5fc77f3c3d..5aa7a20b79 100644 --- a/src/main/java/net/packet/ByteBufOutPacket.java +++ b/src/main/java/net/packet/ByteBufOutPacket.java @@ -1,6 +1,7 @@ package net.packet; import io.netty.buffer.ByteBuf; +import io.netty.buffer.ByteBufUtil; import io.netty.buffer.Unpooled; import net.jcip.annotations.NotThreadSafe; import net.opcodes.SendOpcode; @@ -25,10 +26,7 @@ public class ByteBufOutPacket implements OutPacket { @Override public byte[] getBytes() { - byte[] bytes = new byte[byteBuf.readableBytes()]; - int readerIndex = byteBuf.readerIndex(); - byteBuf.getBytes(readerIndex, bytes); - return bytes; + return ByteBufUtil.getBytes(byteBuf); } @Override diff --git a/src/test/java/net/packet/ByteBufInPacketTest.java b/src/test/java/net/packet/ByteBufInPacketTest.java index df5c88d68d..1ed28e1d56 100644 --- a/src/test/java/net/packet/ByteBufInPacketTest.java +++ b/src/test/java/net/packet/ByteBufInPacketTest.java @@ -8,6 +8,7 @@ import org.junit.jupiter.api.Test; import java.awt.*; import java.nio.charset.StandardCharsets; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; class ByteBufInPacketTest { @@ -167,4 +168,26 @@ class ByteBufInPacketTest { inPacket.seek(5); assertEquals(5, inPacket.getPosition()); } + + @Test + void getBytes() { + givenWrittenBytes(20, 19, 21, 18, 22); + + byte[] bytes = inPacket.getBytes(); + + assertArrayEquals(new byte[]{20, 19, 21, 18, 22}, bytes); + } + + @Test + void whenGetBytes_shouldBeRepeatable() { + givenWrittenBytes(1, 2, 3, 4, 5); + + byte[] bytes = inPacket.getBytes(); + assertEquals(5, bytes.length); + + byte[] sameBytes = inPacket.getBytes(); + assertEquals(5, sameBytes.length); + + assertArrayEquals(bytes, sameBytes); + } } \ No newline at end of file