136 lines
3.4 KiB
Java
136 lines
3.4 KiB
Java
/**
|
|
* Copyright (c) 2011-2017, 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;
|
|
}
|
|
}
|