Merge pull request #329 from Xhamolk/patch-2

Pipes connecting improperly (fix of my last PR)
This commit is contained in:
CovertJaguar 2012-10-11 14:09:21 -07:00
commit 83d2b51931
2 changed files with 17 additions and 6 deletions

View file

@ -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);
}

View file

@ -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