From dcf6dab4ee947ceec033f126a9fffbd8b4199524 Mon Sep 17 00:00:00 2001 From: Allink <44676012+allinkdev@users.noreply.github.com> Date: Tue, 12 Jul 2022 17:18:30 +0100 Subject: [PATCH] Fix container click patch (#45) --- ...037-Prevent-invalid-container-events.patch | 52 +++++++++++++++++++ ...ot-attempt-to-cast-items-to-recipes.patch} | 0 ...=> 0039-Add-Scissors-config-command.patch} | 0 ...unning-commands-in-books-by-default.patch} | 0 ...te-block-entity-tag-query-positions.patch} | 0 5 files changed, 52 insertions(+) create mode 100644 patches/server/0037-Prevent-invalid-container-events.patch rename patches/server/{0037-Do-not-attempt-to-cast-items-to-recipes.patch => 0038-Do-not-attempt-to-cast-items-to-recipes.patch} (100%) rename patches/server/{0038-Add-Scissors-config-command.patch => 0039-Add-Scissors-config-command.patch} (100%) rename patches/server/{0039-Disable-running-commands-in-books-by-default.patch => 0040-Disable-running-commands-in-books-by-default.patch} (100%) rename patches/server/{0040-Validate-block-entity-tag-query-positions.patch => 0041-Validate-block-entity-tag-query-positions.patch} (100%) diff --git a/patches/server/0037-Prevent-invalid-container-events.patch b/patches/server/0037-Prevent-invalid-container-events.patch new file mode 100644 index 0000000..38016b3 --- /dev/null +++ b/patches/server/0037-Prevent-invalid-container-events.patch @@ -0,0 +1,52 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Allink +Date: Sun, 10 Jul 2022 02:20:16 +0100 +Subject: [PATCH] Prevent invalid container events + + +diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +index ca595abe940463a62da033c7082c868c4c4b28d8..a102586b42ac408a3f655f7c0d069ab0990ec7fc 100644 +--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java ++++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +@@ -24,6 +24,8 @@ import java.util.function.UnaryOperator; + import java.util.stream.Collectors; + import java.util.stream.Stream; + import javax.annotation.Nullable; ++ ++import net.kyori.adventure.text.format.NamedTextColor; + import net.minecraft.ChatFormatting; + import net.minecraft.CrashReport; + import net.minecraft.CrashReportCategory; +@@ -2593,6 +2595,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser + public void handleContainerClick(ServerboundContainerClickPacket packet) { + PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel()); + if (this.player.isImmobile()) return; // CraftBukkit ++ + this.player.resetLastActionTime(); + if (this.player.containerMenu.containerId == packet.getContainerId() && this.player.containerMenu.stillValid(this.player)) { // CraftBukkit + boolean cancelled = this.player.isSpectator(); // CraftBukkit - see below if +@@ -2602,11 +2605,24 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser + boolean flag = packet.getStateId() != this.player.containerMenu.getStateId(); + + this.player.containerMenu.suppressRemoteUpdates(); ++ + // CraftBukkit start - Call InventoryClickEvent + if (packet.getSlotNum() < -1 && packet.getSlotNum() != -999) { + return; + } + ++ // Scissors start - Do not call events when the slot/button number is invalid ++ final int sentSlotNum = packet.getSlotNum(); ++ if((Mth.clamp(sentSlotNum, -1, this.player.containerMenu.slots.size() - 1) != sentSlotNum) && sentSlotNum != -999) ++ { ++ this.getCraftPlayer().kick( ++ net.kyori.adventure.text.Component.text("Invalid container click slot (Hacking?)") ++ .color(NamedTextColor.RED) ++ ); ++ return; ++ } ++ // Scissors end ++ + InventoryView inventory = this.player.containerMenu.getBukkitView(); + SlotType type = inventory.getSlotType(packet.getSlotNum()); + diff --git a/patches/server/0037-Do-not-attempt-to-cast-items-to-recipes.patch b/patches/server/0038-Do-not-attempt-to-cast-items-to-recipes.patch similarity index 100% rename from patches/server/0037-Do-not-attempt-to-cast-items-to-recipes.patch rename to patches/server/0038-Do-not-attempt-to-cast-items-to-recipes.patch diff --git a/patches/server/0038-Add-Scissors-config-command.patch b/patches/server/0039-Add-Scissors-config-command.patch similarity index 100% rename from patches/server/0038-Add-Scissors-config-command.patch rename to patches/server/0039-Add-Scissors-config-command.patch diff --git a/patches/server/0039-Disable-running-commands-in-books-by-default.patch b/patches/server/0040-Disable-running-commands-in-books-by-default.patch similarity index 100% rename from patches/server/0039-Disable-running-commands-in-books-by-default.patch rename to patches/server/0040-Disable-running-commands-in-books-by-default.patch diff --git a/patches/server/0040-Validate-block-entity-tag-query-positions.patch b/patches/server/0041-Validate-block-entity-tag-query-positions.patch similarity index 100% rename from patches/server/0040-Validate-block-entity-tag-query-positions.patch rename to patches/server/0041-Validate-block-entity-tag-query-positions.patch