spigot/CraftBukkit-Patches/0027-Properly-Close-Inventories.patch

53 lines
2.3 KiB
Diff
Raw Normal View History

2018-01-22 01:19:57 +11:00
From 3018ad8e3480dc15cbb26e4bad135f1f8ce0ec10 Mon Sep 17 00:00:00 2001
2014-04-12 14:18:37 +10:00
From: md_5 <md_5@live.com.au>
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
2017-09-18 20:00:00 +10:00
index fe511bfdf..936db434c 100644
2014-04-12 14:18:37 +10:00
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
2016-06-23 10:37:05 +10:00
@@ -761,6 +761,18 @@ public class Chunk {
2014-04-12 14:18:37 +10:00
while (iterator.hasNext()) {
TileEntity tileentity = (TileEntity) iterator.next();
+ // Spigot Start
+ if ( tileentity instanceof IInventory )
+ {
+ for ( org.bukkit.entity.HumanEntity h : Lists.<org.bukkit.entity.HumanEntity>newArrayList((List<org.bukkit.entity.HumanEntity>) ( (IInventory) tileentity ).getViewers() ) )
2014-04-12 14:18:37 +10:00
+ {
+ if ( h instanceof org.bukkit.craftbukkit.entity.CraftHumanEntity )
+ {
+ ( (org.bukkit.craftbukkit.entity.CraftHumanEntity) h).getHandle().closeInventory();
+ }
2014-04-12 14:18:37 +10:00
+ }
+ }
+ // Spigot End
this.world.b(tileentity);
2014-04-12 14:18:37 +10:00
}
2016-06-23 10:37:05 +10:00
@@ -774,6 +786,18 @@ public class Chunk {
java.util.Iterator<Entity> iter = newList.iterator();
2014-04-12 14:18:37 +10:00
while (iter.hasNext()) {
Entity entity = iter.next();
2014-04-12 14:18:37 +10:00
+ // Spigot Start
+ if ( entity instanceof IInventory )
+ {
+ for ( org.bukkit.entity.HumanEntity h : Lists.<org.bukkit.entity.HumanEntity>newArrayList( (List<org.bukkit.entity.HumanEntity>) ( (IInventory) entity ).getViewers() ) )
2014-04-12 14:18:37 +10:00
+ {
+ if ( h instanceof org.bukkit.craftbukkit.entity.CraftHumanEntity )
+ {
+ ( (org.bukkit.craftbukkit.entity.CraftHumanEntity) h).getHandle().closeInventory();
+ }
2014-04-12 14:18:37 +10:00
+ }
+ }
+ // 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)
--
2017-11-17 10:24:35 +11:00
2.14.1
2014-04-12 14:18:37 +10:00