From 531b0b97c13f44a9e8eafd840d405801b3fe66cd Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 3 May 2021 00:16:27 +0300 Subject: [PATCH] PlayerPositionPacket --- protocol/src/main/java/mc/protocol/State.java | 1 + .../client/CPlayerPositionAndLookPacket.java | 3 +- .../packets/client/PlayerPositionPacket.java | 49 +++++++++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 protocol/src/main/java/mc/protocol/packets/client/PlayerPositionPacket.java diff --git a/protocol/src/main/java/mc/protocol/State.java b/protocol/src/main/java/mc/protocol/State.java index ea15576..4940521 100644 --- a/protocol/src/main/java/mc/protocol/State.java +++ b/protocol/src/main/java/mc/protocol/State.java @@ -47,6 +47,7 @@ public enum State { 0x00, TeleportConfirmPacket.class, 0x04, ClientSettingsPacket.class, 0x09, PluginMessagePacket.class, + 0x0D, PlayerPositionPacket.class, 0x0E, CPlayerPositionAndLookPacket.class ), // client bound diff --git a/protocol/src/main/java/mc/protocol/packets/client/CPlayerPositionAndLookPacket.java b/protocol/src/main/java/mc/protocol/packets/client/CPlayerPositionAndLookPacket.java index d0f5036..ed5c002 100644 --- a/protocol/src/main/java/mc/protocol/packets/client/CPlayerPositionAndLookPacket.java +++ b/protocol/src/main/java/mc/protocol/packets/client/CPlayerPositionAndLookPacket.java @@ -10,7 +10,7 @@ import mc.protocol.model.Look; import mc.protocol.packets.ClientSidePacket; /** - * Клиент сообщает о движении Игрока. + * Клиент сообщает о движении и повороте головы Игрока. * *

Структура пакета

*
@@ -35,7 +35,6 @@ public class CPlayerPositionAndLookPacket implements ClientSidePacket {
 
 	private Location position;
 	private Look look;
-	@SuppressWarnings("java:S116")
 	private boolean onGround;
 
 	@Override
diff --git a/protocol/src/main/java/mc/protocol/packets/client/PlayerPositionPacket.java b/protocol/src/main/java/mc/protocol/packets/client/PlayerPositionPacket.java
new file mode 100644
index 0000000..abbc609
--- /dev/null
+++ b/protocol/src/main/java/mc/protocol/packets/client/PlayerPositionPacket.java
@@ -0,0 +1,49 @@
+package mc.protocol.packets.client;
+
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+import mc.protocol.io.NetByteBuf;
+import mc.protocol.model.Location;
+import mc.protocol.packets.ClientSidePacket;
+
+/**
+ * Клиент сообщает о движении Игрока.
+ *
+ * 

Структура пакета

+ *
+ * | FIELD     | TYPE    | NOTES                               |
+ * |-----------|---------|-------------------------------------|
+ * | X         | Double  | Абсолютная позиция по X             |
+ * | Feet Y    | Double  | Абсолютная позиция ног по Y.        |
+ * |           |         | Голова находиться выше на 1.62f     |
+ * | Z         | Double  | Абсолютная позиция по Z             |
+ * | On Ground | Boolean | true, если Игрок находится на земле |
+ * 
+ * + * @see Player Position + */ +@NoArgsConstructor +@Getter +@EqualsAndHashCode +@ToString +public class PlayerPositionPacket implements ClientSidePacket { + + private Location position; + private boolean onGround; + + @Override + public void readSelf(NetByteBuf netByteBuf) { + double x = netByteBuf.readDouble(); + double y = netByteBuf.readDouble(); + double z = netByteBuf.readDouble(); + this.position = new Location(x, y, z); + + this.onGround = netByteBuf.readBoolean(); + } + + public double getYPositionHead() { + return this.position.getY() + 1.62f; + } +}