diff --git a/common/buildcraft/BuildCraftFactory.java b/common/buildcraft/BuildCraftFactory.java
index 3d75bc94..f79138aa 100644
--- a/common/buildcraft/BuildCraftFactory.java
+++ b/common/buildcraft/BuildCraftFactory.java
@@ -11,6 +11,7 @@ import buildcraft.core.DefaultProps;
import buildcraft.core.InterModComms;
import buildcraft.core.Version;
import buildcraft.core.proxy.CoreProxy;
+import buildcraft.core.utils.ConfigUtils;
import buildcraft.factory.BlockAutoWorkbench;
import buildcraft.factory.BlockFloodGate;
import buildcraft.factory.BlockFrame;
@@ -61,12 +62,14 @@ import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.ForgeChunkManager;
import net.minecraftforge.common.ForgeChunkManager.Ticket;
import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.common.Property;
import net.minecraftforge.event.ForgeSubscribe;
@Mod(name = "BuildCraft Factory", version = Version.VERSION, useMetadata = false, modid = "BuildCraft|Factory", dependencies = DefaultProps.DEPENDENCY_CORE)
@NetworkMod(channels = {DefaultProps.NET_CHANNEL_NAME}, packetHandler = PacketHandlerFactory.class, clientSideRequired = true, serverSideRequired = true)
public class BuildCraftFactory {
+ public static final int MINING_MJ_COST_PER_BLOCK = 64;
public static BlockQuarry quarryBlock;
public static BlockMiningWell miningWellBlock;
public static BlockAutoWorkbench autoWorkbenchBlock;
@@ -77,8 +80,10 @@ public class BuildCraftFactory {
public static BlockTank tankBlock;
public static BlockRefinery refineryBlock;
public static BlockHopper hopperBlock;
- public static boolean hopperDisabled;
public static boolean allowMining = true;
+ public static boolean quarryOneTimeUse = false;
+ public static float miningMultiplier = 1;
+ public static int miningDepth = 256;
public static PumpDimensionList pumpDimensionList;
@Instance("BuildCraft|Factory")
public static BuildCraftFactory instance;
@@ -133,10 +138,7 @@ public class BuildCraftFactory {
CoreProxy.proxy.registerTileEntity(TileFloodGate.class, "net.minecraft.src.buildcraft.factory.TileFloodGate");
CoreProxy.proxy.registerTileEntity(TileTank.class, "net.minecraft.src.buildcraft.factory.TileTank");
CoreProxy.proxy.registerTileEntity(TileRefinery.class, "net.minecraft.src.buildcraft.factory.Refinery");
-
- if (!hopperDisabled) {
- CoreProxy.proxy.registerTileEntity(TileHopper.class, "net.minecraft.src.buildcraft.factory.TileHopper");
- }
+ CoreProxy.proxy.registerTileEntity(TileHopper.class, "net.minecraft.src.buildcraft.factory.TileHopper");
FactoryProxy.proxy.initializeTileEntities();
@@ -152,9 +154,19 @@ public class BuildCraftFactory {
@EventHandler
public void initialize(FMLPreInitializationEvent evt) {
- allowMining = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "mining.enabled", true).getBoolean(true);
+ ConfigUtils genCat = new ConfigUtils(BuildCraftCore.mainConfiguration, Configuration.CATEGORY_GENERAL);
- pumpDimensionList = new PumpDimensionList(BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "pumping.controlList", DefaultProps.PUMP_DIMENSION_LIST).getString());
+ allowMining = genCat.get("mining.enabled", true, "disables the recipes for automated mining machines");
+ quarryOneTimeUse = genCat.get("quarry.one.time.use", false, "Quarry cannot be picked back up after placement");
+ miningMultiplier = genCat.get("mining.cost.multipler", 1F, 1F, 10F, "cost multiplier for mining operations, range (1.0 - 10.0)\nhigh values may render engines incapable of powering machines directly");
+ miningDepth = genCat.get("mining.depth", 2, 256, 256, "how far below the machine can mining machines dig, range (2 - 256), default 256");
+
+ Property pumpList = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "pumping.controlList", DefaultProps.PUMP_DIMENSION_LIST);
+ pumpList.comment = "Allows admins to whitelist or blacklist pumping of specific fluids in specific dimensions.\n"
+ + "Eg. \"-/-1/Lava\" will disable lava in the nether. \"-/*/Lava\" will disable lava in any dimension. \"+/0/*\" will enable any fluid in the overworld.\n"
+ + "Entries are comma seperated, banned fluids have precedence over allowed ones."
+ + "Default is \"+/*/*,+/-1/Lava\" - the second redundant entry (\"+/-1/Lava\") is there to show the format.";
+ pumpDimensionList = new PumpDimensionList(pumpList.getString());
int miningWellId = BuildCraftCore.mainConfiguration.getBlock("miningWell.id", DefaultProps.MINING_WELL_ID).getInt(DefaultProps.MINING_WELL_ID);
int plainPipeId = BuildCraftCore.mainConfiguration.getBlock("drill.id", DefaultProps.DRILL_ID).getInt(DefaultProps.DRILL_ID);
diff --git a/common/buildcraft/api/power/PowerHandler.java b/common/buildcraft/api/power/PowerHandler.java
index bc23ebda..6965122b 100644
--- a/common/buildcraft/api/power/PowerHandler.java
+++ b/common/buildcraft/api/power/PowerHandler.java
@@ -23,7 +23,7 @@ public final class PowerHandler {
case STORAGE:
return true;
default:
- return false;
+ return false;
}
}
@@ -33,11 +33,16 @@ public final class PowerHandler {
case STORAGE:
return true;
default:
- return false;
+ return false;
}
}
}
+ /**
+ * Extend this class to create custom Perdition algorithms (its not final).
+ *
+ * NOTE: It is not possible to create a Zero perdition algorithm.
+ */
public static class PerditionCalculator {
public static final float DEFAULT_POWERLOSS = 1F;
@@ -48,6 +53,11 @@ public final class PowerHandler {
powerLoss = DEFAULT_POWERLOSS;
}
+ /**
+ * Simple constructor for simple Perdition per tick.
+ *
+ * @param powerLoss power loss per tick
+ */
public PerditionCalculator(float powerLoss) {
if (powerLoss < MIN_POWERLOSS) {
powerLoss = MIN_POWERLOSS;
diff --git a/common/buildcraft/core/utils/ConfigUtils.java b/common/buildcraft/core/utils/ConfigUtils.java
new file mode 100644
index 00000000..df4cfde7
--- /dev/null
+++ b/common/buildcraft/core/utils/ConfigUtils.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) SpaceToad, 2011-2012
+ * http://www.mod-buildcraft.com
+ *
+ * BuildCraft is distributed under the terms of the Minecraft Mod Public
+ * License 1.0, or MMPL. Please check the contents of the license located in
+ * http://www.mod-buildcraft.com/MMPL-1.0.txt
+ */
+package buildcraft.core.utils;
+
+import buildcraft.BuildCraftCore;
+import java.util.logging.Level;
+import net.minecraftforge.common.Configuration;
+import net.minecraftforge.common.Property;
+
+/**
+ *
+ * @author CovertJaguar
+ */
+public class ConfigUtils {
+
+ private static final String COMMENT_PREFIX = "";
+ private static final String COMMENT_SUFFIX = "";
+ private final Configuration config;
+ private final String cat;
+
+ public ConfigUtils(Configuration config, String cat) {
+ this.config = config;
+ this.cat = cat;
+ }
+
+ public boolean get(String tag, boolean defaultValue, String comment) {
+ return get(tag, defaultValue, false, comment);
+ }
+
+ public boolean get(String tag, boolean defaultValue, boolean reset, String comment) {
+ comment = COMMENT_PREFIX + comment.replace("{t}", tag) + COMMENT_SUFFIX;
+ Property prop = config.get(cat, tag, defaultValue);
+ prop.comment = comment;
+ boolean ret = parseBoolean(prop, defaultValue);
+ if (reset)
+ prop.set(defaultValue);
+ return ret;
+ }
+
+ public int get(String tag, int defaultValue, String comment) {
+ comment = COMMENT_PREFIX + comment.replace("{t}", tag) + COMMENT_SUFFIX;
+ Property prop = config.get(cat, tag, defaultValue);
+ prop.comment = comment;
+ return parseInteger(prop, defaultValue);
+ }
+
+ public int get(String tag, int min, int defaultValue, int max, String comment) {
+ comment = COMMENT_PREFIX + comment.replace("{t}", tag) + COMMENT_SUFFIX;
+ Property prop = config.get(cat, tag, defaultValue);
+ prop.comment = comment;
+ int parsed = parseInteger(prop, defaultValue);
+ int clamped = Math.max(parsed, min);
+ clamped = Math.min(clamped, max);
+ if (clamped != parsed)
+ prop.set(clamped);
+ return clamped;
+ }
+
+ public float get(String tag, float min, float defaultValue, float max, String comment) {
+ comment = COMMENT_PREFIX + comment.replace("{t}", tag) + COMMENT_SUFFIX;
+ Property prop = config.get(cat, tag, defaultValue);
+ prop.comment = comment;
+ double parsed = parseDouble(prop, defaultValue);
+ double clamped = Math.max(parsed, min);
+ clamped = Math.min(clamped, max);
+ if (clamped != parsed)
+ prop.set(clamped);
+ return (float) clamped;
+ }
+
+ private boolean parseBoolean(Property prop, boolean defaultValue) {
+ String value = prop.getString();
+ boolean parsed;
+ try {
+ parsed = Boolean.parseBoolean(value);
+ } catch (NumberFormatException ex) {
+ BuildCraftCore.bcLog.log(Level.WARNING, "Failed to parse config tag, reseting to default: " + prop.getName(), ex);
+ prop.set(defaultValue);
+ return defaultValue;
+ }
+ return parsed;
+ }
+
+ private int parseInteger(Property prop, int defaultValue) {
+ String value = prop.getString();
+ int parsed;
+ try {
+ parsed = Integer.parseInt(value);
+ } catch (NumberFormatException ex) {
+ BuildCraftCore.bcLog.log(Level.WARNING, "Failed to parse config tag, reseting to default: " + prop.getName(), ex);
+ prop.set(defaultValue);
+ return defaultValue;
+ }
+ return parsed;
+ }
+
+ private double parseDouble(Property prop, double defaultValue) {
+ String value = prop.getString();
+ double parsed;
+ try {
+ parsed = Double.parseDouble(value);
+ } catch (NumberFormatException ex) {
+ BuildCraftCore.bcLog.log(Level.WARNING, "Failed to parse config tag, reseting to default: " + prop.getName(), ex);
+ prop.set(defaultValue);
+ return defaultValue;
+ }
+ return parsed;
+ }
+}
diff --git a/common/buildcraft/factory/BlockQuarry.java b/common/buildcraft/factory/BlockQuarry.java
index ecee8fbd..d5e15f03 100644
--- a/common/buildcraft/factory/BlockQuarry.java
+++ b/common/buildcraft/factory/BlockQuarry.java
@@ -1,12 +1,10 @@
/**
- * Copyright (c) SpaceToad, 2011
- * http://www.mod-buildcraft.com
+ * Copyright (c) SpaceToad, 2011 http://www.mod-buildcraft.com
*
- * BuildCraft is distributed under the terms of the Minecraft Mod Public
- * License 1.0, or MMPL. Please check the contents of the license located in
+ * BuildCraft is distributed under the terms of the Minecraft Mod Public License
+ * 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
*/
-
package buildcraft.factory;
import buildcraft.BuildCraftFactory;
@@ -49,7 +47,7 @@ public class BlockQuarry extends BlockMachineRoot {
ForgeDirection orientation = Utils.get2dOrientation(new Position(entityliving.posX, entityliving.posY, entityliving.posZ), new Position(i, j, k));
- world.setBlockMetadataWithNotify(i, j, k, orientation.getOpposite().ordinal(),1);
+ world.setBlockMetadataWithNotify(i, j, k, orientation.getOpposite().ordinal(), 1);
if (entityliving instanceof EntityPlayer) {
TileQuarry tq = (TileQuarry) world.getBlockTileEntity(i, j, k);
tq.placedBy = (EntityPlayer) entityliving;
@@ -62,14 +60,14 @@ public class BlockQuarry extends BlockMachineRoot {
if (j == 0 && i == 3)
return textureFront;
- if (i == j && i>1) // Front can't be top or bottom.
+ if (i == j && i > 1) // Front can't be top or bottom.
return textureFront;
switch (i) {
- case 1:
- return textureTop;
- default:
- return textureSide;
+ case 1:
+ return textureTop;
+ default:
+ return textureSide;
}
}
@@ -91,25 +89,25 @@ public class BlockQuarry extends BlockMachineRoot {
int meta = world.getBlockMetadata(i, j, k);
if ((meta & 8) == 0) {
- world.setBlockMetadataWithNotify(i, j, k, meta | 8,0);
+ world.setBlockMetadataWithNotify(i, j, k, meta | 8, 0);
ForgeDirection[] dirs = ForgeDirection.VALID_DIRECTIONS;
for (ForgeDirection dir : dirs) {
switch (dir) {
- case UP:
- searchFrames(world, i, j + 1, k);
- case DOWN:
- searchFrames(world, i, j - 1, k);
- case SOUTH:
- searchFrames(world, i, j, k + 1);
- case NORTH:
- searchFrames(world, i, j, k - 1);
- case EAST:
- searchFrames(world, i + 1, j, k);
- case WEST:
- default:
- searchFrames(world, i - 1, j, k);
+ case UP:
+ searchFrames(world, i, j + 1, k);
+ case DOWN:
+ searchFrames(world, i, j - 1, k);
+ case SOUTH:
+ searchFrames(world, i, j, k + 1);
+ case NORTH:
+ searchFrames(world, i, j, k - 1);
+ case EAST:
+ searchFrames(world, i + 1, j, k);
+ case WEST:
+ default:
+ searchFrames(world, i - 1, j, k);
}
}
}
@@ -117,10 +115,18 @@ public class BlockQuarry extends BlockMachineRoot {
private void markFrameForDecay(World world, int x, int y, int z) {
if (world.getBlockId(x, y, z) == BuildCraftFactory.frameBlock.blockID) {
- world.setBlockMetadataWithNotify(x, y, z, 1,0);
+ world.setBlockMetadataWithNotify(x, y, z, 1, 0);
}
}
+ @Override
+ public ArrayList getBlockDropped(World world, int x, int y, int z, int metadata, int fortune) {
+ if (BuildCraftFactory.quarryOneTimeUse) {
+ return new ArrayList();
+ }
+ return super.getBlockDropped(world, x, y, z, metadata, fortune);
+ }
+
@Override
public void breakBlock(World world, int i, int j, int k, int par5, int par6) {
@@ -214,7 +220,7 @@ public class BlockQuarry extends BlockMachineRoot {
return false;
}
- @SuppressWarnings({ "unchecked", "rawtypes" })
+ @SuppressWarnings({"unchecked", "rawtypes"})
@Override
public void addCreativeItems(ArrayList itemList) {
itemList.add(new ItemStack(this));
@@ -222,10 +228,9 @@ public class BlockQuarry extends BlockMachineRoot {
@Override
@SideOnly(Side.CLIENT)
- public void registerIcons(IconRegister par1IconRegister)
- {
- textureSide = par1IconRegister.registerIcon("buildcraft:quarry_side");
- textureTop = par1IconRegister.registerIcon("buildcraft:quarry_top");
- textureFront = par1IconRegister.registerIcon("buildcraft:quarry_front");
+ public void registerIcons(IconRegister par1IconRegister) {
+ textureSide = par1IconRegister.registerIcon("buildcraft:quarry_side");
+ textureTop = par1IconRegister.registerIcon("buildcraft:quarry_top");
+ textureFront = par1IconRegister.registerIcon("buildcraft:quarry_front");
}
}
diff --git a/common/buildcraft/factory/FactoryProxyClient.java b/common/buildcraft/factory/FactoryProxyClient.java
index daebdc08..11ef2cd8 100644
--- a/common/buildcraft/factory/FactoryProxyClient.java
+++ b/common/buildcraft/factory/FactoryProxyClient.java
@@ -17,18 +17,25 @@ import net.minecraft.util.Icon;
import net.minecraft.world.World;
public class FactoryProxyClient extends FactoryProxy {
- public static Icon pumpTexture;
- public static Icon drillTexture;
- public static Icon drillHeadTexture;
- @Override
+ public static Icon pumpTexture;
+ public static Icon drillTexture;
+ public static Icon drillHeadTexture;
+
+ @Override
public void initializeTileEntities() {
super.initializeTileEntities();
- ClientRegistry.bindTileEntitySpecialRenderer(TileTank.class, new RenderTank());
- ClientRegistry.bindTileEntitySpecialRenderer(TileRefinery.class, new RenderRefinery());
- RenderingEntityBlocks.blockByEntityRenders.put(new EntityRenderIndex(BuildCraftFactory.refineryBlock, 0), new RenderRefinery());
- if (!BuildCraftFactory.hopperDisabled) {
+ if (BuildCraftFactory.tankBlock != null) {
+ ClientRegistry.bindTileEntitySpecialRenderer(TileTank.class, new RenderTank());
+ }
+
+ if (BuildCraftFactory.refineryBlock != null) {
+ ClientRegistry.bindTileEntitySpecialRenderer(TileRefinery.class, new RenderRefinery());
+ RenderingEntityBlocks.blockByEntityRenders.put(new EntityRenderIndex(BuildCraftFactory.refineryBlock, 0), new RenderRefinery());
+ }
+
+ if (BuildCraftFactory.hopperBlock != null) {
ClientRegistry.bindTileEntitySpecialRenderer(TileHopper.class, new RenderHopper());
RenderingEntityBlocks.blockByEntityRenders.put(new EntityRenderIndex(BuildCraftFactory.hopperBlock, 0), new RenderHopper());
}
@@ -53,26 +60,23 @@ public class FactoryProxyClient extends FactoryProxy {
}
@Override
- public EntityBlock newPumpTube(World w)
- {
- EntityBlock eb = super.newPumpTube(w);
- eb.texture = pumpTexture;
- return eb;
+ public EntityBlock newPumpTube(World w) {
+ EntityBlock eb = super.newPumpTube(w);
+ eb.texture = pumpTexture;
+ return eb;
}
@Override
- public EntityBlock newDrill(World w, double i, double j, double k, double l, double d, double e)
- {
- EntityBlock eb = super.newDrill(w, i, j, k, l, d, e);
- eb.texture = drillTexture;
- return eb;
+ public EntityBlock newDrill(World w, double i, double j, double k, double l, double d, double e) {
+ EntityBlock eb = super.newDrill(w, i, j, k, l, d, e);
+ eb.texture = drillTexture;
+ return eb;
}
@Override
- public EntityBlock newDrillHead(World w, double i, double j, double k, double l, double d, double e)
- {
- EntityBlock eb = super.newDrillHead(w, i, j, k, l, d, e);
- eb.texture = drillHeadTexture;
- return eb;
- }
+ public EntityBlock newDrillHead(World w, double i, double j, double k, double l, double d, double e) {
+ EntityBlock eb = super.newDrillHead(w, i, j, k, l, d, e);
+ eb.texture = drillHeadTexture;
+ return eb;
+ }
}
diff --git a/common/buildcraft/factory/TileMiningWell.java b/common/buildcraft/factory/TileMiningWell.java
index ba4d5257..03c8b3fd 100644
--- a/common/buildcraft/factory/TileMiningWell.java
+++ b/common/buildcraft/factory/TileMiningWell.java
@@ -31,7 +31,9 @@ public class TileMiningWell extends TileBuildCraft implements IMachine, IPowerRe
public TileMiningWell() {
powerHandler = new PowerHandler(this, Type.MACHINE);
- powerHandler.configure(100, 100, 60, 1000);
+
+ float mj = BuildCraftFactory.MINING_MJ_COST_PER_BLOCK * BuildCraftFactory.miningMultiplier;
+ powerHandler.configure(100 * BuildCraftFactory.miningMultiplier, 100 * BuildCraftFactory.miningMultiplier, mj, 1000 * BuildCraftFactory.miningMultiplier);
powerHandler.configurePowerPerdition(1, 1);
}
@@ -41,7 +43,8 @@ public class TileMiningWell extends TileBuildCraft implements IMachine, IPowerRe
*/
@Override
public void doWork(PowerHandler workProvider) {
- if (powerHandler.useEnergy(60, 60, true) != 60)
+ float mj = BuildCraftFactory.MINING_MJ_COST_PER_BLOCK * BuildCraftFactory.miningMultiplier;
+ if (powerHandler.useEnergy(mj, mj, true) != mj)
return;
World world = worldObj;
@@ -52,7 +55,7 @@ public class TileMiningWell extends TileBuildCraft implements IMachine, IPowerRe
depth = depth - 1;
}
- if (depth < 1 || !BlockUtil.canChangeBlock(world, xCoord, depth, zCoord)) {
+ if (depth < 1 || depth < yCoord - BuildCraftFactory.miningDepth || !BlockUtil.canChangeBlock(world, xCoord, depth, zCoord)) {
isDigging = false;
return;
}
diff --git a/common/buildcraft/factory/TileQuarry.java b/common/buildcraft/factory/TileQuarry.java
index d3bd38d6..5fb97dbc 100644
--- a/common/buildcraft/factory/TileQuarry.java
+++ b/common/buildcraft/factory/TileQuarry.java
@@ -72,6 +72,7 @@ public class TileQuarry extends TileBuildCraft implements IMachine, IPowerRecept
public PowerHandler powerHandler;
boolean isDigging = false;
public static final int MAX_ENERGY = 15000;
+ private static final PowerHandler.PerditionCalculator PERDITION = new PowerHandler.PerditionCalculator(2 * BuildCraftFactory.miningMultiplier);
public TileQuarry() {
powerHandler = new PowerHandler(this, PowerHandler.Type.MACHINE);
@@ -79,8 +80,9 @@ public class TileQuarry extends TileBuildCraft implements IMachine, IPowerRecept
}
private void initPowerProvider() {
- powerHandler.configure(50, 100, 25, MAX_ENERGY);
- powerHandler.configurePowerPerdition(2, 1);
+ float mj = 25 * BuildCraftFactory.miningMultiplier;
+ powerHandler.configure(50 * BuildCraftFactory.miningMultiplier, 100 * BuildCraftFactory.miningMultiplier, mj, MAX_ENERGY * BuildCraftFactory.miningMultiplier);
+ powerHandler.setPerdition(PERDITION);
}
public void createUtilsIfNeeded() {
@@ -194,9 +196,9 @@ public class TileQuarry extends TileBuildCraft implements IMachine, IPowerRecept
}
protected void buildFrame() {
-
- powerHandler.configure(50, 100, 25, MAX_ENERGY);
- if (powerHandler.useEnergy(25, 25, true) != 25)
+ float mj = 25 * BuildCraftFactory.miningMultiplier;
+ powerHandler.configure(50 * BuildCraftFactory.miningMultiplier, 100 * BuildCraftFactory.miningMultiplier, mj, MAX_ENERGY * BuildCraftFactory.miningMultiplier);
+ if (powerHandler.useEnergy(mj, mj, true) != mj)
return;
if (builder == null) {
@@ -210,8 +212,10 @@ public class TileQuarry extends TileBuildCraft implements IMachine, IPowerRecept
}
protected void dig() {
- powerHandler.configure(100, 500, 60, MAX_ENERGY);
- if (powerHandler.useEnergy(60, 60, true) != 60)
+ powerHandler.configure(100 * BuildCraftFactory.miningMultiplier, 500 * BuildCraftFactory.miningMultiplier, BuildCraftFactory.MINING_MJ_COST_PER_BLOCK, MAX_ENERGY * BuildCraftFactory.miningMultiplier);
+
+ float mj = BuildCraftFactory.MINING_MJ_COST_PER_BLOCK * BuildCraftFactory.miningMultiplier;
+ if (powerHandler.useEnergy(mj, mj, true) != mj)
return;
if (!findTarget(true)) {
@@ -278,7 +282,7 @@ public class TileQuarry extends TileBuildCraft implements IMachine, IPowerRecept
Integer[][] columnHeights = new Integer[bluePrintBuilder.bluePrint.sizeX - 2][bluePrintBuilder.bluePrint.sizeZ - 2];
boolean[][] blockedColumns = new boolean[bluePrintBuilder.bluePrint.sizeX - 2][bluePrintBuilder.bluePrint.sizeZ - 2];
- for (int searchY = yCoord + 3; searchY >= 0; --searchY) {
+ for (int searchY = yCoord + 3; searchY >= 1 && searchY >= yCoord - BuildCraftFactory.miningDepth; --searchY) {
int startX, endX, incX;
if (searchY % 2 == 0) {