From 93bdd2ee99183fb524650425977e59a078e76458 Mon Sep 17 00:00:00 2001 From: NoJokeFNA Date: Wed, 11 May 2022 15:48:31 +0200 Subject: [PATCH 1/7] feat: added WrapperPlayClientRecipeBookData (& RecipeState) --- .../protocol/recipe/RecipeState.java | 8 ++ .../WrapperPlayClientRecipeBookData.java | 134 ++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 api/src/main/java/com/github/retrooper/packetevents/protocol/recipe/RecipeState.java create mode 100644 api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java diff --git a/api/src/main/java/com/github/retrooper/packetevents/protocol/recipe/RecipeState.java b/api/src/main/java/com/github/retrooper/packetevents/protocol/recipe/RecipeState.java new file mode 100644 index 0000000000..25ef29088d --- /dev/null +++ b/api/src/main/java/com/github/retrooper/packetevents/protocol/recipe/RecipeState.java @@ -0,0 +1,8 @@ +package com.github.retrooper.packetevents.protocol.recipe; + +public enum RecipeState { + DISPLAYED_RECIPE, + RECIPE_BOOK_STATE; + + public static final RecipeState[] VALUES = values(); +} diff --git a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java new file mode 100644 index 0000000000..d1e1d9d3dc --- /dev/null +++ b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java @@ -0,0 +1,134 @@ +/* + * This file is part of packetevents - https://github.com/retrooper/packetevents + * Copyright (C) 2021 retrooper and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.github.retrooper.packetevents.wrapper.play.client; + +import com.github.retrooper.packetevents.event.PacketReceiveEvent; +import com.github.retrooper.packetevents.protocol.packettype.PacketType; +import com.github.retrooper.packetevents.protocol.recipe.RecipeState; +import com.github.retrooper.packetevents.wrapper.PacketWrapper; + +import java.util.Optional; + +public class WrapperPlayClientRecipeBookData extends PacketWrapper { + private RecipeState state; + private Optional recipeId; + private boolean craftingRecipeBookOpen; + private boolean craftingRecipeBookFilterActive; + private boolean smeltingRecipeBookOpen; + private boolean smeltingRecipeBookFilterActive; + + public WrapperPlayClientRecipeBookData(PacketReceiveEvent event) { + super(event); + } + + public WrapperPlayClientRecipeBookData(RecipeState state, Optional recipeId, boolean craftingRecipeBookOpen, boolean craftingRecipeBookFilterActive, boolean smeltingRecipeBookOpen, boolean smeltingRecipeBookFilterActive) { + super(PacketType.Play.Client.RECIPE_BOOK_DATA); + this.state = state; + this.recipeId = recipeId; + this.craftingRecipeBookOpen = craftingRecipeBookOpen; + this.craftingRecipeBookFilterActive = craftingRecipeBookFilterActive; + this.smeltingRecipeBookOpen = smeltingRecipeBookOpen; + this.smeltingRecipeBookFilterActive = smeltingRecipeBookFilterActive; + } + + @Override + public void read() { + this.recipeId = Optional.empty(); + this.state = RecipeState.VALUES[readVarInt()]; + if (this.state == RecipeState.DISPLAYED_RECIPE) { + this.recipeId = Optional.of(readString()); + } else { + this.craftingRecipeBookOpen = readBoolean(); + this.craftingRecipeBookFilterActive = readBoolean(); + this.smeltingRecipeBookOpen = readBoolean(); + this.smeltingRecipeBookFilterActive = readBoolean(); + } + } + + @Override + public void write() { + writeVarInt(this.state.ordinal()); + if (this.state == RecipeState.DISPLAYED_RECIPE) { + writeString(this.recipeId.orElse(null)); + } else { + writeBoolean(this.craftingRecipeBookOpen); + writeBoolean(this.craftingRecipeBookFilterActive); + writeBoolean(this.smeltingRecipeBookOpen); + writeBoolean(this.smeltingRecipeBookFilterActive); + } + } + + @Override + public void copy(WrapperPlayClientRecipeBookData wrapper) { + this.state = wrapper.state; + this.recipeId = wrapper.recipeId; + this.craftingRecipeBookOpen = wrapper.craftingRecipeBookOpen; + this.craftingRecipeBookFilterActive = wrapper.craftingRecipeBookFilterActive; + this.smeltingRecipeBookOpen = wrapper.smeltingRecipeBookOpen; + this.smeltingRecipeBookFilterActive = wrapper.smeltingRecipeBookFilterActive; + } + + public RecipeState getState() { + return state; + } + + public void setState(RecipeState state) { + this.state = state; + } + + public Optional getRecipeId() { + return recipeId; + } + + public void setRecipeId(Optional recipeId) { + this.recipeId = recipeId; + } + + public boolean isCraftingRecipeBookOpen() { + return craftingRecipeBookOpen; + } + + public void setCraftingRecipeBookOpen(boolean craftingRecipeBookOpen) { + this.craftingRecipeBookOpen = craftingRecipeBookOpen; + } + + public boolean isCraftingRecipeBookFilterActive() { + return craftingRecipeBookFilterActive; + } + + public void setCraftingRecipeBookFilterActive(boolean craftingRecipeBookFilterActive) { + this.craftingRecipeBookFilterActive = craftingRecipeBookFilterActive; + } + + public boolean isSmeltingRecipeBookOpen() { + return smeltingRecipeBookOpen; + } + + public void setSmeltingRecipeBookOpen(boolean smeltingRecipeBookOpen) { + this.smeltingRecipeBookOpen = smeltingRecipeBookOpen; + } + + public boolean isSmeltingRecipeBookFilterActive() { + return smeltingRecipeBookFilterActive; + } + + public void setSmeltingRecipeBookFilterActive(boolean smeltingRecipeBookFilterActive) { + this.smeltingRecipeBookFilterActive = smeltingRecipeBookFilterActive; + } +} From 3d5a110184e7dcde6c22ab12a226ee8d920488bd Mon Sep 17 00:00:00 2001 From: NoJokeFNA Date: Wed, 11 May 2022 15:49:36 +0200 Subject: [PATCH 2/7] feat: added missing copyright text --- .../protocol/recipe/RecipeState.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/api/src/main/java/com/github/retrooper/packetevents/protocol/recipe/RecipeState.java b/api/src/main/java/com/github/retrooper/packetevents/protocol/recipe/RecipeState.java index 25ef29088d..c350943c78 100644 --- a/api/src/main/java/com/github/retrooper/packetevents/protocol/recipe/RecipeState.java +++ b/api/src/main/java/com/github/retrooper/packetevents/protocol/recipe/RecipeState.java @@ -1,3 +1,21 @@ +/* + * This file is part of packetevents - https://github.com/retrooper/packetevents + * Copyright (C) 2021 retrooper and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + package com.github.retrooper.packetevents.protocol.recipe; public enum RecipeState { From 2d61a24052d0cf852e4e29ffe47cafa7a5f94166 Mon Sep 17 00:00:00 2001 From: NoJokeFNA Date: Wed, 11 May 2022 15:52:23 +0200 Subject: [PATCH 3/7] change: removed useless $orElse call --- .../wrapper/play/client/WrapperPlayClientRecipeBookData.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java index d1e1d9d3dc..4ccf2894fc 100644 --- a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java +++ b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java @@ -65,7 +65,7 @@ public void read() { public void write() { writeVarInt(this.state.ordinal()); if (this.state == RecipeState.DISPLAYED_RECIPE) { - writeString(this.recipeId.orElse(null)); + writeString(this.recipeId.get()); } else { writeBoolean(this.craftingRecipeBookOpen); writeBoolean(this.craftingRecipeBookFilterActive); From 8a48132487f1c29b322be09da2eba09bb34b479c Mon Sep 17 00:00:00 2001 From: NoJokeFNA Date: Thu, 12 May 2022 11:34:56 +0200 Subject: [PATCH 4/7] fix: fixed higher versions support (not tested yet) --- .../WrapperPlayClientRecipeBookData.java | 135 +++++++++++++++--- 1 file changed, 119 insertions(+), 16 deletions(-) diff --git a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java index 4ccf2894fc..2b2e937436 100644 --- a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java +++ b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java @@ -19,45 +19,91 @@ package com.github.retrooper.packetevents.wrapper.play.client; 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.recipe.RecipeState; import com.github.retrooper.packetevents.wrapper.PacketWrapper; import java.util.Optional; +import java.util.OptionalInt; public class WrapperPlayClientRecipeBookData extends PacketWrapper { private RecipeState state; - private Optional recipeId; + private Optional recipeIdModern; + private OptionalInt recipeIdLegacy; private boolean craftingRecipeBookOpen; private boolean craftingRecipeBookFilterActive; private boolean smeltingRecipeBookOpen; private boolean smeltingRecipeBookFilterActive; + private boolean blastFurnaceRecipeBookOpen; + private boolean blastFurnaceRecipeBookFilterActive; + private boolean smokerRecipeBookOpen; + private boolean smokerRecipeBookFilterActive; public WrapperPlayClientRecipeBookData(PacketReceiveEvent event) { super(event); } - public WrapperPlayClientRecipeBookData(RecipeState state, Optional recipeId, boolean craftingRecipeBookOpen, boolean craftingRecipeBookFilterActive, boolean smeltingRecipeBookOpen, boolean smeltingRecipeBookFilterActive) { + public WrapperPlayClientRecipeBookData(RecipeState state, OptionalInt recipeIdLegacy, boolean craftingRecipeBookOpen, boolean craftingRecipeBookFilterActive) { super(PacketType.Play.Client.RECIPE_BOOK_DATA); this.state = state; - this.recipeId = recipeId; + this.recipeIdLegacy = recipeIdLegacy; + this.craftingRecipeBookOpen = craftingRecipeBookOpen; + this.craftingRecipeBookFilterActive = craftingRecipeBookFilterActive; + } + + public WrapperPlayClientRecipeBookData(RecipeState state, Optional recipeIdModern, boolean craftingRecipeBookOpen, + boolean craftingRecipeBookFilterActive, boolean smeltingRecipeBookOpen, boolean smeltingRecipeBookFilterActive) { + super(PacketType.Play.Client.RECIPE_BOOK_DATA); + this.state = state; + this.recipeIdModern = recipeIdModern; this.craftingRecipeBookOpen = craftingRecipeBookOpen; this.craftingRecipeBookFilterActive = craftingRecipeBookFilterActive; this.smeltingRecipeBookOpen = smeltingRecipeBookOpen; this.smeltingRecipeBookFilterActive = smeltingRecipeBookFilterActive; } + public WrapperPlayClientRecipeBookData(RecipeState state, Optional recipeIdModern, boolean craftingRecipeBookOpen, + boolean craftingRecipeBookFilterActive, boolean smeltingRecipeBookOpen, boolean smeltingRecipeBookFilterActive, + boolean blastFurnaceRecipeBookOpen, boolean blastFurnaceRecipeBookFilterActive, boolean smokerRecipeBookOpen, + boolean smokerRecipeBookFilterActive) { + super(PacketType.Play.Client.RECIPE_BOOK_DATA); + this.state = state; + this.recipeIdModern = recipeIdModern; + this.craftingRecipeBookOpen = craftingRecipeBookOpen; + this.craftingRecipeBookFilterActive = craftingRecipeBookFilterActive; + this.smeltingRecipeBookOpen = smeltingRecipeBookOpen; + this.smeltingRecipeBookFilterActive = smeltingRecipeBookFilterActive; + this.blastFurnaceRecipeBookOpen = blastFurnaceRecipeBookOpen; + this.blastFurnaceRecipeBookFilterActive = blastFurnaceRecipeBookFilterActive; + this.smokerRecipeBookOpen = smokerRecipeBookOpen; + this.smokerRecipeBookFilterActive = smokerRecipeBookFilterActive; + } + @Override public void read() { - this.recipeId = Optional.empty(); + this.recipeIdModern = Optional.empty(); + this.recipeIdLegacy = OptionalInt.empty(); this.state = RecipeState.VALUES[readVarInt()]; if (this.state == RecipeState.DISPLAYED_RECIPE) { - this.recipeId = Optional.of(readString()); + if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_13)) { + this.recipeIdModern = Optional.of(readString()); + } else { + this.recipeIdLegacy = OptionalInt.of(readVarInt()); + } } else { this.craftingRecipeBookOpen = readBoolean(); this.craftingRecipeBookFilterActive = readBoolean(); - this.smeltingRecipeBookOpen = readBoolean(); - this.smeltingRecipeBookFilterActive = readBoolean(); + if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_13)) { + this.smeltingRecipeBookOpen = readBoolean(); + this.smeltingRecipeBookFilterActive = readBoolean(); + } + if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_14)) { + this.blastFurnaceRecipeBookOpen = readBoolean(); + this.blastFurnaceRecipeBookFilterActive = readBoolean(); + this.smokerRecipeBookOpen = readBoolean(); + this.smokerRecipeBookFilterActive = readBoolean(); + } } } @@ -65,23 +111,40 @@ public void read() { public void write() { writeVarInt(this.state.ordinal()); if (this.state == RecipeState.DISPLAYED_RECIPE) { - writeString(this.recipeId.get()); + if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_13)) { + writeString(this.recipeIdModern.get()); + } else { + writeVarInt(this.recipeIdLegacy.getAsInt()); + } } else { writeBoolean(this.craftingRecipeBookOpen); writeBoolean(this.craftingRecipeBookFilterActive); - writeBoolean(this.smeltingRecipeBookOpen); - writeBoolean(this.smeltingRecipeBookFilterActive); + if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_13)) { + writeBoolean(this.smeltingRecipeBookOpen); + writeBoolean(this.smeltingRecipeBookFilterActive); + } + if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_14)) { + writeBoolean(this.blastFurnaceRecipeBookOpen); + writeBoolean(this.blastFurnaceRecipeBookFilterActive); + writeBoolean(this.smokerRecipeBookOpen); + writeBoolean(this.smokerRecipeBookFilterActive); + } } } @Override public void copy(WrapperPlayClientRecipeBookData wrapper) { this.state = wrapper.state; - this.recipeId = wrapper.recipeId; + this.recipeIdModern = wrapper.recipeIdModern; + this.recipeIdLegacy = wrapper.recipeIdLegacy; this.craftingRecipeBookOpen = wrapper.craftingRecipeBookOpen; this.craftingRecipeBookFilterActive = wrapper.craftingRecipeBookFilterActive; this.smeltingRecipeBookOpen = wrapper.smeltingRecipeBookOpen; this.smeltingRecipeBookFilterActive = wrapper.smeltingRecipeBookFilterActive; + this.blastFurnaceRecipeBookOpen = wrapper.blastFurnaceRecipeBookOpen; + this.blastFurnaceRecipeBookFilterActive = wrapper.blastFurnaceRecipeBookFilterActive; + this.smokerRecipeBookOpen = wrapper.smokerRecipeBookOpen; + this.smokerRecipeBookFilterActive = wrapper.smokerRecipeBookFilterActive; } public RecipeState getState() { @@ -92,12 +155,20 @@ public void setState(RecipeState state) { this.state = state; } - public Optional getRecipeId() { - return recipeId; + public Optional getRecipeIdModern() { + return recipeIdModern; + } + + public void setRecipeIdModern(Optional recipeIdModern) { + this.recipeIdModern = recipeIdModern; + } + + public OptionalInt getRecipeIdLegacy() { + return recipeIdLegacy; } - public void setRecipeId(Optional recipeId) { - this.recipeId = recipeId; + public void setRecipeIdLegacy(OptionalInt recipeIdLegacy) { + this.recipeIdLegacy = recipeIdLegacy; } public boolean isCraftingRecipeBookOpen() { @@ -131,4 +202,36 @@ public boolean isSmeltingRecipeBookFilterActive() { public void setSmeltingRecipeBookFilterActive(boolean smeltingRecipeBookFilterActive) { this.smeltingRecipeBookFilterActive = smeltingRecipeBookFilterActive; } -} + + public boolean isBlastFurnaceRecipeBookOpen() { + return blastFurnaceRecipeBookOpen; + } + + public void setBlastFurnaceRecipeBookOpen(boolean blastFurnaceRecipeBookOpen) { + this.blastFurnaceRecipeBookOpen = blastFurnaceRecipeBookOpen; + } + + public boolean isBlastFurnaceRecipeBookFilterActive() { + return blastFurnaceRecipeBookFilterActive; + } + + public void setBlastFurnaceRecipeBookFilterActive(boolean blastFurnaceRecipeBookFilterActive) { + this.blastFurnaceRecipeBookFilterActive = blastFurnaceRecipeBookFilterActive; + } + + public boolean isSmokerRecipeBookOpen() { + return smokerRecipeBookOpen; + } + + public void setSmokerRecipeBookOpen(boolean smokerRecipeBookOpen) { + this.smokerRecipeBookOpen = smokerRecipeBookOpen; + } + + public boolean isSmokerRecipeBookFilterActive() { + return smokerRecipeBookFilterActive; + } + + public void setSmokerRecipeBookFilterActive(boolean smokerRecipeBookFilterActive) { + this.smokerRecipeBookFilterActive = smokerRecipeBookFilterActive; + } +} \ No newline at end of file From ea96f3ed2664936c54ad24c5838b2979f716e6fa Mon Sep 17 00:00:00 2001 From: NoJokeFNA Date: Thu, 19 May 2022 18:14:29 +0200 Subject: [PATCH 5/7] fix: fixed code-style --- .../WrapperPlayClientRecipeBookData.java | 410 +++++++++--------- 1 file changed, 204 insertions(+), 206 deletions(-) diff --git a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java index 2b2e937436..63e80e322a 100644 --- a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java +++ b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java @@ -28,210 +28,208 @@ import java.util.OptionalInt; public class WrapperPlayClientRecipeBookData extends PacketWrapper { - private RecipeState state; - private Optional recipeIdModern; - private OptionalInt recipeIdLegacy; - private boolean craftingRecipeBookOpen; - private boolean craftingRecipeBookFilterActive; - private boolean smeltingRecipeBookOpen; - private boolean smeltingRecipeBookFilterActive; - private boolean blastFurnaceRecipeBookOpen; - private boolean blastFurnaceRecipeBookFilterActive; - private boolean smokerRecipeBookOpen; - private boolean smokerRecipeBookFilterActive; - - public WrapperPlayClientRecipeBookData(PacketReceiveEvent event) { - super(event); - } - - public WrapperPlayClientRecipeBookData(RecipeState state, OptionalInt recipeIdLegacy, boolean craftingRecipeBookOpen, boolean craftingRecipeBookFilterActive) { - super(PacketType.Play.Client.RECIPE_BOOK_DATA); - this.state = state; - this.recipeIdLegacy = recipeIdLegacy; - this.craftingRecipeBookOpen = craftingRecipeBookOpen; - this.craftingRecipeBookFilterActive = craftingRecipeBookFilterActive; - } - - public WrapperPlayClientRecipeBookData(RecipeState state, Optional recipeIdModern, boolean craftingRecipeBookOpen, - boolean craftingRecipeBookFilterActive, boolean smeltingRecipeBookOpen, boolean smeltingRecipeBookFilterActive) { - super(PacketType.Play.Client.RECIPE_BOOK_DATA); - this.state = state; - this.recipeIdModern = recipeIdModern; - this.craftingRecipeBookOpen = craftingRecipeBookOpen; - this.craftingRecipeBookFilterActive = craftingRecipeBookFilterActive; - this.smeltingRecipeBookOpen = smeltingRecipeBookOpen; - this.smeltingRecipeBookFilterActive = smeltingRecipeBookFilterActive; - } - - public WrapperPlayClientRecipeBookData(RecipeState state, Optional recipeIdModern, boolean craftingRecipeBookOpen, - boolean craftingRecipeBookFilterActive, boolean smeltingRecipeBookOpen, boolean smeltingRecipeBookFilterActive, - boolean blastFurnaceRecipeBookOpen, boolean blastFurnaceRecipeBookFilterActive, boolean smokerRecipeBookOpen, - boolean smokerRecipeBookFilterActive) { - super(PacketType.Play.Client.RECIPE_BOOK_DATA); - this.state = state; - this.recipeIdModern = recipeIdModern; - this.craftingRecipeBookOpen = craftingRecipeBookOpen; - this.craftingRecipeBookFilterActive = craftingRecipeBookFilterActive; - this.smeltingRecipeBookOpen = smeltingRecipeBookOpen; - this.smeltingRecipeBookFilterActive = smeltingRecipeBookFilterActive; - this.blastFurnaceRecipeBookOpen = blastFurnaceRecipeBookOpen; - this.blastFurnaceRecipeBookFilterActive = blastFurnaceRecipeBookFilterActive; - this.smokerRecipeBookOpen = smokerRecipeBookOpen; - this.smokerRecipeBookFilterActive = smokerRecipeBookFilterActive; - } - - @Override - public void read() { - this.recipeIdModern = Optional.empty(); - this.recipeIdLegacy = OptionalInt.empty(); - this.state = RecipeState.VALUES[readVarInt()]; - if (this.state == RecipeState.DISPLAYED_RECIPE) { - if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_13)) { - this.recipeIdModern = Optional.of(readString()); - } else { - this.recipeIdLegacy = OptionalInt.of(readVarInt()); - } - } else { - this.craftingRecipeBookOpen = readBoolean(); - this.craftingRecipeBookFilterActive = readBoolean(); - if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_13)) { - this.smeltingRecipeBookOpen = readBoolean(); - this.smeltingRecipeBookFilterActive = readBoolean(); - } - if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_14)) { - this.blastFurnaceRecipeBookOpen = readBoolean(); - this.blastFurnaceRecipeBookFilterActive = readBoolean(); - this.smokerRecipeBookOpen = readBoolean(); - this.smokerRecipeBookFilterActive = readBoolean(); - } - } - } - - @Override - public void write() { - writeVarInt(this.state.ordinal()); - if (this.state == RecipeState.DISPLAYED_RECIPE) { - if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_13)) { - writeString(this.recipeIdModern.get()); - } else { - writeVarInt(this.recipeIdLegacy.getAsInt()); - } - } else { - writeBoolean(this.craftingRecipeBookOpen); - writeBoolean(this.craftingRecipeBookFilterActive); - if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_13)) { - writeBoolean(this.smeltingRecipeBookOpen); - writeBoolean(this.smeltingRecipeBookFilterActive); - } - if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_14)) { - writeBoolean(this.blastFurnaceRecipeBookOpen); - writeBoolean(this.blastFurnaceRecipeBookFilterActive); - writeBoolean(this.smokerRecipeBookOpen); - writeBoolean(this.smokerRecipeBookFilterActive); - } - } - } - - @Override - public void copy(WrapperPlayClientRecipeBookData wrapper) { - this.state = wrapper.state; - this.recipeIdModern = wrapper.recipeIdModern; - this.recipeIdLegacy = wrapper.recipeIdLegacy; - this.craftingRecipeBookOpen = wrapper.craftingRecipeBookOpen; - this.craftingRecipeBookFilterActive = wrapper.craftingRecipeBookFilterActive; - this.smeltingRecipeBookOpen = wrapper.smeltingRecipeBookOpen; - this.smeltingRecipeBookFilterActive = wrapper.smeltingRecipeBookFilterActive; - this.blastFurnaceRecipeBookOpen = wrapper.blastFurnaceRecipeBookOpen; - this.blastFurnaceRecipeBookFilterActive = wrapper.blastFurnaceRecipeBookFilterActive; - this.smokerRecipeBookOpen = wrapper.smokerRecipeBookOpen; - this.smokerRecipeBookFilterActive = wrapper.smokerRecipeBookFilterActive; - } - - public RecipeState getState() { - return state; - } - - public void setState(RecipeState state) { - this.state = state; - } - - public Optional getRecipeIdModern() { - return recipeIdModern; - } - - public void setRecipeIdModern(Optional recipeIdModern) { - this.recipeIdModern = recipeIdModern; - } - - public OptionalInt getRecipeIdLegacy() { - return recipeIdLegacy; - } - - public void setRecipeIdLegacy(OptionalInt recipeIdLegacy) { - this.recipeIdLegacy = recipeIdLegacy; - } - - public boolean isCraftingRecipeBookOpen() { - return craftingRecipeBookOpen; - } - - public void setCraftingRecipeBookOpen(boolean craftingRecipeBookOpen) { - this.craftingRecipeBookOpen = craftingRecipeBookOpen; - } - - public boolean isCraftingRecipeBookFilterActive() { - return craftingRecipeBookFilterActive; - } - - public void setCraftingRecipeBookFilterActive(boolean craftingRecipeBookFilterActive) { - this.craftingRecipeBookFilterActive = craftingRecipeBookFilterActive; - } - - public boolean isSmeltingRecipeBookOpen() { - return smeltingRecipeBookOpen; - } - - public void setSmeltingRecipeBookOpen(boolean smeltingRecipeBookOpen) { - this.smeltingRecipeBookOpen = smeltingRecipeBookOpen; - } - - public boolean isSmeltingRecipeBookFilterActive() { - return smeltingRecipeBookFilterActive; - } - - public void setSmeltingRecipeBookFilterActive(boolean smeltingRecipeBookFilterActive) { - this.smeltingRecipeBookFilterActive = smeltingRecipeBookFilterActive; - } - - public boolean isBlastFurnaceRecipeBookOpen() { - return blastFurnaceRecipeBookOpen; - } - - public void setBlastFurnaceRecipeBookOpen(boolean blastFurnaceRecipeBookOpen) { - this.blastFurnaceRecipeBookOpen = blastFurnaceRecipeBookOpen; - } - - public boolean isBlastFurnaceRecipeBookFilterActive() { - return blastFurnaceRecipeBookFilterActive; - } - - public void setBlastFurnaceRecipeBookFilterActive(boolean blastFurnaceRecipeBookFilterActive) { - this.blastFurnaceRecipeBookFilterActive = blastFurnaceRecipeBookFilterActive; - } - - public boolean isSmokerRecipeBookOpen() { - return smokerRecipeBookOpen; - } - - public void setSmokerRecipeBookOpen(boolean smokerRecipeBookOpen) { - this.smokerRecipeBookOpen = smokerRecipeBookOpen; - } - - public boolean isSmokerRecipeBookFilterActive() { - return smokerRecipeBookFilterActive; - } - - public void setSmokerRecipeBookFilterActive(boolean smokerRecipeBookFilterActive) { - this.smokerRecipeBookFilterActive = smokerRecipeBookFilterActive; - } + private RecipeState state; + private String recipeIdModern; + private int recipeIdLegacy; + private boolean craftingRecipeBookOpen; + private boolean craftingRecipeBookFilterActive; + private boolean smeltingRecipeBookOpen; + private boolean smeltingRecipeBookFilterActive; + private boolean blastFurnaceRecipeBookOpen; + private boolean blastFurnaceRecipeBookFilterActive; + private boolean smokerRecipeBookOpen; + private boolean smokerRecipeBookFilterActive; + + public WrapperPlayClientRecipeBookData(PacketReceiveEvent event) { + super(event); + } + + public WrapperPlayClientRecipeBookData(RecipeState state, int recipeIdLegacy, boolean craftingRecipeBookOpen, boolean craftingRecipeBookFilterActive) { + super(PacketType.Play.Client.RECIPE_BOOK_DATA); + this.state = state; + this.recipeIdLegacy = recipeIdLegacy; + this.craftingRecipeBookOpen = craftingRecipeBookOpen; + this.craftingRecipeBookFilterActive = craftingRecipeBookFilterActive; + } + + public WrapperPlayClientRecipeBookData(RecipeState state, String recipeIdModern, boolean craftingRecipeBookOpen, + boolean craftingRecipeBookFilterActive, boolean smeltingRecipeBookOpen, boolean smeltingRecipeBookFilterActive) { + super(PacketType.Play.Client.RECIPE_BOOK_DATA); + this.state = state; + this.recipeIdModern = recipeIdModern; + this.craftingRecipeBookOpen = craftingRecipeBookOpen; + this.craftingRecipeBookFilterActive = craftingRecipeBookFilterActive; + this.smeltingRecipeBookOpen = smeltingRecipeBookOpen; + this.smeltingRecipeBookFilterActive = smeltingRecipeBookFilterActive; + } + + public WrapperPlayClientRecipeBookData(RecipeState state, String recipeIdModern, boolean craftingRecipeBookOpen, + boolean craftingRecipeBookFilterActive, boolean smeltingRecipeBookOpen, boolean smeltingRecipeBookFilterActive, + boolean blastFurnaceRecipeBookOpen, boolean blastFurnaceRecipeBookFilterActive, boolean smokerRecipeBookOpen, + boolean smokerRecipeBookFilterActive) { + super(PacketType.Play.Client.RECIPE_BOOK_DATA); + this.state = state; + this.recipeIdModern = recipeIdModern; + this.craftingRecipeBookOpen = craftingRecipeBookOpen; + this.craftingRecipeBookFilterActive = craftingRecipeBookFilterActive; + this.smeltingRecipeBookOpen = smeltingRecipeBookOpen; + this.smeltingRecipeBookFilterActive = smeltingRecipeBookFilterActive; + this.blastFurnaceRecipeBookOpen = blastFurnaceRecipeBookOpen; + this.blastFurnaceRecipeBookFilterActive = blastFurnaceRecipeBookFilterActive; + this.smokerRecipeBookOpen = smokerRecipeBookOpen; + this.smokerRecipeBookFilterActive = smokerRecipeBookFilterActive; + } + + @Override + public void read() { + this.state = RecipeState.VALUES[readVarInt()]; + if (this.state == RecipeState.DISPLAYED_RECIPE) { + if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_13)) { + this.recipeIdModern = readString(); + } else { + this.recipeIdLegacy = readVarInt(); + } + } else { + this.craftingRecipeBookOpen = readBoolean(); + this.craftingRecipeBookFilterActive = readBoolean(); + if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_13)) { + this.smeltingRecipeBookOpen = readBoolean(); + this.smeltingRecipeBookFilterActive = readBoolean(); + } + if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_14)) { + this.blastFurnaceRecipeBookOpen = readBoolean(); + this.blastFurnaceRecipeBookFilterActive = readBoolean(); + this.smokerRecipeBookOpen = readBoolean(); + this.smokerRecipeBookFilterActive = readBoolean(); + } + } + } + + @Override + public void write() { + writeVarInt(this.state.ordinal()); + if (this.state == RecipeState.DISPLAYED_RECIPE) { + if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_13)) { + writeString(this.recipeIdModern); + } else { + writeVarInt(this.recipeIdLegacy); + } + } else { + writeBoolean(this.craftingRecipeBookOpen); + writeBoolean(this.craftingRecipeBookFilterActive); + if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_13)) { + writeBoolean(this.smeltingRecipeBookOpen); + writeBoolean(this.smeltingRecipeBookFilterActive); + } + if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_14)) { + writeBoolean(this.blastFurnaceRecipeBookOpen); + writeBoolean(this.blastFurnaceRecipeBookFilterActive); + writeBoolean(this.smokerRecipeBookOpen); + writeBoolean(this.smokerRecipeBookFilterActive); + } + } + } + + @Override + public void copy(WrapperPlayClientRecipeBookData wrapper) { + this.state = wrapper.state; + this.recipeIdModern = wrapper.recipeIdModern; + this.recipeIdLegacy = wrapper.recipeIdLegacy; + this.craftingRecipeBookOpen = wrapper.craftingRecipeBookOpen; + this.craftingRecipeBookFilterActive = wrapper.craftingRecipeBookFilterActive; + this.smeltingRecipeBookOpen = wrapper.smeltingRecipeBookOpen; + this.smeltingRecipeBookFilterActive = wrapper.smeltingRecipeBookFilterActive; + this.blastFurnaceRecipeBookOpen = wrapper.blastFurnaceRecipeBookOpen; + this.blastFurnaceRecipeBookFilterActive = wrapper.blastFurnaceRecipeBookFilterActive; + this.smokerRecipeBookOpen = wrapper.smokerRecipeBookOpen; + this.smokerRecipeBookFilterActive = wrapper.smokerRecipeBookFilterActive; + } + + public RecipeState getState() { + return state; + } + + public void setState(RecipeState state) { + this.state = state; + } + + public Optional getRecipeIdModern() { + return Optional.ofNullable(recipeIdModern); + } + + public void setRecipeIdModern(String recipeIdModern) { + this.recipeIdModern = recipeIdModern; + } + + public OptionalInt getRecipeIdLegacy() { + return OptionalInt.of(recipeIdLegacy); + } + + public void setRecipeIdLegacy(int recipeIdLegacy) { + this.recipeIdLegacy = recipeIdLegacy; + } + + public boolean isCraftingRecipeBookOpen() { + return craftingRecipeBookOpen; + } + + public void setCraftingRecipeBookOpen(boolean craftingRecipeBookOpen) { + this.craftingRecipeBookOpen = craftingRecipeBookOpen; + } + + public boolean isCraftingRecipeBookFilterActive() { + return craftingRecipeBookFilterActive; + } + + public void setCraftingRecipeBookFilterActive(boolean craftingRecipeBookFilterActive) { + this.craftingRecipeBookFilterActive = craftingRecipeBookFilterActive; + } + + public boolean isSmeltingRecipeBookOpen() { + return smeltingRecipeBookOpen; + } + + public void setSmeltingRecipeBookOpen(boolean smeltingRecipeBookOpen) { + this.smeltingRecipeBookOpen = smeltingRecipeBookOpen; + } + + public boolean isSmeltingRecipeBookFilterActive() { + return smeltingRecipeBookFilterActive; + } + + public void setSmeltingRecipeBookFilterActive(boolean smeltingRecipeBookFilterActive) { + this.smeltingRecipeBookFilterActive = smeltingRecipeBookFilterActive; + } + + public boolean isBlastFurnaceRecipeBookOpen() { + return blastFurnaceRecipeBookOpen; + } + + public void setBlastFurnaceRecipeBookOpen(boolean blastFurnaceRecipeBookOpen) { + this.blastFurnaceRecipeBookOpen = blastFurnaceRecipeBookOpen; + } + + public boolean isBlastFurnaceRecipeBookFilterActive() { + return blastFurnaceRecipeBookFilterActive; + } + + public void setBlastFurnaceRecipeBookFilterActive(boolean blastFurnaceRecipeBookFilterActive) { + this.blastFurnaceRecipeBookFilterActive = blastFurnaceRecipeBookFilterActive; + } + + public boolean isSmokerRecipeBookOpen() { + return smokerRecipeBookOpen; + } + + public void setSmokerRecipeBookOpen(boolean smokerRecipeBookOpen) { + this.smokerRecipeBookOpen = smokerRecipeBookOpen; + } + + public boolean isSmokerRecipeBookFilterActive() { + return smokerRecipeBookFilterActive; + } + + public void setSmokerRecipeBookFilterActive(boolean smokerRecipeBookFilterActive) { + this.smokerRecipeBookFilterActive = smokerRecipeBookFilterActive; + } } \ No newline at end of file From b5590f2a664b6912cb085821f7dc573273f9bc62 Mon Sep 17 00:00:00 2001 From: NoJokeFNA Date: Thu, 19 May 2022 18:14:35 +0200 Subject: [PATCH 6/7] fix: fixed code-style --- .../retrooper/packetevents/protocol/recipe/RecipeState.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/api/src/main/java/com/github/retrooper/packetevents/protocol/recipe/RecipeState.java b/api/src/main/java/com/github/retrooper/packetevents/protocol/recipe/RecipeState.java index c350943c78..e0decae2b6 100644 --- a/api/src/main/java/com/github/retrooper/packetevents/protocol/recipe/RecipeState.java +++ b/api/src/main/java/com/github/retrooper/packetevents/protocol/recipe/RecipeState.java @@ -19,8 +19,8 @@ package com.github.retrooper.packetevents.protocol.recipe; public enum RecipeState { - DISPLAYED_RECIPE, - RECIPE_BOOK_STATE; + DISPLAYED_RECIPE, + RECIPE_BOOK_STATE; - public static final RecipeState[] VALUES = values(); + public static final RecipeState[] VALUES = values(); } From a7ede97a890c44c3c7124255bb06dcd654855cdf Mon Sep 17 00:00:00 2001 From: NoJokeFNA Date: Thu, 19 May 2022 18:15:37 +0200 Subject: [PATCH 7/7] fix: forgot to add @Nullable annotation --- .../play/client/WrapperPlayClientRecipeBookData.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java index 63e80e322a..33ad69a964 100644 --- a/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java +++ b/api/src/main/java/com/github/retrooper/packetevents/wrapper/play/client/WrapperPlayClientRecipeBookData.java @@ -23,13 +23,14 @@ import com.github.retrooper.packetevents.protocol.packettype.PacketType; import com.github.retrooper.packetevents.protocol.recipe.RecipeState; import com.github.retrooper.packetevents.wrapper.PacketWrapper; +import org.jetbrains.annotations.Nullable; import java.util.Optional; import java.util.OptionalInt; public class WrapperPlayClientRecipeBookData extends PacketWrapper { private RecipeState state; - private String recipeIdModern; + private @Nullable String recipeIdModern; private int recipeIdLegacy; private boolean craftingRecipeBookOpen; private boolean craftingRecipeBookFilterActive; @@ -52,7 +53,7 @@ public WrapperPlayClientRecipeBookData(RecipeState state, int recipeIdLegacy, bo this.craftingRecipeBookFilterActive = craftingRecipeBookFilterActive; } - public WrapperPlayClientRecipeBookData(RecipeState state, String recipeIdModern, boolean craftingRecipeBookOpen, + public WrapperPlayClientRecipeBookData(RecipeState state, @Nullable String recipeIdModern, boolean craftingRecipeBookOpen, boolean craftingRecipeBookFilterActive, boolean smeltingRecipeBookOpen, boolean smeltingRecipeBookFilterActive) { super(PacketType.Play.Client.RECIPE_BOOK_DATA); this.state = state; @@ -63,7 +64,7 @@ public WrapperPlayClientRecipeBookData(RecipeState state, String recipeIdModern, this.smeltingRecipeBookFilterActive = smeltingRecipeBookFilterActive; } - public WrapperPlayClientRecipeBookData(RecipeState state, String recipeIdModern, boolean craftingRecipeBookOpen, + public WrapperPlayClientRecipeBookData(RecipeState state, @Nullable String recipeIdModern, boolean craftingRecipeBookOpen, boolean craftingRecipeBookFilterActive, boolean smeltingRecipeBookOpen, boolean smeltingRecipeBookFilterActive, boolean blastFurnaceRecipeBookOpen, boolean blastFurnaceRecipeBookFilterActive, boolean smokerRecipeBookOpen, boolean smokerRecipeBookFilterActive) { @@ -157,7 +158,7 @@ public Optional getRecipeIdModern() { return Optional.ofNullable(recipeIdModern); } - public void setRecipeIdModern(String recipeIdModern) { + public void setRecipeIdModern(@Nullable String recipeIdModern) { this.recipeIdModern = recipeIdModern; }