/** * 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.transport; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import buildcraft.core.lib.block.TileBuildCraft; import buildcraft.core.lib.inventory.SimpleInventory; public class TileFilteredBuffer extends TileBuildCraft implements IInventory { private final SimpleInventory inventoryFilters = new SimpleInventory(9, "FilteredBufferFilters", 1); private final SimpleInventory inventoryStorage = new SimpleInventory(9, "FilteredBufferStorage", 64); @Override public void updateEntity() { super.updateEntity(); } public IInventory getFilters() { return inventoryFilters; } /** IInventory Implementation **/ @Override public int getSizeInventory() { return inventoryStorage.getSizeInventory(); } @Override public ItemStack getStackInSlot(int slotId) { return inventoryStorage.getStackInSlot(slotId); } @Override public ItemStack decrStackSize(int slotId, int count) { return inventoryStorage.decrStackSize(slotId, count); } @Override public ItemStack getStackInSlotOnClosing(int slotId) { return inventoryStorage.getStackInSlotOnClosing(slotId); } @Override public void setInventorySlotContents(int slotId, ItemStack itemStack) { inventoryStorage.setInventorySlotContents(slotId, itemStack); } @Override public String getInventoryName() { return inventoryStorage.getInventoryName(); } @Override public int getInventoryStackLimit() { return inventoryStorage.getInventoryStackLimit(); } @Override public boolean isUseableByPlayer(EntityPlayer entityPlayer) { return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this; } @Override public void openInventory() { } @Override public void closeInventory() { } @Override public boolean isItemValidForSlot(int i, ItemStack itemstack) { ItemStack filterItemStack = inventoryFilters.getStackInSlot(i); if (filterItemStack == null || filterItemStack.getItem() != itemstack.getItem()) { return false; } if (itemstack.getItem().isDamageable()) { return true; } if (filterItemStack.getItemDamage() == itemstack.getItemDamage()) { return true; } return false; } @Override public void readFromNBT(NBTTagCompound nbtTagCompound) { super.readFromNBT(nbtTagCompound); NBTTagCompound inventoryStorageTag = nbtTagCompound; if (nbtTagCompound.hasKey("inventoryStorage")) { // To support pre 6.0 load inventoryStorageTag = (NBTTagCompound) nbtTagCompound.getTag("inventoryStorage"); } inventoryStorage.readFromNBT(inventoryStorageTag); NBTTagCompound inventoryFiltersTag = (NBTTagCompound) nbtTagCompound.getTag("inventoryFilters"); inventoryFilters.readFromNBT(inventoryFiltersTag); } @Override public void writeToNBT(NBTTagCompound nbtTagCompound) { super.writeToNBT(nbtTagCompound); inventoryStorage.writeToNBT(nbtTagCompound); NBTTagCompound inventoryFiltersTag = new NBTTagCompound(); inventoryFilters.writeToNBT(inventoryFiltersTag); nbtTagCompound.setTag("inventoryFilters", inventoryFiltersTag); } @Override public boolean hasCustomInventoryName() { return false; } }