package net.minecraft.inventory;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
class SlotRepair extends Slot
{
final World theWorld;
final int blockPosX;
final int blockPosY;
final int blockPosZ;
/** The anvil this slot belongs to. */
final ContainerRepair anvil;
SlotRepair(ContainerRepair par1ContainerRepair, IInventory par2IInventory, int par3, int par4, int par5, World par6World, int par7, int par8, int par9)
{
super(par2IInventory, par3, par4, par5);
this.anvil = par1ContainerRepair;
this.theWorld = par6World;
this.blockPosX = par7;
this.blockPosY = par8;
this.blockPosZ = par9;
}
/**
* Check if the stack is a valid item for this slot. Always true beside for the armor slots.
*/
public boolean isItemValid(ItemStack par1ItemStack)
{
return false;
}
/**
* Return whether this slot's stack can be taken from this slot.
*/
public boolean canTakeStack(EntityPlayer par1EntityPlayer)
{
return (par1EntityPlayer.capabilities.isCreativeMode || par1EntityPlayer.experienceLevel >= this.anvil.maximumCost) && this.anvil.maximumCost > 0 && this.getHasStack();
}
public void onPickupFromSlot(EntityPlayer par1EntityPlayer, ItemStack par2ItemStack)
{
if (!par1EntityPlayer.capabilities.isCreativeMode)
{
par1EntityPlayer.addExperienceLevel(-this.anvil.maximumCost);
}
ContainerRepair.getRepairInputInventory(this.anvil).setInventorySlotContents(0, (ItemStack)null);
if (ContainerRepair.getStackSizeUsedInRepair(this.anvil) > 0)
{
ItemStack itemstack1 = ContainerRepair.getRepairInputInventory(this.anvil).getStackInSlot(1);
if (itemstack1 != null && itemstack1.stackSize > ContainerRepair.getStackSizeUsedInRepair(this.anvil))
{
itemstack1.stackSize -= ContainerRepair.getStackSizeUsedInRepair(this.anvil);
ContainerRepair.getRepairInputInventory(this.anvil).setInventorySlotContents(1, itemstack1);
}
else
{
ContainerRepair.getRepairInputInventory(this.anvil).setInventorySlotContents(1, (ItemStack)null);
}
}
else
{
ContainerRepair.getRepairInputInventory(this.anvil).setInventorySlotContents(1, (ItemStack)null);
}
this.anvil.maximumCost = 0;
if (!par1EntityPlayer.capabilities.isCreativeMode && !this.theWorld.isRemote && this.theWorld.getBlockId(this.blockPosX, this.blockPosY, this.blockPosZ) == Block.anvil.blockID && par1EntityPlayer.getRNG().nextFloat() < 0.12F)
{
int i = this.theWorld.getBlockMetadata(this.blockPosX, this.blockPosY, this.blockPosZ);
int j = i & 3;
int k = i >> 2;
++k;
if (k > 2)
{
this.theWorld.setBlockToAir(this.blockPosX, this.blockPosY, this.blockPosZ);
this.theWorld.playAuxSFX(1020, this.blockPosX, this.blockPosY, this.blockPosZ, 0);
}
else
{
this.theWorld.setBlockMetadataWithNotify(this.blockPosX, this.blockPosY, this.blockPosZ, j | k << 2, 2);
this.theWorld.playAuxSFX(1021, this.blockPosX, this.blockPosY, this.blockPosZ, 0);
}
}
else if (!this.theWorld.isRemote)
{
this.theWorld.playAuxSFX(1021, this.blockPosX, this.blockPosY, this.blockPosZ, 0);
}
}
}