package com.jaquadro.minecraft.gardencontainers.inventory;
import cpw.mods.fml.common.FMLCommonHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent;
public class SlotPottery extends Slot
{
private final IInventory inputInventory;
private EntityPlayer player;
private int amountCrafted;
public SlotPottery (EntityPlayer player, IInventory inputInventory, IInventory inventory, int par2, int par3, int par4) {
super(inventory, par2, par3, par4);
this.player = player;
this.inputInventory = inputInventory;
}
@Override
public boolean isItemValid (ItemStack itemStack) {
return false;
}
@Override
public ItemStack decrStackSize (int count) {
if (getHasStack())
amountCrafted += Math.min(count, getStack().stackSize);
return super.decrStackSize(count);
}
@Override
protected void onCrafting (ItemStack itemStack, int count) {
amountCrafted += count;
super.onCrafting(itemStack, count);
}
@Override
protected void onCrafting (ItemStack itemStack) {
itemStack.onCrafting(player.worldObj, player, amountCrafted);
amountCrafted = 0;
}
@Override
public void onPickupFromSlot (EntityPlayer player, ItemStack itemStack) {
FMLCommonHandler.instance().firePlayerCraftingEvent(player, itemStack, inputInventory);
onCrafting(itemStack);
ItemStack itemTarget = inputInventory.getStackInSlot(1);
if (itemTarget != null) {
inputInventory.decrStackSize(1, 1);
if (itemTarget.getItem().hasContainerItem(itemTarget)) {
ItemStack itemContainer = itemTarget.getItem().getContainerItem(itemTarget);
if (itemContainer != null && itemContainer.isItemStackDamageable() && itemContainer.getItemDamage() > itemContainer.getMaxDamage()) {
MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(this.player, itemContainer));
return;
}
if (!itemTarget.getItem().doesContainerItemLeaveCraftingGrid(itemTarget) || !this.player.inventory.addItemStackToInventory(itemContainer)) {
if (inputInventory.getStackInSlot(1) == null)
inputInventory.setInventorySlotContents(1, itemContainer);
else
this.player.dropPlayerItemWithRandomChoice(itemContainer, false);
}
}
}
ItemStack itemPattern = inputInventory.getStackInSlot(0);
if (itemPattern != null && itemPattern.getItem() == Items.dye) {
inputInventory.decrStackSize(0, 1);
}
}
}