package mods.ocminecart.common.container;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import mods.ocminecart.common.container.slots.SlotGhost;
import mods.ocminecart.common.tileentity.NetworkRailBaseTile;
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 NetworkRailBaseContainer extends Container {
private NetworkRailBaseTile entity;
private int oldMode;
public NetworkRailBaseContainer(InventoryPlayer inventory,NetworkRailBaseTile entity) {
this.entity=entity;
this.addSlotToContainer(new SlotGhost(entity,0,116,35));
this.addPlayerInv(8, 84, inventory);
}
public boolean canInteractWith(EntityPlayer player) {
return entity.isUseableByPlayer(player);
}
private void addPlayerInv(int x,int y, InventoryPlayer inventory){
for(int i=0;i<3;i++){
for(int j=0;j<9;j++){
this.addSlotToContainer(new Slot(inventory, j+i*9+9, x+j*18, y+i*18));
}
}
for(int i=0;i<9;i++){
this.addSlotToContainer(new Slot(inventory, i, x+i*18, y+58));
}
}
public void addCraftingToCrafters(ICrafting craft){
super.addCraftingToCrafters(craft);
craft.sendProgressBarUpdate(this, 0, this.entity.getMode());
}
public void detectAndSendChanges()
{
super.detectAndSendChanges();
for(int i=0;i<this.crafters.size();i+=1){
ICrafting craft = (ICrafting) this.crafters.get(i);
if(this.entity.getMode() != this.oldMode){
craft.sendProgressBarUpdate(this, 0, this.entity.getMode());
}
}
this.oldMode = this.entity.getMode();
}
@SideOnly(Side.CLIENT)
public void updateProgressBar(int updateid, int value){
switch(updateid){
case 0:
this.entity.setMode(value);
break;
}
}
public ItemStack transferStackInSlot(EntityPlayer player, int slot){
Slot s = this.getSlot(slot);
if(s==null || !s.getHasStack() || s.inventory.equals(entity)) return null;
ItemStack nitem = s.getStack().copy();
nitem.stackSize = 0;
this.getSlot(0).putStack(nitem); // Slot 0 is the camo slot
return null;
}
public ItemStack slotClick(int slot, int button, int p2, EntityPlayer player){
if(slot>=0 && slot < this.inventorySlots.size()){
Slot s = this.getSlot(slot);
if((s instanceof SlotGhost) && (button == 0 || button == 1)){
if(s.getHasStack() && player.inventory.getItemStack() != null &&
player.inventory.getItemStack().getItem() != s.getStack().getItem()){
s.decrStackSize(0);
}
}
}
return super.slotClick(slot, button, p2, player);
}
public NetworkRailBaseTile getTile(){
return entity;
}
}