diff --git a/api/src/main/java/com/github/retrooper/packetevents/protocol/player/DiggingAction.java b/api/src/main/java/com/github/retrooper/packetevents/protocol/player/DiggingAction.java index 1e114c4bae..2e0ebe7efd 100644 --- a/api/src/main/java/com/github/retrooper/packetevents/protocol/player/DiggingAction.java +++ b/api/src/main/java/com/github/retrooper/packetevents/protocol/player/DiggingAction.java @@ -25,7 +25,8 @@ public enum DiggingAction { DROP_ITEM_STACK, DROP_ITEM, RELEASE_USE_ITEM, - SWAP_ITEM_WITH_OFFHAND; + SWAP_ITEM_WITH_OFFHAND, + UNKNOWN; private static final DiggingAction[] VALUES = values(); @@ -34,6 +35,9 @@ public int getId() { } public static DiggingAction getById(int id) { + if (id < 0 || id >= (VALUES.length - 1)) { + return UNKNOWN; + } return VALUES[id]; } } diff --git a/api/src/main/java/com/github/retrooper/packetevents/protocol/player/InteractionHand.java b/api/src/main/java/com/github/retrooper/packetevents/protocol/player/InteractionHand.java index f5d62fb745..24496002c2 100644 --- a/api/src/main/java/com/github/retrooper/packetevents/protocol/player/InteractionHand.java +++ b/api/src/main/java/com/github/retrooper/packetevents/protocol/player/InteractionHand.java @@ -26,7 +26,8 @@ */ public enum InteractionHand { MAIN_HAND, - OFF_HAND; + OFF_HAND, + UNKNOWN; private static final InteractionHand[] VALUES = values(); @@ -35,6 +36,9 @@ public int getId() { } public static InteractionHand getById(int id) { + if (id < 0 || id >= (VALUES.length - 1)) { + return UNKNOWN; + } return VALUES[id]; } } diff --git a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientAdvancementTab.java b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientAdvancementTab.java index c4c9084ce6..144095d305 100644 --- a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientAdvancementTab.java +++ b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientAdvancementTab.java @@ -78,11 +78,14 @@ public void setTabId(String tabID) { } public enum Action { - OPENED_TAB, CLOSED_SCREEN; + OPENED_TAB, CLOSED_SCREEN, UNKNOWN; private static final Action[] VALUES = values(); public static Action getById(int id) { + if (id < 0 || id >= (VALUES.length - 1)) { + return UNKNOWN; + } return VALUES[id]; } } diff --git a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientClientStatus.java b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientClientStatus.java index 1e5a897ae9..0b66ed68e8 100644 --- a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientClientStatus.java +++ b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientClientStatus.java @@ -70,11 +70,15 @@ public enum Action { REQUEST_STATS, // This only exists on 1.7.10 -> 1.15.2 - OPEN_INVENTORY_ACHIEVEMENT; + OPEN_INVENTORY_ACHIEVEMENT, + UNKNOWN; private static final Action[] VALUES = values(); public static Action getById(int index) { + if (index < 0 || index >= (VALUES.length - 1)) { + return UNKNOWN; + } return VALUES[index]; } } diff --git a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientInteractEntity.java b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientInteractEntity.java index 700f12ee29..6f380cf2c4 100644 --- a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientInteractEntity.java +++ b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientInteractEntity.java @@ -21,6 +21,8 @@ import com.github.retrooper.packetevents.event.PacketReceiveEvent; import com.github.retrooper.packetevents.manager.server.ServerVersion; import com.github.retrooper.packetevents.protocol.packettype.PacketType; +import com.github.retrooper.packetevents.protocol.player.DiggingAction; +import com.github.retrooper.packetevents.protocol.player.InteractAction; import com.github.retrooper.packetevents.protocol.player.InteractionHand; import com.github.retrooper.packetevents.util.Vector3f; import com.github.retrooper.packetevents.wrapper.PacketWrapper; @@ -57,14 +59,14 @@ public void read() { if (this.serverVersion.isOlderThanOrEquals(ServerVersion.V_1_7_10)) { this.entityID = readInt(); byte typeIndex = readByte(); - this.interactAction = InteractAction.VALUES[typeIndex]; + this.interactAction = InteractAction.getById(typeIndex); this.target = Optional.empty(); this.interactionHand = InteractionHand.MAIN_HAND; this.sneaking = Optional.empty(); } else { this.entityID = readVarInt(); int typeIndex = readVarInt(); - this.interactAction = InteractAction.VALUES[typeIndex]; + this.interactAction = InteractAction.getById(typeIndex); if (interactAction == InteractAction.INTERACT_AT) { float x = readFloat(); float y = readFloat(); @@ -164,7 +166,15 @@ public void setSneaking(Optional sneaking) { } public enum InteractAction { - INTERACT, ATTACK, INTERACT_AT; + INTERACT, ATTACK, INTERACT_AT, UNKNOWN; + public static final InteractAction[] VALUES = values(); + + public static InteractAction getById(int id) { + if (id < 0 || id >= (VALUES.length - 1)) { + return UNKNOWN; + } + return VALUES[id]; + } } } diff --git a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientPlayerDigging.java b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientPlayerDigging.java index 5ee2eb33a8..f7c84b7c83 100644 --- a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientPlayerDigging.java +++ b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientPlayerDigging.java @@ -20,6 +20,9 @@ import com.github.retrooper.packetevents.event.PacketReceiveEvent; import com.github.retrooper.packetevents.manager.server.ServerVersion; +import com.github.retrooper.packetevents.netty.buffer.ByteBufHelper; +import com.github.retrooper.packetevents.netty.buffer.ByteBufInputStream; +import com.github.retrooper.packetevents.netty.buffer.ByteBufOperator; import com.github.retrooper.packetevents.protocol.packettype.PacketType; import com.github.retrooper.packetevents.protocol.player.DiggingAction; import com.github.retrooper.packetevents.protocol.world.BlockFace;