diff options
3 files changed, 21 insertions, 4 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/long_distance/GT_MetaTileEntity_LongDistancePipelineBase.java b/src/main/java/gregtech/common/tileentities/machines/long_distance/GT_MetaTileEntity_LongDistancePipelineBase.java index 8d8895339a..faf27ca0f1 100644 --- a/src/main/java/gregtech/common/tileentities/machines/long_distance/GT_MetaTileEntity_LongDistancePipelineBase.java +++ b/src/main/java/gregtech/common/tileentities/machines/long_distance/GT_MetaTileEntity_LongDistancePipelineBase.java @@ -152,21 +152,31 @@ public abstract class GT_MetaTileEntity_LongDistancePipelineBase extends GT_Meta } + // What meta should the pipes for this pipeline have + public abstract int getPipeMeta(); + protected void scanPipes() { if (mSender != null && !mSender.isDead() && mSender.mTarget == this) return; GT_Mod.GT_FML_LOGGER.info("ScanPipes()"); // Check if we need to scan anything final IGregTechTileEntity gtTile = getBaseMetaTileEntity(); + if (gtTile == null) return; + + final World world = gtTile.getWorld(); + if (world == null) return; + mTargetPos = getCoords(); mTarget = this; mSender = null; // Start scanning from the output side Block aBlock = gtTile.getBlockAtSide(gtTile.getBackFacing()); - byte aMetaData = gtTile.getMetaIDAtSide(gtTile.getBackFacing()); if(aBlock instanceof GT_Block_LongDistancePipe) { + byte aMetaData = gtTile.getMetaIDAtSide(gtTile.getBackFacing()); + if (aMetaData != getPipeMeta()) return; + HashSet<ChunkCoordinates> tVisited = new HashSet<>(Collections.singletonList(getCoords())), tWires = new HashSet<>(); @@ -176,7 +186,7 @@ public abstract class GT_MetaTileEntity_LongDistancePipelineBase extends GT_Meta while (!tQueue.isEmpty()) { final ChunkCoordinates aCoords = tQueue.poll(); - if(gtTile.getBlock(aCoords.posX, aCoords.posY, aCoords.posZ) == aBlock) { + if(world.getBlock(aCoords.posX, aCoords.posY, aCoords.posZ) == aBlock && world.getBlockMetadata(aCoords.posX, aCoords.posY, aCoords.posZ) == aMetaData) { // We've got another pipe/wire block // TODO: Make sure it's the right type of pipe/wire via meta ChunkCoordinates tCoords; @@ -191,7 +201,7 @@ public abstract class GT_MetaTileEntity_LongDistancePipelineBase extends GT_Meta if (tVisited.add(tCoords = new ChunkCoordinates(aCoords.posX, aCoords.posY, aCoords.posZ - 1))) tQueue.add(tCoords); } else { // It's not a block - let's see if it's a tile entity - TileEntity tTileEntity = gtTile.getTileEntity(aCoords.posX, aCoords.posY, aCoords.posZ); + TileEntity tTileEntity = world.getTileEntity(aCoords.posX, aCoords.posY, aCoords.posZ); if ( tTileEntity != gtTile && tTileEntity instanceof BaseMetaTileEntity && ((BaseMetaTileEntity)tTileEntity).getMetaTileEntity() instanceof GT_MetaTileEntity_LongDistancePipelineBase) diff --git a/src/main/java/gregtech/common/tileentities/machines/long_distance/GT_MetaTileEntity_LongDistancePipelineFluid.java b/src/main/java/gregtech/common/tileentities/machines/long_distance/GT_MetaTileEntity_LongDistancePipelineFluid.java index 84ecde7af0..061ca5c4dd 100644 --- a/src/main/java/gregtech/common/tileentities/machines/long_distance/GT_MetaTileEntity_LongDistancePipelineFluid.java +++ b/src/main/java/gregtech/common/tileentities/machines/long_distance/GT_MetaTileEntity_LongDistancePipelineFluid.java @@ -49,7 +49,11 @@ public class GT_MetaTileEntity_LongDistancePipelineFluid extends GT_MetaTileEnti public boolean isSameClass(GT_MetaTileEntity_LongDistancePipelineBase other) { return other instanceof GT_MetaTileEntity_LongDistancePipelineFluid; } - + + public int getPipeMeta() { + return 0; + } + public IFluidHandler getTank() { final IGregTechTileEntity tTile = mTarget.getBaseMetaTileEntity(); TileEntity tankTile = tTile.getTileEntityAtSide(tTile.getBackFacing()); diff --git a/src/main/java/gregtech/common/tileentities/machines/long_distance/GT_MetaTileEntity_LongDistancePipelineItem.java b/src/main/java/gregtech/common/tileentities/machines/long_distance/GT_MetaTileEntity_LongDistancePipelineItem.java index 0d7e6fb39f..da833321e4 100644 --- a/src/main/java/gregtech/common/tileentities/machines/long_distance/GT_MetaTileEntity_LongDistancePipelineItem.java +++ b/src/main/java/gregtech/common/tileentities/machines/long_distance/GT_MetaTileEntity_LongDistancePipelineItem.java @@ -49,6 +49,9 @@ public class GT_MetaTileEntity_LongDistancePipelineItem extends GT_MetaTileEntit return other instanceof GT_MetaTileEntity_LongDistancePipelineItem; } + public int getPipeMeta() { + return 1; + } public IInventory getInventory() { final IGregTechTileEntity tTile = mTarget.getBaseMetaTileEntity(); |