Interface item handler

This commit is contained in:
Raoul Van den Berge
2016-05-22 18:18:02 +02:00
parent 24c83a0805
commit 0c59813f1d
2 changed files with 50 additions and 2 deletions

View File

@@ -0,0 +1,32 @@
package refinedstorage.inventory;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
public class InterfaceItemHandler extends ProxyItemHandler {
private EnumFacing side;
public InterfaceItemHandler(BasicItemHandler interfaceHandler, EnumFacing side) {
super(interfaceHandler);
this.side = side;
}
@Override
public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) {
if (side != EnumFacing.DOWN && slot >= 0 && slot <= 8) {
return super.insertItem(slot, stack, simulate);
}
return stack;
}
@Override
public ItemStack extractItem(int slot, int amount, boolean simulate) {
if (side == EnumFacing.DOWN && slot >= 18 && slot <= 26) {
return super.extractItem(slot, amount, simulate);
}
return null;
}
}

View File

@@ -4,6 +4,9 @@ import io.netty.buffer.ByteBuf;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemHandlerHelper;
import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageItems;
@@ -11,10 +14,10 @@ import refinedstorage.RefinedStorageUtils;
import refinedstorage.container.ContainerInterface; import refinedstorage.container.ContainerInterface;
import refinedstorage.inventory.BasicItemHandler; import refinedstorage.inventory.BasicItemHandler;
import refinedstorage.inventory.BasicItemValidator; import refinedstorage.inventory.BasicItemValidator;
import refinedstorage.inventory.InterfaceItemHandler;
import refinedstorage.item.ItemUpgrade; import refinedstorage.item.ItemUpgrade;
import refinedstorage.tile.config.ICompareConfig; import refinedstorage.tile.config.ICompareConfig;
// @TODO: Write a capability handler for this
public class TileInterface extends TileMachine implements ICompareConfig { public class TileInterface extends TileMachine implements ICompareConfig {
public static final String NBT_COMPARE = "Compare"; public static final String NBT_COMPARE = "Compare";
@@ -127,7 +130,6 @@ public class TileInterface extends TileMachine implements ICompareConfig {
} }
@Override @Override
public void receiveContainerData(ByteBuf buf) { public void receiveContainerData(ByteBuf buf) {
super.receiveContainerData(buf); super.receiveContainerData(buf);
@@ -173,4 +175,18 @@ public class TileInterface extends TileMachine implements ICompareConfig {
return dummy; return dummy;
} }
@Override
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
return (T) new InterfaceItemHandler(items, facing);
}
return super.getCapability(capability, facing);
}
@Override
public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || super.hasCapability(capability, facing);
}
} }