package minefantasy.container;
import minefantasy.block.tileentity.TileEntityTailor;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class ContainerTailor extends Container
{
private TileEntityTailor bench;
private int lastProgress = 0;
private int xSize;
private int ySize;
public ContainerTailor(TileEntityTailor tile)
{
this.bench = tile;
int yMult;
int startX = 34;
int startY = 22;
xSize = 4;
ySize = 4;
for (yMult = 0; yMult < ySize; ++yMult)
{
this.addSlotToContainer(new Slot(tile, yMult, 8, startY + yMult * 18));
}
for (yMult = 0; yMult < ySize; ++yMult)
{
for (int xMult = 0; xMult < xSize; ++xMult)
{
this.addSlotToContainer(new Slot(tile,
xMult + yMult * xSize + 4,
startX + xMult * 18,
startY + yMult * 18));
}
}
this.addSlotToContainer(new Slot(tile, tile.getSizeInventory()-1, 148, 49));
}
public ContainerTailor(InventoryPlayer invPlayer, TileEntityTailor tile)
{
this.bench = tile;
int yMult;
int startX = 34;
int startY = 22;
xSize = 4;
ySize = 4;
for (yMult = 0; yMult < ySize; ++yMult)
{
this.addSlotToContainer(new Slot(tile, yMult, 8, startY + yMult * 18));
}
for (yMult = 0; yMult < ySize; ++yMult)
{
for (int xMult = 0; xMult < xSize; ++xMult)
{
this.addSlotToContainer(new Slot(tile,
xMult + yMult * xSize + 4,
startX + xMult * 18,
startY + yMult * 18));
}
}
this.addSlotToContainer(new Slot(tile, tile.getSizeInventory()-1, 148, 49));
int var3;
for (var3 = 0; var3 < 3; ++var3)
{
for (int var4 = 0; var4 < 9; ++var4)
{
this.addSlotToContainer(new Slot(invPlayer, var4 + var3 * 9 + 9, 8 + var4 * 18, 98 + var3 * 18));
}
}
for (var3 = 0; var3 < 9; ++var3)
{
this.addSlotToContainer(new Slot(invPlayer, var3, 8 + var3 * 18, 98 + 58));
}
}
/**
* Updates crafting matrix; called from onCraftMatrixChanged. Args: none
*/
public void updateCraftingResults()
{
super.detectAndSendChanges();
for (int var1 = 0; var1 < this.crafters.size(); ++var1)
{
ICrafting var2 = (ICrafting)this.crafters.get(var1);
if (this.lastProgress != this.bench.progress)
{
var2.sendProgressBarUpdate(this, 0, this.bench.progress);
}
}
this.lastProgress = this.bench.progress;
}
public void updateProgressBar(int slot, int set)
{
if (slot == 0)
{
this.bench.progress = set;
}
}
public boolean canInteractWith(EntityPlayer par1EntityPlayer)
{
return this.bench.isUseableByPlayer(par1EntityPlayer);
}
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int num)
{
int invSize = xSize * ySize + 5;
ItemStack placedItem = null;
Slot slot = (Slot)this.inventorySlots.get(num);
if (slot != null && slot.getHasStack())
{
ItemStack itemSlot = slot.getStack();
placedItem = itemSlot.copy();
//Take
if (num < invSize)
{
if (!this.mergeItemStack(itemSlot, invSize, 36 + invSize, true))
{
return null;
}
slot.onSlotChange(itemSlot, placedItem);
}
//Put
else
{
if (!this.mergeItemStack(itemSlot, 0, invSize-1, false))
{
return null;
}
slot.onSlotChange(itemSlot, placedItem);
}
if (itemSlot.stackSize == 0)
{
slot.putStack((ItemStack)null);
}
else
{
slot.onSlotChanged();
}
if (itemSlot.stackSize == placedItem.stackSize)
{
return null;
}
slot.onPickupFromSlot(player, itemSlot);
}
return placedItem;
}
}