diff --git a/protocol/src/main/java/mc/protocol/State.java b/protocol/src/main/java/mc/protocol/State.java index 924bbcc..3032957 100644 --- a/protocol/src/main/java/mc/protocol/State.java +++ b/protocol/src/main/java/mc/protocol/State.java @@ -46,6 +46,7 @@ public enum State { Map.of( 0x00, TeleportConfirmPacket.class, 0x04, ClientSettingsPacket.class, + 0x08, CCloseWindowPacket.class, 0x09, PluginMessagePacket.class, 0x0B, PingPacket.class, 0x0D, PlayerPositionPacket.class, diff --git a/protocol/src/main/java/mc/protocol/packets/client/CCloseWindowPacket.java b/protocol/src/main/java/mc/protocol/packets/client/CCloseWindowPacket.java new file mode 100644 index 0000000..2227b47 --- /dev/null +++ b/protocol/src/main/java/mc/protocol/packets/client/CCloseWindowPacket.java @@ -0,0 +1,46 @@ +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.packets.ClientSidePacket; +import mc.protocol.packets.server.OpenWindowPacket; + +/** + * Close window packet. + * + *
Структура пакета
+ *+ * | FIELD | TYPE | NOTES | + * |-----------|---------------|---------------------------| + * | Window ID | Unsigned Byte | ID окна, которое закрыли. | + *+ * + *
+ * Vanilla клиент отправляет данный пакет с "Window ID" = 0, при закрытии инвентаря игрока. + * Даже в тех случаях, когда для открытия инвентаря не посылался пакет {@link OpenWindowPacket} + *
+ * + * @see Close Window (serverbound) + * @see OpenWindowPacket + */ +@NoArgsConstructor +@Getter +@EqualsAndHashCode +@ToString +public class CCloseWindowPacket implements ClientSidePacket { + + private int windowId; + + @Override + public void readSelf(NetByteBuf netByteBuf) { + this.windowId = netByteBuf.readUnsignedByte(); + } + + @Override + public void passivate() { + this.windowId = 0; + } +} diff --git a/protocol/src/main/java/mc/protocol/packets/server/OpenWindowPacket.java b/protocol/src/main/java/mc/protocol/packets/server/OpenWindowPacket.java index f05c059..2c9502a 100644 --- a/protocol/src/main/java/mc/protocol/packets/server/OpenWindowPacket.java +++ b/protocol/src/main/java/mc/protocol/packets/server/OpenWindowPacket.java @@ -4,6 +4,7 @@ import lombok.Data; import mc.protocol.io.NetByteBuf; import mc.protocol.model.text.Text; import mc.protocol.packets.ServerSidePacket; +import mc.protocol.packets.client.CCloseWindowPacket; import mc.protocol.serializer.TextSerializer; /** @@ -24,6 +25,7 @@ import mc.protocol.serializer.TextSerializer; * * @see Open Window * @see Inventory + * @see CCloseWindowPacket */ @Data public class OpenWindowPacket implements ServerSidePacket {