diff --git a/common/buildcraft/transport/Pipe.java b/common/buildcraft/transport/Pipe.java index 7448c5eb..d65980d9 100644 --- a/common/buildcraft/transport/Pipe.java +++ b/common/buildcraft/transport/Pipe.java @@ -16,6 +16,7 @@ import java.util.Random; import buildcraft.BuildCraftTransport; import buildcraft.api.core.Orientations; +import buildcraft.api.core.Position; import buildcraft.api.core.SafeTimeTracker; import buildcraft.api.gates.Action; import buildcraft.api.gates.ActionManager; @@ -26,6 +27,7 @@ import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.Trigger; import buildcraft.api.gates.TriggerParameter; import buildcraft.api.transport.IPipe; +import buildcraft.api.transport.IPipeConnection import buildcraft.core.IDropControlInventory; import buildcraft.core.network.TilePacketWrapper; import buildcraft.core.triggers.ActionRedstoneOutput; @@ -131,6 +133,11 @@ public abstract class Pipe implements IPipe, IDropControlInventory { } public boolean isPipeConnected(TileEntity tile) { + if( tile instanceof IPipeConnection && !(tile instanceof TileGenericPipe) ){ + Orientations or = Utils.get3dOrientation(new Position(this.container), new Position(tile)); + if( !((IPipeConnection) tile).isPipeConnected(or) ) + return false; + } return logic.isPipeConnected(tile) && transport.isPipeConnected(tile); } diff --git a/common/buildcraft/transport/PipeTransportItems.java b/common/buildcraft/transport/PipeTransportItems.java index 740bbfc8..31103aba 100644 --- a/common/buildcraft/transport/PipeTransportItems.java +++ b/common/buildcraft/transport/PipeTransportItems.java @@ -41,6 +41,7 @@ import net.minecraft.src.NBTTagCompound; import net.minecraft.src.NBTTagList; import net.minecraft.src.Packet; import net.minecraft.src.TileEntity; +import net.minecraftforge.common.ISidedInventory; public class PipeTransportItems extends PipeTransport { @@ -145,13 +146,12 @@ public class PipeTransportItems extends PipeTransport { if (!Utils.checkPipesConnections(entity, container)) return false; + if (entity instanceof TileGenericPipe) + if (container.pipe.transport instanceof PipeTransportItems) + return container.pipe.transport.inputOpen(o); if (entity instanceof IPipeEntry) - return true; - else if (entity instanceof TileGenericPipe) { - TileGenericPipe pipe = (TileGenericPipe) entity; - - return pipe.pipe.transport instanceof PipeTransportItems; - } else if (entity instanceof IInventory) + return ((IPipeEntry) entity).acceptItems(); + if (entity instanceof IInventory) if(Transactor.getTransactorFor(entity).add(item.getItemStack(), o.reverse(), false).stackSize > 0) return true; @@ -437,6 +437,10 @@ public class PipeTransportItems extends PipeTransport { @Override public boolean isPipeConnected(TileEntity tile) { + if( tile instanceof ISidedInventory ){ + Orientations or = Utils.get3dOrientation(new Position(container), new Position(tile)); + return ((ISidedInventory) tile).getSizeInventorySide(or.toDirection()) > 0; + } return tile instanceof TileGenericPipe || tile instanceof IPipeEntry || tile instanceof ISpecialInventory