diff --git a/CraftBukkit-Patches/0056-Properly-Close-Inventories.patch b/CraftBukkit-Patches/0056-Properly-Close-Inventories.patch new file mode 100644 index 000000000..2a6e9c797 --- /dev/null +++ b/CraftBukkit-Patches/0056-Properly-Close-Inventories.patch @@ -0,0 +1,63 @@ +From affe0720b0b6a658336755f7cae15049e3c12c9a Mon Sep 17 00:00:00 2001 +From: md_5 +Date: Thu, 27 Jun 2013 17:26:09 +1000 +Subject: [PATCH] Properly Close Inventories + +Properly close inventories when unloading and switching worlds. + +diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java +index e8d30c5..4879db6 100644 +--- a/src/main/java/net/minecraft/server/Chunk.java ++++ b/src/main/java/net/minecraft/server/Chunk.java +@@ -690,6 +690,15 @@ public class Chunk { + + while (iterator.hasNext()) { + TileEntity tileentity = (TileEntity) iterator.next(); ++ // Spigot Start ++ if ( tileentity instanceof IInventory ) ++ { ++ for ( org.bukkit.craftbukkit.entity.CraftHumanEntity h : new ArrayList( (List) ( (IInventory) tileentity ).getViewers() ) ) ++ { ++ h.getHandle().closeInventory(); ++ } ++ } ++ // Spigot End + + this.world.a(tileentity); + } +@@ -699,6 +708,15 @@ public class Chunk { + java.util.Iterator iter = this.entitySlices[i].iterator(); + while (iter.hasNext()) { + Entity entity = (Entity) iter.next(); ++ // Spigot Start ++ if ( entity instanceof IInventory ) ++ { ++ for ( org.bukkit.craftbukkit.entity.CraftHumanEntity h : new ArrayList( (List) ( (IInventory) entity ).getViewers() ) ) ++ { ++ h.getHandle().closeInventory(); ++ } ++ } ++ // Spigot End + + // Do not pass along players, as doing so can get them stuck outside of time. + // (which for example disables inventory icon updates and prevents block breaking) +diff --git a/src/main/java/net/minecraft/server/EntityMinecartContainer.java b/src/main/java/net/minecraft/server/EntityMinecartContainer.java +index c207076..4666f24 100644 +--- a/src/main/java/net/minecraft/server/EntityMinecartContainer.java ++++ b/src/main/java/net/minecraft/server/EntityMinecartContainer.java +@@ -149,6 +149,12 @@ public abstract class EntityMinecartContainer extends EntityMinecartAbstract imp + } + + public void c(int i) { ++ // Spigot Start ++ for ( HumanEntity human : transaction ) ++ { ++ ( (org.bukkit.craftbukkit.entity.CraftHumanEntity) human ).getHandle().closeInventory(); ++ } ++ // Spigot End + this.b = false; + super.c(i); + } +-- +1.8.1.2 +