Interface item handler
This commit is contained in:
32
src/main/java/refinedstorage/inventory/InterfaceItemHandler.java
Executable file
32
src/main/java/refinedstorage/inventory/InterfaceItemHandler.java
Executable 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;
|
||||
}
|
||||
}
|
@@ -4,6 +4,9 @@ import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.item.ItemStack;
|
||||
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.ItemHandlerHelper;
|
||||
import refinedstorage.RefinedStorageItems;
|
||||
@@ -11,10 +14,10 @@ import refinedstorage.RefinedStorageUtils;
|
||||
import refinedstorage.container.ContainerInterface;
|
||||
import refinedstorage.inventory.BasicItemHandler;
|
||||
import refinedstorage.inventory.BasicItemValidator;
|
||||
import refinedstorage.inventory.InterfaceItemHandler;
|
||||
import refinedstorage.item.ItemUpgrade;
|
||||
import refinedstorage.tile.config.ICompareConfig;
|
||||
|
||||
// @TODO: Write a capability handler for this
|
||||
public class TileInterface extends TileMachine implements ICompareConfig {
|
||||
public static final String NBT_COMPARE = "Compare";
|
||||
|
||||
@@ -127,7 +130,6 @@ public class TileInterface extends TileMachine implements ICompareConfig {
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void receiveContainerData(ByteBuf buf) {
|
||||
super.receiveContainerData(buf);
|
||||
@@ -173,4 +175,18 @@ public class TileInterface extends TileMachine implements ICompareConfig {
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user