diff --git a/src/main/java/mc/protocol/Packet.java b/src/main/java/mc/protocol/Packet.java index f1ee9d7..2b3809a 100644 --- a/src/main/java/mc/protocol/Packet.java +++ b/src/main/java/mc/protocol/Packet.java @@ -1,5 +1,8 @@ package mc.protocol; +import mc.protocol.io.NetInputStream; +import mc.protocol.io.NetOutputStream; + public interface Packet { void readSelf(NetInputStream netInputStream); diff --git a/src/main/java/mc/protocol/State.java b/src/main/java/mc/protocol/State.java index bce5511..df5038a 100644 --- a/src/main/java/mc/protocol/State.java +++ b/src/main/java/mc/protocol/State.java @@ -2,10 +2,8 @@ package mc.protocol; import com.google.common.collect.BiMap; import com.google.common.collect.ImmutableBiMap; -import lombok.AccessLevel; import lombok.Getter; import lombok.RequiredArgsConstructor; -import lombok.Setter; import mc.protocol.handshake.client.HandshakePacket; import mc.protocol.status.client.StatusServerRequest; import mc.protocol.status.server.StatusServerResponse; @@ -13,20 +11,23 @@ import mc.protocol.status.server.StatusServerResponse; @RequiredArgsConstructor public enum State { - HANDSHAKING(-1){{ - setServerBoundPackets(ImmutableBiMap.of( - 0x00, HandshakePacket.class - )); - }}, + HANDSHAKING(-1, + // server bound + ImmutableBiMap.of( + 0x00, HandshakePacket.class + ) + ), PLAY(0), - STATUS(1){{ - setServerBoundPackets(ImmutableBiMap.of( - 0x00, StatusServerRequest.class - )); - setClientBoundPackets(ImmutableBiMap.of( - 0x00, StatusServerResponse.class - )); - }}, + STATUS(1, + // server bound + ImmutableBiMap.of( + 0x00, StatusServerRequest.class + ), + // client bound + ImmutableBiMap.of( + 0x00, StatusServerResponse.class + ) + ), LOGIN(2); public static State getById(int id) { @@ -42,11 +43,20 @@ public enum State { @Getter private final int id; - @Setter(value = AccessLevel.PROTECTED) + private BiMap> serverBoundPackets; + private BiMap> clientBoundPackets; - @Setter(value = AccessLevel.PROTECTED) - private BiMap> serverBoundPackets; + State(int id, BiMap> serverBoundPackets) { + this.id = id; + this.serverBoundPackets = serverBoundPackets; + } + + State(int id, BiMap> serverBoundPackets, BiMap> clientBoundPackets) { + this.id = id; + this.serverBoundPackets = serverBoundPackets; + this.clientBoundPackets = clientBoundPackets; + } public Class getPacketById(PacketDirection direction, int id) { if (direction == PacketDirection.CLIENT_BOUND) { diff --git a/src/main/java/mc/protocol/handshake/client/HandshakePacket.java b/src/main/java/mc/protocol/handshake/client/HandshakePacket.java index 2d2f148..3b94b12 100644 --- a/src/main/java/mc/protocol/handshake/client/HandshakePacket.java +++ b/src/main/java/mc/protocol/handshake/client/HandshakePacket.java @@ -1,10 +1,10 @@ package mc.protocol.handshake.client; import lombok.Data; -import mc.protocol.NetInputStream; -import mc.protocol.NetOutputStream; import mc.protocol.Packet; import mc.protocol.State; +import mc.protocol.io.NetInputStream; +import mc.protocol.io.NetOutputStream; @Data public class HandshakePacket implements Packet { diff --git a/src/main/java/mc/protocol/DecoderException.java b/src/main/java/mc/protocol/io/DecoderException.java similarity index 85% rename from src/main/java/mc/protocol/DecoderException.java rename to src/main/java/mc/protocol/io/DecoderException.java index ac45ea2..a30ee19 100644 --- a/src/main/java/mc/protocol/DecoderException.java +++ b/src/main/java/mc/protocol/io/DecoderException.java @@ -1,4 +1,4 @@ -package mc.protocol; +package mc.protocol.io; public class DecoderException extends RuntimeException { diff --git a/src/main/java/mc/protocol/NetInputStream.java b/src/main/java/mc/protocol/io/NetInputStream.java similarity index 96% rename from src/main/java/mc/protocol/NetInputStream.java rename to src/main/java/mc/protocol/io/NetInputStream.java index 968dfb8..fa2169e 100644 --- a/src/main/java/mc/protocol/NetInputStream.java +++ b/src/main/java/mc/protocol/io/NetInputStream.java @@ -1,4 +1,4 @@ -package mc.protocol; +package mc.protocol.io; import java.io.IOException; import java.io.InputStream; @@ -39,7 +39,7 @@ public abstract class NetInputStream extends InputStream { if (length == 0) { return ""; } else if (length > maxLength) { - throw new DecoderException("String length exceeds maximum length: " + length + " > " + maxLength); + throw new DecoderException("String length exceeds maximum length: " + length + " > " + maxLength); } else if (length < 0) { throw new DecoderException("String length less zero!"); } @@ -101,6 +101,8 @@ public abstract class NetInputStream extends InputStream { } public abstract byte readByte(); + public abstract int readBytes(byte[] buffer, int offset, int lengtn); + public abstract int readShort(); } diff --git a/src/main/java/mc/protocol/NetOutputStream.java b/src/main/java/mc/protocol/io/NetOutputStream.java similarity index 98% rename from src/main/java/mc/protocol/NetOutputStream.java rename to src/main/java/mc/protocol/io/NetOutputStream.java index aa0ca68..0435ad0 100644 --- a/src/main/java/mc/protocol/NetOutputStream.java +++ b/src/main/java/mc/protocol/io/NetOutputStream.java @@ -1,4 +1,4 @@ -package mc.protocol; +package mc.protocol.io; import java.io.IOException; import java.io.OutputStream; @@ -84,6 +84,8 @@ public abstract class NetOutputStream extends OutputStream { } public abstract void writeByte(int value); + public abstract void writeBytes(byte[] buffer, int offset, int lengtn); + public abstract void writeShort(int value); } diff --git a/src/main/java/mc/protocol/coder/ByteArrayNetOutputStream.java b/src/main/java/mc/protocol/io/coder/ByteArrayNetOutputStream.java similarity index 90% rename from src/main/java/mc/protocol/coder/ByteArrayNetOutputStream.java rename to src/main/java/mc/protocol/io/coder/ByteArrayNetOutputStream.java index 9329ffa..f42ee07 100644 --- a/src/main/java/mc/protocol/coder/ByteArrayNetOutputStream.java +++ b/src/main/java/mc/protocol/io/coder/ByteArrayNetOutputStream.java @@ -1,6 +1,6 @@ -package mc.protocol.coder; +package mc.protocol.io.coder; -import mc.protocol.NetOutputStream; +import mc.protocol.io.NetOutputStream; import java.io.ByteArrayOutputStream; diff --git a/src/main/java/mc/protocol/coder/ProtocolDecoder.java b/src/main/java/mc/protocol/io/coder/ProtocolDecoder.java similarity index 95% rename from src/main/java/mc/protocol/coder/ProtocolDecoder.java rename to src/main/java/mc/protocol/io/coder/ProtocolDecoder.java index 9715c7b..ff2b348 100644 --- a/src/main/java/mc/protocol/coder/ProtocolDecoder.java +++ b/src/main/java/mc/protocol/io/coder/ProtocolDecoder.java @@ -1,4 +1,4 @@ -package mc.protocol.coder; +package mc.protocol.io.coder; /* Packet format: @@ -13,10 +13,10 @@ https://wiki.vg/index.php?title=Protocol&oldid=7368#Without_compression */ import lombok.RequiredArgsConstructor; -import mc.protocol.NetInputStream; import mc.protocol.Packet; import mc.protocol.PacketDirection; import mc.protocol.State; +import mc.protocol.io.NetInputStream; import java.util.Objects; diff --git a/src/main/java/mc/protocol/coder/ProtocolEncoder.java b/src/main/java/mc/protocol/io/coder/ProtocolEncoder.java similarity index 86% rename from src/main/java/mc/protocol/coder/ProtocolEncoder.java rename to src/main/java/mc/protocol/io/coder/ProtocolEncoder.java index a30170f..d1c7731 100644 --- a/src/main/java/mc/protocol/coder/ProtocolEncoder.java +++ b/src/main/java/mc/protocol/io/coder/ProtocolEncoder.java @@ -1,7 +1,10 @@ -package mc.protocol.coder; +package mc.protocol.io.coder; import lombok.RequiredArgsConstructor; -import mc.protocol.*; +import mc.protocol.Packet; +import mc.protocol.PacketDirection; +import mc.protocol.State; +import mc.protocol.io.NetOutputStream; import java.util.Objects; diff --git a/src/main/java/mc/protocol/status/client/StatusServerRequest.java b/src/main/java/mc/protocol/status/client/StatusServerRequest.java index 4bf640a..eb94b10 100644 --- a/src/main/java/mc/protocol/status/client/StatusServerRequest.java +++ b/src/main/java/mc/protocol/status/client/StatusServerRequest.java @@ -1,8 +1,8 @@ package mc.protocol.status.client; -import mc.protocol.NetInputStream; -import mc.protocol.NetOutputStream; import mc.protocol.Packet; +import mc.protocol.io.NetInputStream; +import mc.protocol.io.NetOutputStream; public class StatusServerRequest implements Packet { diff --git a/src/main/java/mc/protocol/status/server/StatusServerResponse.java b/src/main/java/mc/protocol/status/server/StatusServerResponse.java index ea78013..2ad0c01 100644 --- a/src/main/java/mc/protocol/status/server/StatusServerResponse.java +++ b/src/main/java/mc/protocol/status/server/StatusServerResponse.java @@ -1,9 +1,9 @@ package mc.protocol.status.server; import lombok.Data; -import mc.protocol.NetInputStream; -import mc.protocol.NetOutputStream; import mc.protocol.Packet; +import mc.protocol.io.NetInputStream; +import mc.protocol.io.NetOutputStream; @Data public class StatusServerResponse implements Packet {