Эхо-пакет, которым проверяется качество соединения между Клиентом и Сервером.
* - *По спецификации:
- *Структура пакета
** | FIELD | TYPE | NOTES | @@ -22,25 +15,32 @@ import mc.protocol.io.NetByteBuf; * | Payload | Long | Любое уникальное число | ** - * @see Keep Alive + *
По спецификации:
+ ** | FIELD | TYPE | NOTES | * |-------------|--------|----------------------------------| - * | JSON Reason | String | Причина отключения. Опционально. | + * | JSON Reason | Text | Причина отключения. Опционально. | ** *
Пример JSON Reason
@@ -26,7 +25,7 @@ import mc.protocol.serializer.TextSerializer; * } * * - * @see Disconnect + * @see Disconnect (login) * @see State */ @Data @@ -39,6 +38,6 @@ public class DisconnectPacket implements ServerSidePacket { @Override public void writeSelf(NetByteBuf netByteBuf) { - netByteBuf.writeString(TextSerializer.toJsonObject(reason).toString()); + netByteBuf.writeText(reason); } } diff --git a/protocol/src/main/java/mc/protocol/packets/server/LoginSuccessPacket.java b/protocol-new/src/main/java/mc/protocol/packets/login/server/LoginSuccessPacket.java similarity index 86% rename from protocol/src/main/java/mc/protocol/packets/server/LoginSuccessPacket.java rename to protocol-new/src/main/java/mc/protocol/packets/login/server/LoginSuccessPacket.java index 9f8db49..e1e481f 100644 --- a/protocol/src/main/java/mc/protocol/packets/server/LoginSuccessPacket.java +++ b/protocol-new/src/main/java/mc/protocol/packets/login/server/LoginSuccessPacket.java @@ -1,4 +1,4 @@ -package mc.protocol.packets.server; +package mc.protocol.packets.login.server; import lombok.Data; import mc.protocol.io.NetByteBuf; @@ -27,7 +27,7 @@ public class LoginSuccessPacket implements ServerSidePacket { @Override public void writeSelf(NetByteBuf netByteBuf) { - netByteBuf.writeString(uuid.toString()); - netByteBuf.writeString(name); + netByteBuf.writeString(this.uuid.toString()); + netByteBuf.writeString(this.name); } } diff --git a/protocol/src/main/java/mc/protocol/packets/client/CPlayerPositionAndLookPacket.java b/protocol-new/src/main/java/mc/protocol/packets/play/client/CPlayerPositionAndLookPacket.java similarity index 98% rename from protocol/src/main/java/mc/protocol/packets/client/CPlayerPositionAndLookPacket.java rename to protocol-new/src/main/java/mc/protocol/packets/play/client/CPlayerPositionAndLookPacket.java index d7be871..8b5f801 100644 --- a/protocol/src/main/java/mc/protocol/packets/client/CPlayerPositionAndLookPacket.java +++ b/protocol-new/src/main/java/mc/protocol/packets/play/client/CPlayerPositionAndLookPacket.java @@ -1,4 +1,4 @@ -package mc.protocol.packets.client; +package mc.protocol.packets.play.client; import lombok.EqualsAndHashCode; import lombok.Getter; diff --git a/protocol/src/main/java/mc/protocol/packets/client/ClientSettingsPacket.java b/protocol-new/src/main/java/mc/protocol/packets/play/client/ClientSettingsPacket.java similarity index 98% rename from protocol/src/main/java/mc/protocol/packets/client/ClientSettingsPacket.java rename to protocol-new/src/main/java/mc/protocol/packets/play/client/ClientSettingsPacket.java index b22914d..497fb1d 100644 --- a/protocol/src/main/java/mc/protocol/packets/client/ClientSettingsPacket.java +++ b/protocol-new/src/main/java/mc/protocol/packets/play/client/ClientSettingsPacket.java @@ -1,4 +1,4 @@ -package mc.protocol.packets.client; +package mc.protocol.packets.play.client; import lombok.*; import mc.protocol.utils.ChatMode; diff --git a/protocol/src/main/java/mc/protocol/packets/client/EntityActionPacket.java b/protocol-new/src/main/java/mc/protocol/packets/play/client/EntityActionPacket.java similarity index 67% rename from protocol/src/main/java/mc/protocol/packets/client/EntityActionPacket.java rename to protocol-new/src/main/java/mc/protocol/packets/play/client/EntityActionPacket.java index 807dd4c..f537a43 100644 --- a/protocol/src/main/java/mc/protocol/packets/client/EntityActionPacket.java +++ b/protocol-new/src/main/java/mc/protocol/packets/play/client/EntityActionPacket.java @@ -1,12 +1,10 @@ -package mc.protocol.packets.client; +package mc.protocol.packets.play.client; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.ToString; +import lombok.*; import mc.protocol.io.NetByteBuf; import mc.protocol.packets.ClientSidePacket; -import mc.protocol.utils.EntityActionAction; + +import javax.annotation.Nullable; /** * Entity Action packet. @@ -31,7 +29,7 @@ import mc.protocol.utils.EntityActionAction; public class EntityActionPacket implements ClientSidePacket { private Integer entityId; - private EntityActionAction action; + private Action action; private Integer jumpBoost; @Override @@ -40,7 +38,7 @@ public class EntityActionPacket implements ClientSidePacket { int actionId = netByteBuf.readVarInt(); this.jumpBoost = netByteBuf.readVarInt(); - this.action = EntityActionAction.valueOfCode(actionId); + this.action = Action.valueOfCode(actionId); } @Override @@ -49,4 +47,31 @@ public class EntityActionPacket implements ClientSidePacket { this.action = null; this.jumpBoost = null; } + + @RequiredArgsConstructor + public enum Action { + START_SNEAKING(0), + STOP_SNEAKING(1), + LEAVE_BED(2), + START_SPRINTING(3), + STOP_SPRINTING(4), + START_JUMP_WITH_HORSE(5), + STOP_JUMP_WITH_HORSE(6), + OPEN_HORSE_INVENTORY(7), + START_FLYING_WITH_ELYTRA(8); + + @Nullable + public static Action valueOfCode(int code) { + for (Action action : Action.values()) { + if (action.code == code) { + return action; + } + } + + return null; + } + + @Getter + private final int code; + } } diff --git a/protocol/src/main/java/mc/protocol/packets/client/PlayerLookPacket.java b/protocol-new/src/main/java/mc/protocol/packets/play/client/PlayerLookPacket.java similarity index 97% rename from protocol/src/main/java/mc/protocol/packets/client/PlayerLookPacket.java rename to protocol-new/src/main/java/mc/protocol/packets/play/client/PlayerLookPacket.java index 35568fa..5d24ddc 100644 --- a/protocol/src/main/java/mc/protocol/packets/client/PlayerLookPacket.java +++ b/protocol-new/src/main/java/mc/protocol/packets/play/client/PlayerLookPacket.java @@ -1,4 +1,4 @@ -package mc.protocol.packets.client; +package mc.protocol.packets.play.client; import lombok.EqualsAndHashCode; import lombok.Getter; diff --git a/protocol/src/main/java/mc/protocol/packets/client/PlayerPositionPacket.java b/protocol-new/src/main/java/mc/protocol/packets/play/client/PlayerPositionPacket.java similarity index 97% rename from protocol/src/main/java/mc/protocol/packets/client/PlayerPositionPacket.java rename to protocol-new/src/main/java/mc/protocol/packets/play/client/PlayerPositionPacket.java index 3be5633..7939faa 100644 --- a/protocol/src/main/java/mc/protocol/packets/client/PlayerPositionPacket.java +++ b/protocol-new/src/main/java/mc/protocol/packets/play/client/PlayerPositionPacket.java @@ -1,4 +1,4 @@ -package mc.protocol.packets.client; +package mc.protocol.packets.play.client; import lombok.EqualsAndHashCode; import lombok.Getter; diff --git a/protocol/src/main/java/mc/protocol/packets/client/PluginMessagePacket.java b/protocol-new/src/main/java/mc/protocol/packets/play/client/PluginMessagePacket.java similarity index 97% rename from protocol/src/main/java/mc/protocol/packets/client/PluginMessagePacket.java rename to protocol-new/src/main/java/mc/protocol/packets/play/client/PluginMessagePacket.java index 2ae5ab0..6a89caa 100644 --- a/protocol/src/main/java/mc/protocol/packets/client/PluginMessagePacket.java +++ b/protocol-new/src/main/java/mc/protocol/packets/play/client/PluginMessagePacket.java @@ -1,4 +1,4 @@ -package mc.protocol.packets.client; +package mc.protocol.packets.play.client; import lombok.EqualsAndHashCode; import lombok.Getter; diff --git a/protocol/src/main/java/mc/protocol/packets/client/TeleportConfirmPacket.java b/protocol-new/src/main/java/mc/protocol/packets/play/client/TeleportConfirmPacket.java similarity index 86% rename from protocol/src/main/java/mc/protocol/packets/client/TeleportConfirmPacket.java rename to protocol-new/src/main/java/mc/protocol/packets/play/client/TeleportConfirmPacket.java index fd120e9..47c0834 100644 --- a/protocol/src/main/java/mc/protocol/packets/client/TeleportConfirmPacket.java +++ b/protocol-new/src/main/java/mc/protocol/packets/play/client/TeleportConfirmPacket.java @@ -1,4 +1,4 @@ -package mc.protocol.packets.client; +package mc.protocol.packets.play.client; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -6,15 +6,15 @@ import lombok.NoArgsConstructor; import lombok.ToString; import mc.protocol.io.NetByteBuf; import mc.protocol.packets.ClientSidePacket; -import mc.protocol.packets.server.SPlayerPositionAndLookPacket; +import mc.protocol.packets.play.server.SPlayerPositionAndLookPacket; /** * Teleport сonfirm packet. * *Структура пакета
*
- * | FIELD | TYPE | NOTES |
- * |-------------|--------|-----------------------------------------------------------|
+ * | FIELD | TYPE | NOTES |
+ * |-------------|--------|------------------------------------------------------------|
* | Teleport ID | VarInt | ID, который был выдан пакетом {@link SPlayerPositionAndLookPacket} |
*
*
diff --git a/protocol/src/main/java/mc/protocol/packets/server/ChunkDataPacket.java b/protocol-new/src/main/java/mc/protocol/packets/play/server/ChunkDataPacket.java
similarity index 99%
rename from protocol/src/main/java/mc/protocol/packets/server/ChunkDataPacket.java
rename to protocol-new/src/main/java/mc/protocol/packets/play/server/ChunkDataPacket.java
index cfcac8d..62c48c3 100644
--- a/protocol/src/main/java/mc/protocol/packets/server/ChunkDataPacket.java
+++ b/protocol-new/src/main/java/mc/protocol/packets/play/server/ChunkDataPacket.java
@@ -1,4 +1,4 @@
-package mc.protocol.packets.server;
+package mc.protocol.packets.play.server;
import io.netty.buffer.Unpooled;
import lombok.Data;
diff --git a/protocol/src/main/java/mc/protocol/packets/server/JoinGamePacket.java b/protocol-new/src/main/java/mc/protocol/packets/play/server/JoinGamePacket.java
similarity index 98%
rename from protocol/src/main/java/mc/protocol/packets/server/JoinGamePacket.java
rename to protocol-new/src/main/java/mc/protocol/packets/play/server/JoinGamePacket.java
index a427359..c3e2ebe 100644
--- a/protocol/src/main/java/mc/protocol/packets/server/JoinGamePacket.java
+++ b/protocol-new/src/main/java/mc/protocol/packets/play/server/JoinGamePacket.java
@@ -1,4 +1,4 @@
-package mc.protocol.packets.server;
+package mc.protocol.packets.play.server;
import lombok.Data;
import mc.protocol.utils.Difficulty;
diff --git a/protocol/src/main/java/mc/protocol/packets/server/PlayerAbilitiesPacket.java b/protocol-new/src/main/java/mc/protocol/packets/play/server/PlayerAbilitiesPacket.java
similarity index 97%
rename from protocol/src/main/java/mc/protocol/packets/server/PlayerAbilitiesPacket.java
rename to protocol-new/src/main/java/mc/protocol/packets/play/server/PlayerAbilitiesPacket.java
index e2c084a..b4eb69c 100644
--- a/protocol/src/main/java/mc/protocol/packets/server/PlayerAbilitiesPacket.java
+++ b/protocol-new/src/main/java/mc/protocol/packets/play/server/PlayerAbilitiesPacket.java
@@ -1,4 +1,4 @@
-package mc.protocol.packets.server;
+package mc.protocol.packets.play.server;
import lombok.Data;
import mc.protocol.io.NetByteBuf;
diff --git a/protocol/src/main/java/mc/protocol/packets/server/SPlayerPositionAndLookPacket.java b/protocol-new/src/main/java/mc/protocol/packets/play/server/SPlayerPositionAndLookPacket.java
similarity index 96%
rename from protocol/src/main/java/mc/protocol/packets/server/SPlayerPositionAndLookPacket.java
rename to protocol-new/src/main/java/mc/protocol/packets/play/server/SPlayerPositionAndLookPacket.java
index d9ceac4..f4a54ec 100644
--- a/protocol/src/main/java/mc/protocol/packets/server/SPlayerPositionAndLookPacket.java
+++ b/protocol-new/src/main/java/mc/protocol/packets/play/server/SPlayerPositionAndLookPacket.java
@@ -1,11 +1,11 @@
-package mc.protocol.packets.server;
+package mc.protocol.packets.play.server;
import lombok.Data;
import mc.protocol.io.NetByteBuf;
import mc.protocol.model.Location;
import mc.protocol.model.Look;
import mc.protocol.packets.ServerSidePacket;
-import mc.protocol.packets.client.TeleportConfirmPacket;
+import mc.protocol.packets.play.client.TeleportConfirmPacket;
/**
* Установка позиции и угла осмотра Игрока.
diff --git a/protocol/src/main/java/mc/protocol/packets/server/SpawnPositionPacket.java b/protocol-new/src/main/java/mc/protocol/packets/play/server/SpawnPositionPacket.java
similarity index 96%
rename from protocol/src/main/java/mc/protocol/packets/server/SpawnPositionPacket.java
rename to protocol-new/src/main/java/mc/protocol/packets/play/server/SpawnPositionPacket.java
index 41a3d10..3393adb 100644
--- a/protocol/src/main/java/mc/protocol/packets/server/SpawnPositionPacket.java
+++ b/protocol-new/src/main/java/mc/protocol/packets/play/server/SpawnPositionPacket.java
@@ -1,4 +1,4 @@
-package mc.protocol.packets.server;
+package mc.protocol.packets.play.server;
import lombok.Data;
import mc.protocol.io.NetByteBuf;
diff --git a/protocol-new/src/main/java/mc/protocol/packets/status/client/StatusServerRequestPacket.java b/protocol-new/src/main/java/mc/protocol/packets/status/client/StatusServerRequestPacket.java
new file mode 100644
index 0000000..9dee695
--- /dev/null
+++ b/protocol-new/src/main/java/mc/protocol/packets/status/client/StatusServerRequestPacket.java
@@ -0,0 +1,34 @@
+package mc.protocol.packets.status.client;
+
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+import mc.protocol.io.NetByteBuf;
+import mc.protocol.packets.ClientSidePacket;
+import mc.protocol.packets.ServerSidePacket;
+
+/**
+ * Status server packet, request.
+ *
+ * Клиент запрашивает получение информации о сервере
+ */ +@NoArgsConstructor +@EqualsAndHashCode(callSuper = false) +@ToString +public class StatusServerRequestPacket implements ClientSidePacket, ServerSidePacket { + + @Override + public void readSelf(NetByteBuf netByteBuf) { + // empty + } + + @Override + public void writeSelf(NetByteBuf netByteBuf) { + // empty + } + + @Override + public void passivate() { + // pass + } +} diff --git a/protocol/src/main/java/mc/protocol/packets/server/StatusServerResponse.java b/protocol-new/src/main/java/mc/protocol/packets/status/server/StatusServerResponse.java similarity index 86% rename from protocol/src/main/java/mc/protocol/packets/server/StatusServerResponse.java rename to protocol-new/src/main/java/mc/protocol/packets/status/server/StatusServerResponse.java index 35973c1..544c10f 100644 --- a/protocol/src/main/java/mc/protocol/packets/server/StatusServerResponse.java +++ b/protocol-new/src/main/java/mc/protocol/packets/status/server/StatusServerResponse.java @@ -1,10 +1,8 @@ -package mc.protocol.packets.server; +package mc.protocol.packets.status.server; import lombok.Data; import mc.protocol.io.NetByteBuf; -import mc.protocol.model.ServerInfo; import mc.protocol.packets.ServerSidePacket; -import mc.protocol.serializer.ServerInfoSerializer; /** * Status server packet, response. @@ -52,10 +50,10 @@ public class StatusServerResponse implements ServerSidePacket { /** * Информация о серере. */ - private ServerInfo info; + private String info; @Override public void writeSelf(NetByteBuf netByteBuf) { - netByteBuf.writeString(ServerInfoSerializer.toJsonObject(info).toString()); + netByteBuf.writeString(info); } } diff --git a/protocol/src/main/java/mc/protocol/utils/ChatMode.java b/protocol-new/src/main/java/mc/protocol/utils/ChatMode.java similarity index 83% rename from protocol/src/main/java/mc/protocol/utils/ChatMode.java rename to protocol-new/src/main/java/mc/protocol/utils/ChatMode.java index 992862a..eec0881 100644 --- a/protocol/src/main/java/mc/protocol/utils/ChatMode.java +++ b/protocol-new/src/main/java/mc/protocol/utils/ChatMode.java @@ -11,10 +11,10 @@ public enum ChatMode { public static ChatMode valueById(int id) { // а зачем усложнять? //@formatter:off - if (id == 1) return FULL; + if (id == 1) return FULL; else if (id == 2) return COMMANDS_ONLY; else if (id == 3) return HIDDEN; - else return null; + else return null; //@formatter:on } } diff --git a/protocol/src/main/java/mc/protocol/utils/Difficulty.java b/protocol-new/src/main/java/mc/protocol/utils/Difficulty.java similarity index 100% rename from protocol/src/main/java/mc/protocol/utils/Difficulty.java rename to protocol-new/src/main/java/mc/protocol/utils/Difficulty.java diff --git a/protocol/src/main/java/mc/protocol/utils/GameMode.java b/protocol-new/src/main/java/mc/protocol/utils/GameMode.java similarity index 100% rename from protocol/src/main/java/mc/protocol/utils/GameMode.java rename to protocol-new/src/main/java/mc/protocol/utils/GameMode.java diff --git a/protocol/src/main/java/mc/protocol/utils/LevelType.java b/protocol-new/src/main/java/mc/protocol/utils/LevelType.java similarity index 100% rename from protocol/src/main/java/mc/protocol/utils/LevelType.java rename to protocol-new/src/main/java/mc/protocol/utils/LevelType.java diff --git a/protocol/src/main/java/mc/protocol/utils/MainHand.java b/protocol-new/src/main/java/mc/protocol/utils/MainHand.java similarity index 80% rename from protocol/src/main/java/mc/protocol/utils/MainHand.java rename to protocol-new/src/main/java/mc/protocol/utils/MainHand.java index 3dec589..5e30020 100644 --- a/protocol/src/main/java/mc/protocol/utils/MainHand.java +++ b/protocol-new/src/main/java/mc/protocol/utils/MainHand.java @@ -10,9 +10,9 @@ public enum MainHand { public static MainHand valueById(int id) { // а зачем усложнять? //@formatter:off - if (id == 0) return LEFT; + if (id == 0) return LEFT; else if (id == 1) return RIGHT; - else return null; + else return null; //@formatter:on } } diff --git a/protocol/src/main/java/mc/protocol/State.java b/protocol/src/main/java/mc/protocol/State.java deleted file mode 100644 index a998fde..0000000 --- a/protocol/src/main/java/mc/protocol/State.java +++ /dev/null @@ -1,100 +0,0 @@ -package mc.protocol; - -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import mc.protocol.packets.ClientSidePacket; -import mc.protocol.packets.Packet; -import mc.protocol.packets.KeepAlivePacket; -import mc.protocol.packets.ServerSidePacket; -import mc.protocol.packets.client.*; -import mc.protocol.packets.server.*; - -import javax.annotation.Nullable; -import java.util.Collections; -import java.util.Map; - -@RequiredArgsConstructor -public enum State { - - HANDSHAKING(-1, - // client side - Map.of(0x00, HandshakePacket.class) - ), - STATUS(1, - // client side - Map.of( - 0x00, StatusServerRequestPacket.class, - 0x01, KeepAlivePacket.class - ), - // server side - Map.of( - StatusServerResponse.class, 0x00, - KeepAlivePacket.class, 0x01 - ) - ), - LOGIN(2, - // server bound - Map.of(0x00, LoginStartPacket.class), - // client bound - Map.of( - DisconnectPacket.class, 0x00, - LoginSuccessPacket.class, 0x02 - ) - ), - PLAY(3, - // server bound - Map.of( - 0x00, TeleportConfirmPacket.class, - 0x04, ClientSettingsPacket.class, - 0x09, PluginMessagePacket.class, - 0x0B, KeepAlivePacket.class, - 0x0D, PlayerPositionPacket.class, - 0x0E, CPlayerPositionAndLookPacket.class, - 0x0F, PlayerLookPacket.class, - 0x15, EntityActionPacket.class - ), - // client bound - Map.of( - KeepAlivePacket.class, 0x1F, - ChunkDataPacket.class, 0x20, - JoinGamePacket.class, 0x23, - PlayerAbilitiesPacket.class,0x2C, - SPlayerPositionAndLookPacket.class, 0x2F, - SpawnPositionPacket.class, 0x46 - ) - ); - - @Nullable - public static State getById(int id) { - for (State state : State.values()) { - if (state.id == id) { - return state; - } - } - - return null; - } - - @Getter - private final int id; - - @Getter - private final MapКлиент запрашивает получение информации о сервере
- */ -@NoArgsConstructor -@EqualsAndHashCode(callSuper = false) -@ToString -public class StatusServerRequestPacket extends EmptyPacket { - -} diff --git a/protocol/src/main/java/mc/protocol/utils/EntityActionAction.java b/protocol/src/main/java/mc/protocol/utils/EntityActionAction.java deleted file mode 100644 index 549cea2..0000000 --- a/protocol/src/main/java/mc/protocol/utils/EntityActionAction.java +++ /dev/null @@ -1,33 +0,0 @@ -package mc.protocol.utils; - -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -import javax.annotation.Nullable; - -@RequiredArgsConstructor -public enum EntityActionAction { - START_SNEAKING(0), - STOP_SNEAKING(1), - LEAVE_BED(2), - START_SPRINTING(3), - STOP_SPRINTING(4), - START_JUMP_WITH_HORSE(5), - STOP_JUMP_WITH_HORSE(6), - OPEN_HORSE_INVENTORY(7), - START_FLYING_WITH_ELYTRA(8); - - @Nullable - public static EntityActionAction valueOfCode(int code) { - for (EntityActionAction action : EntityActionAction.values()) { - if (action.code == code) { - return action; - } - } - - return null; - } - - @Getter - private final int code; -}