From 6c51d8ee30ab45c9bbc824a03dd9b0d25866519f Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Sun, 18 Jul 2021 14:16:22 +0300 Subject: [PATCH] HandAnimationPacket --- protocol/src/main/java/mc/protocol/State.java | 3 +- .../play/client/ClientSettingsPacket.java | 6 +-- .../play/client/HandAnimationPacket.java | 42 +++++++++++++++++++ .../utils/{MainHand.java => Hand.java} | 4 +- 4 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 protocol/src/main/java/mc/protocol/packets/play/client/HandAnimationPacket.java rename protocol/src/main/java/mc/protocol/utils/{MainHand.java => Hand.java} (80%) diff --git a/protocol/src/main/java/mc/protocol/State.java b/protocol/src/main/java/mc/protocol/State.java index f41c80e..67ca2e3 100644 --- a/protocol/src/main/java/mc/protocol/State.java +++ b/protocol/src/main/java/mc/protocol/State.java @@ -64,7 +64,8 @@ public enum State { Map.entry(0x0F, PlayerLookPacket.class), Map.entry(0x13, CPlayerAbilitiesPacket.class), Map.entry(0x14, PlayerDiggingAndMorePacket.class), - Map.entry(0x15, EntityActionPacket.class) + Map.entry(0x15, EntityActionPacket.class), + Map.entry(0x1D, HandAnimationPacket.class) ), // server side Map.of( diff --git a/protocol/src/main/java/mc/protocol/packets/play/client/ClientSettingsPacket.java b/protocol/src/main/java/mc/protocol/packets/play/client/ClientSettingsPacket.java index 5c22527..0010605 100644 --- a/protocol/src/main/java/mc/protocol/packets/play/client/ClientSettingsPacket.java +++ b/protocol/src/main/java/mc/protocol/packets/play/client/ClientSettingsPacket.java @@ -2,7 +2,7 @@ package mc.protocol.packets.play.client; import lombok.*; import mc.protocol.utils.ChatMode; -import mc.protocol.utils.MainHand; +import mc.protocol.utils.Hand; import mc.protocol.buffer.NetByteBuf; import mc.protocol.packets.ClientSidePacket; @@ -52,7 +52,7 @@ public class ClientSettingsPacket implements ClientSidePacket { private boolean chatColors; @SuppressWarnings("java:S116") private int $displayedSkinPartsBitMask; - private MainHand mainHand; + private Hand mainHand; @Override public void readSelf(NetByteBuf netByteBuf) { @@ -61,7 +61,7 @@ public class ClientSettingsPacket implements ClientSidePacket { this.chatMode = ChatMode.valueById(netByteBuf.readVarInt()); this.chatColors = netByteBuf.readBoolean(); this.$displayedSkinPartsBitMask = netByteBuf.readUnsignedByte(); - this.mainHand = MainHand.valueById(netByteBuf.readVarInt()); + this.mainHand = Hand.valueById(netByteBuf.readVarInt()); } @Override diff --git a/protocol/src/main/java/mc/protocol/packets/play/client/HandAnimationPacket.java b/protocol/src/main/java/mc/protocol/packets/play/client/HandAnimationPacket.java new file mode 100644 index 0000000..c18a4f1 --- /dev/null +++ b/protocol/src/main/java/mc/protocol/packets/play/client/HandAnimationPacket.java @@ -0,0 +1,42 @@ +package mc.protocol.packets.play.client; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; +import mc.protocol.buffer.NetByteBuf; +import mc.protocol.packets.ClientSidePacket; +import mc.protocol.utils.Hand; + +/** + * Отправляется, когда Игрок взмахивает рукой. + * + *

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

+ *
+ * | FIELD | TYPE    | NOTES                        |
+ * |-------|---------|------------------------------|
+ * | Hand  | VarInt  | Используемая рука в анимации |
+ * |       |         | - 0: основная рука           |
+ * |       |         | - 1: левая рука              |
+ * 
+ * + * @see Animation (serverbound) + */ +@NoArgsConstructor +@Getter +@EqualsAndHashCode +@ToString +public class HandAnimationPacket implements ClientSidePacket { + + private Hand hand; + + @Override + public void readSelf(NetByteBuf netByteBuf) { + this.hand = Hand.valueById(netByteBuf.readVarInt()); + } + + @Override + public void passivate() { + this.hand = null; + } +} diff --git a/protocol/src/main/java/mc/protocol/utils/MainHand.java b/protocol/src/main/java/mc/protocol/utils/Hand.java similarity index 80% rename from protocol/src/main/java/mc/protocol/utils/MainHand.java rename to protocol/src/main/java/mc/protocol/utils/Hand.java index 5e30020..8c9f7d8 100644 --- a/protocol/src/main/java/mc/protocol/utils/MainHand.java +++ b/protocol/src/main/java/mc/protocol/utils/Hand.java @@ -2,12 +2,12 @@ package mc.protocol.utils; import javax.annotation.Nullable; -public enum MainHand { +public enum Hand { LEFT, RIGHT; @Nullable - public static MainHand valueById(int id) { + public static Hand valueById(int id) { // а зачем усложнять? //@formatter:off if (id == 0) return LEFT;