diff --git a/common/src/main/java/us/myles/ViaVersion/api/type/Type.java b/common/src/main/java/us/myles/ViaVersion/api/type/Type.java index ca0dceb9d..25c6cd0ab 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/type/Type.java +++ b/common/src/main/java/us/myles/ViaVersion/api/type/Type.java @@ -14,7 +14,7 @@ import java.util.UUID; public abstract class Type implements ByteBufReader, ByteBufWriter { /* Defined Types */ public static final Type BYTE = new ByteType(); - public static final Type BYTE_ARRAY = new ByteArrayType(); + public static final Type BYTE_ARRAY = new ArrayType<>(Type.BYTE); public static final Type REMAINING_BYTES = new RemainingBytesType(); diff --git a/common/src/main/java/us/myles/ViaVersion/api/type/types/ByteArrayType.java b/common/src/main/java/us/myles/ViaVersion/api/type/types/ByteArrayType.java deleted file mode 100644 index 429e37062..000000000 --- a/common/src/main/java/us/myles/ViaVersion/api/type/types/ByteArrayType.java +++ /dev/null @@ -1,27 +0,0 @@ -package us.myles.ViaVersion.api.type.types; - -import com.google.common.base.Preconditions; -import io.netty.buffer.ByteBuf; -import us.myles.ViaVersion.api.type.Type; - -public class ByteArrayType extends Type { - public ByteArrayType() { - super("Byte Array", byte[].class); - } - - @Override - public byte[] read(ByteBuf buffer) throws Exception { - int len = Type.VAR_INT.read(buffer); - - Preconditions.checkArgument(buffer.isReadable(len), "Could not read %s bytes from buffer (have %s)", len, buffer.readableBytes()); - byte[] data = new byte[len]; - buffer.readBytes(data); - return data; - } - - @Override - public void write(ByteBuf buffer, byte[] object) throws Exception { - Type.VAR_INT.write(buffer, object.length); - buffer.writeBytes(object); - } -} diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java index 4bddfd9bd..3f10c4326 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java @@ -32,7 +32,7 @@ public class WorldPackets { private static final int VOID_AIR = MappingData.blockStateMappings.getNewBlock(8591); private static final int CAVE_AIR = MappingData.blockStateMappings.getNewBlock(8592); public static final int SERVERSIDE_VIEW_DISTANCE = 64; - private static final byte[] FULL_LIGHT = new byte[2048]; + private static final Byte[] FULL_LIGHT = new Byte[2048]; static { Arrays.fill(FULL_LIGHT, (byte) 0xff); @@ -242,14 +242,14 @@ public class WorldPackets { } continue; } - lightPacket.write(Type.BYTE_ARRAY, section.getSkyLight()); + lightPacket.write(Type.BYTE_ARRAY, fromPrimitiveArray(section.getSkyLight())); } if (chunk.isGroundUp()) lightPacket.write(Type.BYTE_ARRAY, FULL_LIGHT); // chunk above 255 for (ChunkSection section : chunk.getSections()) { if (section == null) continue; - lightPacket.write(Type.BYTE_ARRAY, section.getBlockLight()); + lightPacket.write(Type.BYTE_ARRAY, fromPrimitiveArray(section.getBlockLight())); } EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); @@ -268,6 +268,14 @@ public class WorldPackets { lightPacket.send(Protocol1_14To1_13_2.class, true, true); } + + private Byte[] fromPrimitiveArray(byte[] bytes) { + Byte[] newArray = new Byte[bytes.length]; + for (int i = 0; i < bytes.length; i++) { + newArray[i] = bytes[i]; + } + return newArray; + } }); } });