From c7e4c45f26d3daf505a9a548420aa3bcccfb55a1 Mon Sep 17 00:00:00 2001 From: Max Lee Date: Sat, 20 Jun 2020 20:34:56 +0100 Subject: [PATCH] Add Inventory getHolder methods without creating new block snapshots (#3535) --- ...Holder-method-without-block-snapshot.patch | 51 +++++++++++++++++++ ...Holder-method-without-block-snapshot.patch | 42 +++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 Spigot-API-Patches/0210-Inventory-getHolder-method-without-block-snapshot.patch create mode 100644 Spigot-Server-Patches/0540-Inventory-getHolder-method-without-block-snapshot.patch diff --git a/Spigot-API-Patches/0210-Inventory-getHolder-method-without-block-snapshot.patch b/Spigot-API-Patches/0210-Inventory-getHolder-method-without-block-snapshot.patch new file mode 100644 index 000000000..beffff8ae --- /dev/null +++ b/Spigot-API-Patches/0210-Inventory-getHolder-method-without-block-snapshot.patch @@ -0,0 +1,51 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phoenix616 +Date: Wed, 10 Jun 2020 23:55:16 +0100 +Subject: [PATCH] Inventory getHolder method without block snapshot + + +diff --git a/src/main/java/org/bukkit/block/DoubleChest.java b/src/main/java/org/bukkit/block/DoubleChest.java +index 83a4642119c3f33749e04c774cf2b39839f797e2..a39d2f1acbbd84ae0e2cf29f85594e09e55e9355 100644 +--- a/src/main/java/org/bukkit/block/DoubleChest.java ++++ b/src/main/java/org/bukkit/block/DoubleChest.java +@@ -34,6 +34,18 @@ public class DoubleChest implements InventoryHolder { + return inventory.getRightSide().getHolder(); + } + ++ // Paper start - getHolder without snapshot ++ @Nullable ++ public InventoryHolder getLeftSide(boolean useSnapshot) { ++ return inventory.getLeftSide().getHolder(useSnapshot); ++ } ++ ++ @Nullable ++ public InventoryHolder getRightSide(boolean useSnapshot) { ++ return inventory.getRightSide().getHolder(useSnapshot); ++ } ++ // Paper end ++ + @NotNull + public Location getLocation() { + return getInventory().getLocation(); +diff --git a/src/main/java/org/bukkit/inventory/Inventory.java b/src/main/java/org/bukkit/inventory/Inventory.java +index 01fe217dfa93c20bdec53eb981bd6e885a9f7a25..753c052291afb0455df8298ea3a8209778ba400f 100644 +--- a/src/main/java/org/bukkit/inventory/Inventory.java ++++ b/src/main/java/org/bukkit/inventory/Inventory.java +@@ -376,6 +376,17 @@ public interface Inventory extends Iterable { + @Nullable + public InventoryHolder getHolder(); + ++ // Paper start - getHolder without snapshot ++ /** ++ * Gets the block or entity belonging to the open inventory ++ * ++ * @param useSnapshot Create a snapshot if the holder is a tile entity ++ * @return The holder of the inventory; null if it has no holder. ++ */ ++ @Nullable ++ public InventoryHolder getHolder(boolean useSnapshot); ++ // Paper end ++ + @NotNull + @Override + public ListIterator iterator(); diff --git a/Spigot-Server-Patches/0540-Inventory-getHolder-method-without-block-snapshot.patch b/Spigot-Server-Patches/0540-Inventory-getHolder-method-without-block-snapshot.patch new file mode 100644 index 000000000..24e430cfb --- /dev/null +++ b/Spigot-Server-Patches/0540-Inventory-getHolder-method-without-block-snapshot.patch @@ -0,0 +1,42 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phoenix616 +Date: Wed, 10 Jun 2020 23:55:15 +0100 +Subject: [PATCH] Inventory getHolder method without block snapshot + + +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java +index 47827fbf1b80f88ffff8a252df10d70758c68703..57858327a4909fe536724371ac25f1cdede8c885 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java +@@ -519,6 +519,13 @@ public class CraftInventory implements Inventory { + return inventory.getOwner(); + } + ++ // Paper start - getHolder without snapshot ++ @Override ++ public InventoryHolder getHolder(boolean useSnapshot) { ++ return inventory instanceof net.minecraft.server.TileEntity ? ((net.minecraft.server.TileEntity) inventory).getOwner(useSnapshot) : getHolder(); ++ } ++ // Paper end ++ + @Override + public int getMaxStackSize() { + return inventory.getMaxStackSize(); +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryDoubleChest.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryDoubleChest.java +index e917db0b01c2fef46a1ea873bee9aa25044de036..ad425d89bcae3045d0e35ecfb70a233895f88cc8 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryDoubleChest.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryDoubleChest.java +@@ -64,6 +64,13 @@ public class CraftInventoryDoubleChest extends CraftInventory implements DoubleC + return new DoubleChest(this); + } + ++ // Paper start - getHolder without snapshot ++ @Override ++ public DoubleChest getHolder(boolean useSnapshot) { ++ return getHolder(); ++ } ++ // Paper end ++ + @Override + public Location getLocation() { + return getLeftSide().getLocation().add(getRightSide().getLocation()).multiply(0.5);