package crazypants.enderio.machine.alloy;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.init.Items;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.stats.AchievementList;
import com.enderio.core.common.util.Util;
import crazypants.enderio.machine.gui.AbstractMachineContainer;
public class ContainerAlloySmelter extends AbstractMachineContainer<TileAlloySmelter> {
private final EntityPlayer thePlayer;
public ContainerAlloySmelter(InventoryPlayer playerInv, TileAlloySmelter te) {
super(playerInv, te);
thePlayer = playerInv.player;
}
@Override
protected void addMachineSlots(InventoryPlayer playerInv) {
addSlotToContainer(new Slot(getInv(), 0, 54, 17) {
@Override
public boolean isItemValid(ItemStack itemStack) {
return getInv().isItemValidForSlot(0, itemStack);
}
});
addSlotToContainer(new Slot(getInv(), 1, 79, 7) {
@Override
public boolean isItemValid(ItemStack itemStack) {
return getInv().isItemValidForSlot(1, itemStack);
}
});
addSlotToContainer(new Slot(getInv(), 2, 103, 17) {
@Override
public boolean isItemValid(ItemStack itemStack) {
return getInv().isItemValidForSlot(2, itemStack);
}
});
addSlotToContainer(new SlotSmelter(getInv(), 3, 79, 57));
}
private class SlotSmelter extends Slot {
int numResults = 0;
public SlotSmelter(IInventory par1iInventory, int par2, int par3, int par4) {
super(par1iInventory, par2, par3, par4);
}
@Override
public ItemStack decrStackSize(int par1) {
if(getHasStack()) {
numResults += Math.min(par1, getStack().stackSize);
}
return super.decrStackSize(par1);
}
@Override
public boolean isItemValid(ItemStack par1ItemStack) {
return false;
}
@Override
public void onPickupFromSlot(EntityPlayer par1EntityPlayer, ItemStack output) {
onCrafting(output);
super.onPickupFromSlot(par1EntityPlayer, output);
}
@Override
protected void onCrafting(ItemStack par1ItemStack, int par2) {
numResults += par2;
onCrafting(par1ItemStack);
}
@Override
protected void onCrafting(ItemStack output) {
output.onCrafting(thePlayer.worldObj, thePlayer, numResults);
if(!thePlayer.worldObj.isRemote) {
ItemStack outputSized = output.copy();
outputSized.stackSize = numResults;
float experience = getInv().getExperienceForOutput(outputSized);
Util.giveExperience(thePlayer, experience);
}
numResults = 0;
if(output.getItem() == Items.iron_ingot) {
thePlayer.addStat(AchievementList.acquireIron, 1);
}
if(output.getItem() == Items.cooked_fished) {
thePlayer.addStat(AchievementList.cookFish, 1);
}
}
}
}