diff --git a/core/src/main/java/mc/core/network/NetInputStream.java b/core/src/main/java/mc/core/network/NetInputStream.java index 9ae1049..2c40cb6 100644 --- a/core/src/main/java/mc/core/network/NetInputStream.java +++ b/core/src/main/java/mc/core/network/NetInputStream.java @@ -1,22 +1,23 @@ -/* - * DmitriyMX - * 2018-07-25 - */ package mc.core.network; import lombok.Getter; import lombok.Setter; +import java.io.IOException; +import java.io.InputStream; import java.util.UUID; -public abstract class NetInputStream { +public abstract class NetInputStream extends InputStream { @Getter @Setter private int dataSize; public abstract boolean readBoolean(); public abstract byte readByte(); - public abstract void readBytes(byte[] buffer); + public int readBytes(byte[] buffer) { + return readBytes(buffer, 0, buffer.length); + } + public abstract int readBytes(byte[] buffer, int offset, int length); public abstract int readUnsignedByte(); public abstract int readUnsignedShort(); public abstract short readShort(); @@ -30,4 +31,25 @@ public abstract class NetInputStream { public abstract UUID readUUID(); public abstract void skipBytes(int count); + + @Override + public int read() throws IOException { + return readByte(); + } + + @Override + public int read(byte[] b) throws IOException { + return readBytes(b); + } + + @Override + public int read(byte[] b, int off, int len) throws IOException { + return readBytes(b, off, len); + } + + @Override + public long skip(long n) throws IOException { + skipBytes((int) n); + return n; + } } diff --git a/core/src/main/java/mc/core/network/NetOutputStream.java b/core/src/main/java/mc/core/network/NetOutputStream.java index 86c6f19..b7bf437 100644 --- a/core/src/main/java/mc/core/network/NetOutputStream.java +++ b/core/src/main/java/mc/core/network/NetOutputStream.java @@ -1,16 +1,17 @@ -/* - * DmitriyMX - * 2018-07-25 - */ package mc.core.network; +import java.io.IOException; +import java.io.OutputStream; import java.util.UUID; -public abstract class NetOutputStream { +public abstract class NetOutputStream extends OutputStream { public abstract void writeBoolean(boolean value); public abstract void writeByte(int value); public abstract void writeUnsignedByte(int value); - public abstract void writeBytes(byte[] buffer); + public void writeBytes(byte[] buffer) { + writeBytes(buffer, 0, buffer.length); + } + public abstract void writeBytes(byte[] buffer, int offset, int lengtn); public abstract void writeShort(int value); public abstract void writeInt(int value); public abstract void writeVarInt(int value); @@ -19,4 +20,19 @@ public abstract class NetOutputStream { public abstract void writeDouble(double value); public abstract void writeString(String value); public abstract void writeUUID(UUID uuid); + + @Override + public void write(int b) throws IOException { + writeByte(b); + } + + @Override + public void write(byte[] b) throws IOException { + writeBytes(b); + } + + @Override + public void write(byte[] b, int off, int len) throws IOException { + writeBytes(b, off, len); + } } diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/ByteArrayOutputNetStream.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/ByteArrayOutputNetStream.java index d496e05..6b5cbee 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/ByteArrayOutputNetStream.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/ByteArrayOutputNetStream.java @@ -1,7 +1,3 @@ -/* - * DmitriyMX - * 2018-06-10 - */ package mc.core.network.proto_1_12_2; import java.io.ByteArrayOutputStream; @@ -25,8 +21,8 @@ public class ByteArrayOutputNetStream extends NetOutputStream_p340 { } @Override - public void writeBytes(byte[] buffer) { - baos.write(buffer, 0, buffer.length); + public void writeBytes(byte[] buffer, int offset, int lengtn) { + baos.write(buffer, offset, lengtn); } @Override diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/NetOutputStream_p340.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/NetOutputStream_p340.java index cbc3239..b4bcdbd 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/NetOutputStream_p340.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/NetOutputStream_p340.java @@ -1,7 +1,3 @@ -/* - * DmitriyMX - * 2018-07-25 - */ package mc.core.network.proto_1_12_2; import lombok.extern.slf4j.Slf4j; @@ -22,8 +18,6 @@ public abstract class NetOutputStream_p340 extends NetOutputStream { writeByte(value); } - - @Override public void writeString(String value) { if (value.length() > Short.MAX_VALUE) { diff --git a/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/ByteArrayInputNetStream.java b/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/ByteArrayInputNetStream.java index c51beaf..865a76a 100644 --- a/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/ByteArrayInputNetStream.java +++ b/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/packets/ByteArrayInputNetStream.java @@ -1,9 +1,12 @@ package mc.core.network.proto_1_12_2.packets; +import lombok.extern.slf4j.Slf4j; import mc.core.network.proto_1_12_2.NetInputStream_p340; import java.io.ByteArrayInputStream; +import java.io.IOException; +@Slf4j public class ByteArrayInputNetStream extends NetInputStream_p340 { private ByteArrayInputStream bais; @@ -22,7 +25,17 @@ public class ByteArrayInputNetStream extends NetInputStream_p340 { } @Override - public void readBytes(byte[] buffer) { + public int readBytes(byte[] buffer, int offset, int length) { + try { + int read = bais.read(buffer, offset, length); + if (read < length) { + throw new IOException("not enough data"); + } + return read; + } catch (IOException e) { + log.error("", e); + return -1; + } } @Override @@ -47,7 +60,7 @@ public class ByteArrayInputNetStream extends NetInputStream_p340 { int ch3 = bais.read(); int ch4 = bais.read(); if ((ch1 | ch2 | ch3 | ch4) < 0) return 0; - return ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4 << 0)); + return ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4)); } @Override diff --git a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/wrappers/WrapperNetInputStream.java b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/wrappers/WrapperNetInputStream.java index 215fc68..4658c5b 100644 --- a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/wrappers/WrapperNetInputStream.java +++ b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/wrappers/WrapperNetInputStream.java @@ -1,7 +1,3 @@ -/* - * DmitriyMX - * 2018-07-25 - */ package mc.core.network.proto_1_12_2.netty.wrappers; import io.netty.buffer.ByteBuf; @@ -25,8 +21,9 @@ public class WrapperNetInputStream extends NetInputStream_p340 { } @Override - public void readBytes(byte[] buffer) { - byteBuf.readBytes(buffer); + public int readBytes(byte[] buffer, int offset, int length) { + byteBuf.readBytes(buffer, offset, length); + return length; } @Override diff --git a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/wrappers/WrapperNetOutputStream.java b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/wrappers/WrapperNetOutputStream.java index 539dc2c..b227994 100644 --- a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/wrappers/WrapperNetOutputStream.java +++ b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/wrappers/WrapperNetOutputStream.java @@ -1,7 +1,3 @@ -/* - * DmitriyMX - * 2018-07-25 - */ package mc.core.network.proto_1_12_2.netty.wrappers; import io.netty.buffer.ByteBuf; @@ -30,8 +26,8 @@ public class WrapperNetOutputStream extends NetOutputStream_p340 { } @Override - public void writeBytes(byte[] buffer) { - byteBuf.writeBytes(buffer); + public void writeBytes(byte[] buffer, int offset, int lengtn) { + byteBuf.writeBytes(buffer, offset, lengtn); } @Override