/**
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
* http://www.mod-buildcraft.com
* <p/>
* BuildCraft is distributed under the terms of the Minecraft Mod Public
* License 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
*/
package buildcraft.core.lib.engines;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import buildcraft.core.lib.inventory.SimpleInventory;
import buildcraft.core.lib.utils.Utils;
public abstract class TileEngineWithInventory extends TileEngineBase implements IInventory, ISidedInventory {
private final SimpleInventory inv;
private final int[] defaultSlotArray;
public TileEngineWithInventory(int invSize) {
inv = new SimpleInventory(invSize, "Engine", 64);
defaultSlotArray = Utils.createSlotArray(0, invSize);
}
/* IINVENTORY IMPLEMENTATION */
@Override
public int getSizeInventory() {
return inv.getSizeInventory();
}
@Override
public ItemStack getStackInSlot(int slot) {
return inv.getStackInSlot(slot);
}
@Override
public ItemStack decrStackSize(int slot, int amount) {
return inv.decrStackSize(slot, amount);
}
@Override
public ItemStack getStackInSlotOnClosing(int slot) {
return inv.getStackInSlotOnClosing(slot);
}
@Override
public void setInventorySlotContents(int slot, ItemStack itemstack) {
inv.setInventorySlotContents(slot, itemstack);
}
@Override
public boolean isItemValidForSlot(int i, ItemStack itemstack) {
return true;
}
@Override
public String getInventoryName() {
return "Engine";
}
@Override
public int getInventoryStackLimit() {
return 64;
}
@Override
public boolean isUseableByPlayer(EntityPlayer entityplayer) {
return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this;
}
@Override
public void openInventory() {
}
@Override
public void closeInventory() {
}
@Override
public void readFromNBT(NBTTagCompound data) {
super.readFromNBT(data);
inv.readFromNBT(data);
}
@Override
public void writeToNBT(NBTTagCompound data) {
super.writeToNBT(data);
inv.writeToNBT(data);
}
// ISidedInventory
@Override
public int[] getAccessibleSlotsFromSide(int side) {
if (side == orientation.ordinal()) {
return new int[0];
} else {
return defaultSlotArray;
}
}
@Override
public boolean canInsertItem(int slot, ItemStack stack, int side) {
return side != orientation.ordinal();
}
@Override
public boolean canExtractItem(int slot, ItemStack stack, int side) {
return side != orientation.ordinal();
}
}