diff --git a/CraftBukkit-Patches/0088-Update-Chest-Animation-when-Cancelling-Event.patch b/CraftBukkit-Patches/0088-Update-Chest-Animation-when-Cancelling-Event.patch new file mode 100644 index 000000000..1176b8854 --- /dev/null +++ b/CraftBukkit-Patches/0088-Update-Chest-Animation-when-Cancelling-Event.patch @@ -0,0 +1,117 @@ +From 9b82bd9730c7b87940423c5a48724b05c841900c Mon Sep 17 00:00:00 2001 +From: bloodshot +Date: Mon, 6 Jan 2014 16:29:51 -0500 +Subject: [PATCH] Update Chest Animation when Cancelling Event + +Update chest animation after cancelling InventoryOpenEvent. Fixes BUKKIT-1440 + +Currently if a plugin cancels an InventoryOpenEvent for vanilla chests, +the chest animation for clients is stuck in the open state since +IInventory's closeChest method is never called. To fix the issue, closeChest +is called before exiting the display GUI method. +More info can be found here +https://bukkit.atlassian.net/browse/BUKKIT-1440 + +diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java +index ab39926..550ef44 100644 +--- a/src/main/java/net/minecraft/server/EntityPlayer.java ++++ b/src/main/java/net/minecraft/server/EntityPlayer.java +@@ -629,7 +629,10 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + + // CraftBukkit start - Inventory open hook + Container container = CraftEventFactory.callInventoryOpenEvent(this, new ContainerChest(this.inventory, iinventory)); +- if(container == null) return; ++ if(container == null) { ++ iinventory.l_(); ++ return; ++ } + // CraftBukkit end + + this.nextContainerCounter(); +@@ -642,7 +645,10 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + public void openHopper(TileEntityHopper tileentityhopper) { + // CraftBukkit start - Inventory open hook + Container container = CraftEventFactory.callInventoryOpenEvent(this, new ContainerHopper(this.inventory, tileentityhopper)); +- if(container == null) return; ++ if(container == null) { ++ tileentityhopper.l_(); ++ return; ++ } + // CraftBukkit end + + this.nextContainerCounter(); +@@ -655,7 +661,10 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + public void openMinecartHopper(EntityMinecartHopper entityminecarthopper) { + // CraftBukkit start - Inventory open hook + Container container = CraftEventFactory.callInventoryOpenEvent(this, new ContainerHopper(this.inventory, entityminecarthopper)); +- if(container == null) return; ++ if(container == null) { ++ entityminecarthopper.l_(); ++ return; ++ } + // CraftBukkit end + + this.nextContainerCounter(); +@@ -668,7 +677,10 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + public void openFurnace(TileEntityFurnace tileentityfurnace) { + // CraftBukkit start - Inventory open hook + Container container = CraftEventFactory.callInventoryOpenEvent(this, new ContainerFurnace(this.inventory, tileentityfurnace)); +- if(container == null) return; ++ if(container == null) { ++ tileentityfurnace.l_(); ++ return; ++ } + // CraftBukkit end + + this.nextContainerCounter(); +@@ -681,7 +693,10 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + public void openDispenser(TileEntityDispenser tileentitydispenser) { + // CraftBukkit start - Inventory open hook + Container container = CraftEventFactory.callInventoryOpenEvent(this, new ContainerDispenser(this.inventory, tileentitydispenser)); +- if(container == null) return; ++ if(container == null) { ++ tileentitydispenser.l_(); ++ return; ++ } + // CraftBukkit end + + this.nextContainerCounter(); +@@ -694,7 +709,10 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + public void openBrewingStand(TileEntityBrewingStand tileentitybrewingstand) { + // CraftBukkit start - Inventory open hook + Container container = CraftEventFactory.callInventoryOpenEvent(this, new ContainerBrewingStand(this.inventory, tileentitybrewingstand)); +- if(container == null) return; ++ if(container == null) { ++ tileentitybrewingstand.l_(); ++ return; ++ } + // CraftBukkit end + + this.nextContainerCounter(); +@@ -707,7 +725,10 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + public void openBeacon(TileEntityBeacon tileentitybeacon) { + // CraftBukkit start - Inventory open hook + Container container = CraftEventFactory.callInventoryOpenEvent(this, new ContainerBeacon(this.inventory, tileentitybeacon)); +- if(container == null) return; ++ if(container == null) { ++ tileentitybeacon.l_(); ++ return; ++ } + // CraftBukkit end + + this.nextContainerCounter(); +@@ -748,7 +769,10 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + public void openHorseInventory(EntityHorse entityhorse, IInventory iinventory) { + // CraftBukkit start - Inventory open hook + Container container = CraftEventFactory.callInventoryOpenEvent(this, new ContainerHorse(this.inventory, iinventory, entityhorse)); +- if(container == null) return; ++ if(container == null) { ++ iinventory.l_(); ++ return; ++ } + // CraftBukkit end + + if (this.activeContainer != this.defaultContainer) { +-- +1.8.3.2 +