package com.bioxx.tfc2.containers;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import com.bioxx.tfc2.core.PlayerInventory;
import com.bioxx.tfc2.entity.InventoryCart;
public class ContainerCart extends ContainerTFC
{
private World world;
private InventoryCart cart;
private EntityPlayer player;
public ContainerCart(InventoryPlayer playerinv, InventoryCart cart, World world, int x, int y, int z)
{
this.player = playerinv.player;
this.world = world;
this.cart = cart;
cart.openInventory(player);
PlayerInventory.buildInventoryLayout(this, playerinv, 8, 93, false, true);
layoutContainer(playerinv, cart, 0, 0);
}
/**
* Callback for when the crafting gui is closed.
*/
@Override
public void onContainerClosed(EntityPlayer par1EntityPlayer)
{
super.onContainerClosed(par1EntityPlayer);
if(!world.isRemote)
cart.closeInventory(par1EntityPlayer);
}
/**
* Called to transfer a stack from one inventory to the other eg. when shift clicking.
*/
@Override
public ItemStack transferStackInSlotTFC(EntityPlayer player, int slotNum)
{
ItemStack origStack = null;
Slot slot = (Slot)this.inventorySlots.get(slotNum);
if (slot != null && slot.getHasStack())
{
ItemStack slotStack = slot.getStack();
origStack = slotStack.copy();
// From pile to inventory
if (slotNum < 36)
{
if (!this.mergeItemStack(slotStack, 36, inventorySlots.size(), true))
return null;
}
else
{
if (!this.mergeItemStack(slotStack, 0, 36, false))
return null;
}
if (slotStack.stackSize <= 0)
slot.putStack(null);
else
slot.onSlotChanged();
if (slotStack.stackSize == origStack.stackSize)
return null;
slot.onPickupFromSlot(player, slotStack);
}
return origStack;
}
@Override
public boolean canInteractWith(EntityPlayer var1)
{
return true;
}
protected void layoutContainer(IInventory playerInventory, IInventory chestInventory, int xSize, int ySize)
{
for(int y = 0; y < 3; y++)
{
for(int x = 0; x < 9; x++)
{
this.addSlotToContainer(new Slot(chestInventory, x+y*9, 8+x*18, 18+y*18));
}
}
}
public EntityPlayer getPlayer()
{
return player;
}
}