/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.common.blocks.machine;
import java.util.List;
import mods.railcraft.common.blocks.RailcraftTileEntity;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import mods.railcraft.common.plugins.forge.LocalizationPlugin;
import mods.railcraft.common.util.inventory.InvTools;
import mods.railcraft.common.util.inventory.StandaloneInventory;
import net.minecraft.entity.player.EntityPlayer;
/**
* @author CovertJaguar <http://www.railcraft.info>
*/
public abstract class TileMultiBlockInventory extends TileMultiBlock implements IInventory {
protected final StandaloneInventory inv;
private final String guiTag;
public TileMultiBlockInventory(String guiTag, int invSize, List<? extends MultiBlockPattern> patterns) {
super(patterns);
inv = new StandaloneInventory(invSize, (IInventory) this);
this.guiTag = guiTag;
}
protected void dropItem(ItemStack stack) {
InvTools.dropItem(stack, worldObj, xCoord, yCoord, zCoord);
}
@Override
public ItemStack decrStackSize(int i, int j) {
TileMultiBlockInventory mBlock = (TileMultiBlockInventory) getMasterBlock();
if (mBlock != null)
return mBlock.inv.decrStackSize(i, j);
return null;
}
@Override
public ItemStack getStackInSlot(int i) {
TileMultiBlockInventory mBlock = (TileMultiBlockInventory) getMasterBlock();
if (mBlock != null)
return mBlock.inv.getStackInSlot(i);
return null;
}
@Override
public void setInventorySlotContents(int i, ItemStack itemstack) {
TileMultiBlockInventory mBlock = (TileMultiBlockInventory) getMasterBlock();
if (mBlock != null)
mBlock.inv.setInventorySlotContents(i, itemstack);
}
@Override
public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) {
return isStructureValid();
}
@Override
public void writeToNBT(NBTTagCompound data) {
super.writeToNBT(data);
inv.writeToNBT("invStructure", data);
}
@Override
public void readFromNBT(NBTTagCompound data) {
super.readFromNBT(data);
inv.readFromNBT("invStructure", data);
}
@Override
public String getInventoryName() {
return getName();
}
@Override
public int getSizeInventory() {
return inv.getSizeInventory();
}
@Override
public ItemStack getStackInSlotOnClosing(int var1) {
return null;
}
@Override
public String getName() {
return LocalizationPlugin.translate(guiTag);
}
@Override
public int getInventoryStackLimit() {
return 64;
}
@Override
public void openInventory() {
}
@Override
public void closeInventory() {
}
@Override
public boolean hasCustomInventoryName() {
return false;
}
@Override
public boolean isUseableByPlayer(EntityPlayer player) {
return RailcraftTileEntity.isUseableByPlayerHelper(this, player);
}
}