From eb767609196caad8abc6a466166f0ac2835235b3 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Tue, 21 Jun 2016 19:33:26 -0700 Subject: [PATCH] Routing system should accept I(Sided)Inventory Stupid non-capability using n00bz0rz --- .../tile/routing/TileInputRoutingNode.java | 5 +++-- .../tile/routing/TileOutputRoutingNode.java | 5 +++-- .../java/WayofTime/bloodmagic/util/Utils.java | 20 +++++++++++++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/tile/routing/TileInputRoutingNode.java b/src/main/java/WayofTime/bloodmagic/tile/routing/TileInputRoutingNode.java index 6cee9f0b..a8ecefb9 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/routing/TileInputRoutingNode.java +++ b/src/main/java/WayofTime/bloodmagic/tile/routing/TileInputRoutingNode.java @@ -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)) diff --git a/src/main/java/WayofTime/bloodmagic/tile/routing/TileOutputRoutingNode.java b/src/main/java/WayofTime/bloodmagic/tile/routing/TileOutputRoutingNode.java index 79255d70..65afdafa 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/routing/TileOutputRoutingNode.java +++ b/src/main/java/WayofTime/bloodmagic/tile/routing/TileOutputRoutingNode.java @@ -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)) diff --git a/src/main/java/WayofTime/bloodmagic/util/Utils.java b/src/main/java/WayofTime/bloodmagic/util/Utils.java index 127328dd..bb5bb57e 100644 --- a/src/main/java/WayofTime/bloodmagic/util/Utils.java +++ b/src/main/java/WayofTime/bloodmagic/util/Utils.java @@ -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} *