summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/BlockDropper.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/minecraft/server/BlockDropper.java')
-rw-r--r--src/main/java/net/minecraft/server/BlockDropper.java20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/main/java/net/minecraft/server/BlockDropper.java b/src/main/java/net/minecraft/server/BlockDropper.java
index 856aadab..ac7bb51a 100644
--- a/src/main/java/net/minecraft/server/BlockDropper.java
+++ b/src/main/java/net/minecraft/server/BlockDropper.java
@@ -1,5 +1,11 @@
package net.minecraft.server;
+// CraftBukkit start
+import org.bukkit.craftbukkit.inventory.CraftItemStack;
+import org.bukkit.event.inventory.InventoryMoveItemEvent;
+import org.bukkit.inventory.Inventory;
+// CraftBukkit end
+
public class BlockDropper extends BlockDispenser {
private final IDispenseBehavior cR = new DispenseBehaviorItem();
@@ -32,8 +38,18 @@ public class BlockDropper extends BlockDispenser {
ItemStack itemstack1;
if (iinventory != null) {
- itemstack1 = TileEntityHopper.addItem(iinventory, itemstack.cloneItemStack().a(1), Facing.OPPOSITE_FACING[i1]);
- if (itemstack1 == null) {
+ // CraftBukkit start - fire event when pushing items into other inventories
+ CraftItemStack oitemstack = CraftItemStack.asCraftMirror(itemstack.cloneItemStack().a(1));
+
+ Inventory destinationInventory = iinventory.getOwner() != null ? iinventory.getOwner().getInventory() : null;
+ InventoryMoveItemEvent event = new InventoryMoveItemEvent(tileentitydispenser.getOwner().getInventory(), oitemstack.clone(), destinationInventory, true);
+ world.getServer().getPluginManager().callEvent(event);
+ if (event.isCancelled()) {
+ return;
+ }
+ itemstack1 = TileEntityHopper.addItem(iinventory, CraftItemStack.asNMSCopy(event.getItem()), Facing.OPPOSITE_FACING[i1]);
+ if (event.getItem().equals(oitemstack) && itemstack1 == null) {
+ // CraftBukkit end
itemstack1 = itemstack.cloneItemStack();
if (--itemstack1.count == 0) {
itemstack1 = null;