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;