Implement InventoryMoveItemEvent. Adds BUKKIT-3765
This makes droppers, hoppers and hopper minecarts fire an InventoryMoveItemEvent whenever an item is being moved from or to another inventory.
This commit is contained in:
committed by
Nate Mortensen
parent
b10474253c
commit
e61a6bab05
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user