package com.agilemods.materiamuto.common.inventory;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import com.agilemods.materiamuto.common.core.helpers.InventoryHelper;
import com.agilemods.materiamuto.common.core.MMItems;
public class InventoryAlchemicalBag implements IInventory {
private static final int MAX_BAG_SIZE = 27;
private ItemStack[] inventory;
public final int color;
public InventoryAlchemicalBag(int color) {
this.inventory = new ItemStack[MAX_BAG_SIZE];
this.color = color;
}
public void readFromNBT(NBTTagCompound nbtTagCompound) {
InventoryHelper.readFromNBT(this, nbtTagCompound);
}
public void writeToNBT(NBTTagCompound nbtTagCompound) {
InventoryHelper.writeToNBT(this, nbtTagCompound);
}
@Override
public int getSizeInventory() {
return this.inventory.length;
}
@Override
public ItemStack getStackInSlot(int slot) {
return slot >= 0 && slot < getSizeInventory() ? inventory[slot] : null;
}
@Override
public void setInventorySlotContents(int slot, ItemStack itemStack) {
if (slot >= 0 && slot < getSizeInventory()) {
inventory[slot] = itemStack;
}
}
@Override
public ItemStack decrStackSize(int slot, int amount) {
ItemStack itemStack = getStackInSlot(slot);
if (itemStack != null) {
ItemStack returnedStack = null;
if (itemStack.stackSize <= amount) {
returnedStack = itemStack.copy();
setInventorySlotContents(slot, null);
this.markDirty();
return returnedStack;
} else {
returnedStack = itemStack.splitStack(amount);
if (itemStack.stackSize == 0) {
setInventorySlotContents(0, null);
}
this.markDirty();
return returnedStack;
}
} else {
return null;
}
}
@Override
public ItemStack getStackInSlotOnClosing(int slot) {
ItemStack itemStack = getStackInSlot(slot);
if (itemStack != null) {
ItemStack returnedStack = itemStack.copy();
setInventorySlotContents(slot, null);
return returnedStack;
} else {
return null;
}
}
@Override
public String getInventoryName() {
return "container.alchemicalBag";
}
@Override
public boolean hasCustomInventoryName() {
return false;
}
@Override
public int getInventoryStackLimit() {
return 64;
}
@Override
public void markDirty() {
}
@Override
public boolean isUseableByPlayer(EntityPlayer entityPlayer) {
return true;
}
@Override
public void openInventory() {
}
@Override
public void closeInventory() {
}
@Override
public boolean isItemValidForSlot(int slot, ItemStack itemStack) {
if (itemStack == null) {
return false;
}
if (itemStack.getItem() == null) {
return false;
}
if (itemStack.getItem() == MMItems.alchemicalBag) {
return false;
}
return true;
}
}