diff --git a/src/minecraft/hydraulic/core/path/PathfinderCheckerPipes.java b/src/minecraft/hydraulic/core/path/PathfinderCheckerPipes.java new file mode 100644 index 00000000..42bcc46c --- /dev/null +++ b/src/minecraft/hydraulic/core/path/PathfinderCheckerPipes.java @@ -0,0 +1,48 @@ +package hydraulic.core.path; + +import hydraulic.api.IPipeConnection; + +import java.util.Arrays; + +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.ForgeDirection; +import universalelectricity.core.block.IConductor; +import universalelectricity.core.block.IConnectionProvider; +import universalelectricity.core.path.Pathfinder; + +/** + * Check if a conductor connects with another. + */ +public class PathfinderCheckerPipes extends Pathfinder +{ + public PathfinderCheckerPipes(final IConnectionProvider targetConnector, final IConnectionProvider... ignoreConnector) + { + super(new IPathCallBack() + { + @Override + public boolean isValidNode(Pathfinder finder, ForgeDirection direction, IConnectionProvider provider, IConnectionProvider connectedBlock) + { + if (connectedBlock instanceof IPipeConnection && !Arrays.asList(ignoreConnector).contains(connectedBlock)) + { + if (((IPipeConnection) connectedBlock).canConnect((TileEntity) connectedBlock, direction.getOpposite())) + { + return true; + } + } + return false; + } + + @Override + public boolean onSearch(Pathfinder finder, IConnectionProvider provider) + { + if (provider == targetConnector) + { + finder.results.add(provider); + return true; + } + + return false; + } + }); + } +}