buildcraft/common/buildcraft/transport/TileFilteredBuffer.java
2017-11-10 19:30:36 +01:00

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;
}
}