Routing system should accept I(Sided)Inventory

Stupid non-capability using n00bz0rz
This commit is contained in:
Nicholas Ignoffo 2016-06-21 19:33:26 -07:00
parent 6315d38c8a
commit eb76760919
3 changed files with 26 additions and 4 deletions

View file

@ -4,6 +4,7 @@ import WayofTime.bloodmagic.item.routing.IItemFilterProvider;
import WayofTime.bloodmagic.routing.DefaultItemFilter;
import WayofTime.bloodmagic.routing.IInputItemRoutingNode;
import WayofTime.bloodmagic.routing.IItemFilter;
import WayofTime.bloodmagic.util.Utils;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
@ -30,9 +31,9 @@ public class TileInputRoutingNode extends TileFilteredRoutingNode implements IIn
TileEntity tile = worldObj.getTileEntity(pos.offset(side));
if (tile != null)
{
if (tile.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side.getOpposite()))
IItemHandler handler = Utils.getInventory(tile, side.getOpposite());
if (handler != null)
{
IItemHandler handler = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side.getOpposite());
ItemStack filterStack = this.getFilterStack(side);
if (filterStack == null || !(filterStack.getItem() instanceof IItemFilterProvider))

View file

@ -4,6 +4,7 @@ import WayofTime.bloodmagic.item.routing.IItemFilterProvider;
import WayofTime.bloodmagic.routing.DefaultItemFilter;
import WayofTime.bloodmagic.routing.IItemFilter;
import WayofTime.bloodmagic.routing.IOutputItemRoutingNode;
import WayofTime.bloodmagic.util.Utils;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
@ -30,9 +31,9 @@ public class TileOutputRoutingNode extends TileFilteredRoutingNode implements IO
TileEntity tile = worldObj.getTileEntity(pos.offset(side));
if (tile != null)
{
if (tile.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side.getOpposite()))
IItemHandler handler = Utils.getInventory(tile, side.getOpposite());
if (handler != null)
{
IItemHandler handler = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side.getOpposite());
ItemStack filterStack = this.getFilterStack(side);
if (filterStack == null || !(filterStack.getItem() instanceof IItemFilterProvider))

View file

@ -48,6 +48,8 @@ import WayofTime.bloodmagic.registry.ModBlocks;
import WayofTime.bloodmagic.tile.TileInventory;
import com.google.common.collect.Iterables;
import net.minecraftforge.items.wrapper.InvWrapper;
import net.minecraftforge.items.wrapper.SidedInvWrapper;
import javax.annotation.Nullable;
@ -152,6 +154,24 @@ public class Utils
return false;
}
@Nullable
public static IItemHandler getInventory(TileEntity tile, @Nullable EnumFacing facing)
{
if (facing == null)
facing = EnumFacing.DOWN;
IItemHandler itemHandler = null;
if (tile.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing))
itemHandler = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing);
else if (tile instanceof ISidedInventory)
itemHandler = ((ISidedInventory) tile).getSlotsForFace(facing).length != 0 ? new SidedInvWrapper((ISidedInventory) tile, facing) : null;
else if (tile instanceof IInventory)
itemHandler = new InvWrapper((IInventory) tile);
return itemHandler;
}
/**
* Gets a default block for each type of {@link EnumAltarComponent}
*