}
if (putAmount <= 0) {
return;
}
toPut.setAmount(putAmount);
SlotEvent s = new SlotPutEvent(p, slot, stackInSlot, !slot.onItemPut(toPut));
Bukkit.getPluginManager().callEvent(s);
if (!s.isCancelled()) {
stackOnCursor.setAmount(stackOnCursor.getAmount() - putAmount);
if (stackOnCursor.getAmount() == 0) {
stackOnCursor = new ItemStack(0);
}
ItemStack put = toPut.clone();
put.setAmount(amount);
slot.setItem(put);
} else {
slot.setDirty(true); // We need to tell the client that the operation was denied.
}
} else if (stackOnCursor == null || stackOnCursor.getTypeId() == 0) { //Take item or shift click
if (holdingShift) {
slot.onItemShiftClicked();
SlotEvent s = new SlotShiftClickEvent(p, slot);
Bukkit.getPluginManager().callEvent(s);
} else { // Take item
SlotEvent s = new SlotTakeEvent(p, slot, stackInSlot, !slot.onItemTake(stackInSlot));
Bukkit.getPluginManager().callEvent(s);
if (!s.isCancelled()) {
stackOnCursor = stackInSlot;
slot.setItem(new ItemStack(0));
} else {
slot.setDirty(true); // We need to tell the client that the operation was denied.
}
}
} else if (stackOnCursor.getTypeId() != stackInSlot.getTypeId() || stackOnCursor.getDurability() != stackInSlot.getDurability()) { // Exchange slot stack and cursor stack
SlotEvent s = new SlotExchangeEvent(p, slot, stackInSlot, stackOnCursor.clone(), !slot.onItemExchange(stackInSlot, stackOnCursor.clone()));
Bukkit.getPluginManager().callEvent(s);
if (!s.isCancelled()) {
slot.setItem(stackOnCursor.clone());
stackOnCursor = stackInSlot;
} else {
slot.setDirty(true); // We need to tell the client that the operation was denied.
}