package crazypants.enderio.conduit.gui.item;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection;
import crazypants.enderio.EnderIO;
import crazypants.enderio.conduit.item.IItemConduit;
import crazypants.enderio.conduit.item.filter.IItemFilterUpgrade;
public class InventoryUpgrades implements IInventory {
IItemConduit itemConduit;
ForgeDirection dir;
public InventoryUpgrades(IItemConduit itemConduit, ForgeDirection dir) {
this.itemConduit = itemConduit;
this.dir = dir;
}
@Override
public int getSizeInventory() {
return 4;
}
@Override
public ItemStack getStackInSlot(int slot) {
switch (slot) {
case 0: return itemConduit.getSpeedUpgrade(dir);
case 1: return itemConduit.getFunctionUpgrade(dir);
case 2: return itemConduit.getInputFilterUpgrade(dir);
case 3: return itemConduit.getOutputFilterUpgrade(dir);
default: return null;
}
}
@Override
public ItemStack decrStackSize(int slot, int num) {
ItemStack current = getStackInSlot(slot);
if(current == null) {
return current;
}
ItemStack result;
ItemStack remaining;
if(num >= current.stackSize) {
result = current.copy();
remaining = null;
} else {
result = current.copy();
result.stackSize = num;
remaining = current.copy();
remaining.stackSize -= num;
}
setInventorySlotContents(slot, remaining);
return result;
}
@Override
public ItemStack getStackInSlotOnClosing(int var1) {
return null;
}
@Override
public void setInventorySlotContents(int slot, ItemStack var2) {
switch (slot) {
case 0: itemConduit.setSpeedUpgrade(dir, var2); break;
case 1: itemConduit.setFunctionUpgrade(dir, var2); break;
case 2: itemConduit.setInputFilterUpgrade(dir, var2); break;
case 3: itemConduit.setOutputFilterUpgrade(dir, var2); break;
}
}
@Override
public String getInventoryName() {
return "Upgrades";
}
@Override
public boolean hasCustomInventoryName() {
return false;
}
@Override
public int getInventoryStackLimit() {
return 15;
}
@Override
public void markDirty() {
}
@Override
public boolean isUseableByPlayer(EntityPlayer var1) {
return true;
}
@Override
public void openInventory() {
}
@Override
public void closeInventory() {
}
@Override
public boolean isItemValidForSlot(int slot, ItemStack item) {
if(item == null) {
return false;
}
switch (slot) {
case 0: return item.getItem() == EnderIO.itemExtractSpeedUpgrade;
case 1: return item.getItem() == EnderIO.itemFunctionUpgrade;
case 2:
case 3: return item.getItem() instanceof IItemFilterUpgrade;
}
return false;
}
}