mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-18 20:53:09 +01:00
da9d110d5b
This patch does not appear to be doing anything useful, and may hide errors. Currently, the save logic does not run through this path either so it did not do anything. Additionally, properly implement support for handling RegionFileSizeException in Moonrise.
43 lines
3 KiB
Diff
43 lines
3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Nassim Jahnke <nassim@njahnke.dev>
|
|
Date: Mon, 11 Sep 2023 12:01:57 +1000
|
|
Subject: [PATCH] Add slot sanity checks in container clicks
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
index 5be7304c8417e2987837d1c6ce8b80231fd29c51..1ef521e4552f8ce48f620d8932d5e9356b14ae57 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
@@ -3009,6 +3009,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
|
break;
|
|
case SWAP:
|
|
if ((packet.getButtonNum() >= 0 && packet.getButtonNum() < 9) || packet.getButtonNum() == 40) {
|
|
+ // Paper start - Add slot sanity checks to container clicks
|
|
+ if (packet.getSlotNum() < 0) {
|
|
+ action = InventoryAction.NOTHING;
|
|
+ break;
|
|
+ }
|
|
+ // Paper end - Add slot sanity checks to container clicks
|
|
click = (packet.getButtonNum() == 40) ? ClickType.SWAP_OFFHAND : ClickType.NUMBER_KEY;
|
|
Slot clickedSlot = this.player.containerMenu.getSlot(packet.getSlotNum());
|
|
if (clickedSlot.mayPickup(this.player)) {
|
|
diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
|
|
index fc23e2dc42e907d5f8dc134a06102cc3e7fde515..22dc1569aabe69f139d9682ceb81311993706cb8 100644
|
|
--- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
|
|
+++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
|
|
@@ -460,6 +460,7 @@ public abstract class AbstractContainerMenu {
|
|
this.resetQuickCraft();
|
|
}
|
|
} else if (this.quickcraftStatus == 1) {
|
|
+ if (slotIndex < 0) return; // Paper - Add slot sanity checks to container clicks
|
|
slot = (Slot) this.slots.get(slotIndex);
|
|
itemstack = this.getCarried();
|
|
if (AbstractContainerMenu.canItemQuickReplace(slot, itemstack, true) && slot.mayPlace(itemstack) && (this.quickcraftType == 2 || itemstack.getCount() > this.quickcraftSlots.size()) && this.canDragTo(slot)) {
|
|
@@ -634,6 +635,7 @@ public abstract class AbstractContainerMenu {
|
|
int j2;
|
|
|
|
if (actionType == ClickType.SWAP && (button >= 0 && button < 9 || button == 40)) {
|
|
+ if (slotIndex < 0) return; // Paper - Add slot sanity checks to container clicks
|
|
ItemStack itemstack4 = playerinventory.getItem(button);
|
|
|
|
slot = (Slot) this.slots.get(slotIndex);
|