From 2a5e90fb8b2516099b3f521ac880e3830859e75f Mon Sep 17 00:00:00 2001 From: Travis Watkins Date: Thu, 4 Apr 2013 12:59:47 -0500 Subject: Handle large chests correctly for hopper events. Fixes BUKKIT-3979 In commit 7710efc5f9 we corrected the handling of large chests as the destination for hoppers moving items but did not apply the same fix for large chests being the source or for droppers. This commit updates these to have the same fix. --- src/main/java/net/minecraft/server/TileEntityHopper.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/main/java/net/minecraft/server/TileEntityHopper.java') diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java index eaaabb2c..f6d269d6 100644 --- a/src/main/java/net/minecraft/server/TileEntityHopper.java +++ b/src/main/java/net/minecraft/server/TileEntityHopper.java @@ -283,7 +283,14 @@ public class TileEntityHopper extends TileEntity implements IHopper { // CraftBukkit start - Call event on collection of items from inventories into the hopper CraftItemStack oitemstack = CraftItemStack.asCraftMirror(iinventory.splitStack(i, 1)); - Inventory sourceInventory = iinventory.getOwner() != null ? iinventory.getOwner().getInventory() : null; + Inventory sourceInventory; + // Have to special case large chests as they work oddly + if (iinventory instanceof InventoryLargeChest) { + sourceInventory = new org.bukkit.craftbukkit.inventory.CraftInventoryDoubleChest((InventoryLargeChest) iinventory); + } else { + sourceInventory = iinventory.getOwner().getInventory(); + } + InventoryMoveItemEvent event = new InventoryMoveItemEvent(sourceInventory, oitemstack.clone(), ihopper.getOwner().getInventory(), false); ihopper.getWorld().getServer().getPluginManager().callEvent(event); -- cgit v1.2.3