Change how pump handles water.
Added config "consumeWater" which defaults to false. If false, pumps will not remove water source blocks if it detects more than 9 blocks of water in the area. This should significantly reduce chunk rerenders and search cost (search terminates after 9 blocks). Essentially making a water pump nearly as computer friendly as an Aqueous Accumulator.
This commit is contained in:
parent
0ae4035dab
commit
ae59a6cc88
2 changed files with 13 additions and 4 deletions
|
@ -152,7 +152,7 @@ public class BuildCraftCore {
|
||||||
|
|
||||||
public static boolean loadDefaultRecipes = true;
|
public static boolean loadDefaultRecipes = true;
|
||||||
public static boolean forcePneumaticPower = true;
|
public static boolean forcePneumaticPower = true;
|
||||||
public static boolean consumeWaterSources = true;
|
public static boolean consumeWaterSources = false;
|
||||||
|
|
||||||
public static BptItem[] itemBptProps = new BptItem[Item.itemsList.length];
|
public static BptItem[] itemBptProps = new BptItem[Item.itemsList.length];
|
||||||
|
|
||||||
|
@ -220,9 +220,12 @@ public class BuildCraftCore {
|
||||||
Property diamondGearId = BuildCraftCore.mainConfiguration.getItem("diamondGearItem.id", DefaultProps.DIAMOND_GEAR_ID);
|
Property diamondGearId = BuildCraftCore.mainConfiguration.getItem("diamondGearItem.id", DefaultProps.DIAMOND_GEAR_ID);
|
||||||
Property modifyWorldProp = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "modifyWorld", true);
|
Property modifyWorldProp = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "modifyWorld", true);
|
||||||
modifyWorldProp.comment = "set to false if BuildCraft should not generate custom blocks (e.g. oil)";
|
modifyWorldProp.comment = "set to false if BuildCraft should not generate custom blocks (e.g. oil)";
|
||||||
|
|
||||||
modifyWorld = modifyWorldProp.getBoolean(true);
|
modifyWorld = modifyWorldProp.getBoolean(true);
|
||||||
|
|
||||||
|
Property consumeWater = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "consumeWater", consumeWaterSources);
|
||||||
|
consumeWaterSources = consumeWater.getBoolean(consumeWaterSources);
|
||||||
|
consumeWater.comment = "set to true if the Pump should consume water";
|
||||||
|
|
||||||
if(BuildCraftCore.modifyWorld) {
|
if(BuildCraftCore.modifyWorld) {
|
||||||
springBlock = new BlockSpring(springId.getInt()).setUnlocalizedName("eternalSpring");
|
springBlock = new BlockSpring(springId.getInt()).setUnlocalizedName("eternalSpring");
|
||||||
CoreProxy.proxy.registerBlock(springBlock, ItemSpring.class);
|
CoreProxy.proxy.registerBlock(springBlock, ItemSpring.class);
|
||||||
|
|
|
@ -58,6 +58,7 @@ public class TilePump extends TileBuildCraft implements IMachine, IPowerReceptor
|
||||||
private TileBuffer[] tileBuffer = null;
|
private TileBuffer[] tileBuffer = null;
|
||||||
private SafeTimeTracker timer = new SafeTimeTracker();
|
private SafeTimeTracker timer = new SafeTimeTracker();
|
||||||
private int tick = Utils.RANDOM.nextInt();
|
private int tick = Utils.RANDOM.nextInt();
|
||||||
|
private int numFluidBlocksFound = 0;
|
||||||
|
|
||||||
public TilePump() {
|
public TilePump() {
|
||||||
powerHandler = new PowerHandler(this, Type.MACHINE);
|
powerHandler = new PowerHandler(this, Type.MACHINE);
|
||||||
|
@ -102,9 +103,9 @@ public class TilePump extends TileBuildCraft implements IMachine, IPowerReceptor
|
||||||
if (isFluidAllowed(fluidToPump.getFluid()) && tank.fill(fluidToPump, false) == fluidToPump.amount) {
|
if (isFluidAllowed(fluidToPump.getFluid()) && tank.fill(fluidToPump, false) == fluidToPump.amount) {
|
||||||
|
|
||||||
if (powerHandler.useEnergy(10, 10, true) == 10) {
|
if (powerHandler.useEnergy(10, 10, true) == 10) {
|
||||||
index = getNextIndexToPump(true);
|
|
||||||
|
|
||||||
if (fluidToPump.getFluid() != FluidRegistry.WATER || BuildCraftCore.consumeWaterSources) {
|
if (fluidToPump.getFluid() != FluidRegistry.WATER || BuildCraftCore.consumeWaterSources || numFluidBlocksFound < 9) {
|
||||||
|
index = getNextIndexToPump(true);
|
||||||
BlockUtil.drainBlock(worldObj, index.x, index.y, index.z, true);
|
BlockUtil.drainBlock(worldObj, index.x, index.y, index.z, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,6 +216,7 @@ public class TilePump extends TileBuildCraft implements IMachine, IPowerReceptor
|
||||||
}
|
}
|
||||||
|
|
||||||
public void rebuildQueue() {
|
public void rebuildQueue() {
|
||||||
|
numFluidBlocksFound = 0;
|
||||||
pumpLayerQueues.clear();
|
pumpLayerQueues.clear();
|
||||||
int x = xCoord;
|
int x = xCoord;
|
||||||
int y = aimY;
|
int y = aimY;
|
||||||
|
@ -244,6 +246,9 @@ public class TilePump extends TileBuildCraft implements IMachine, IPowerReceptor
|
||||||
queueForPumping(index.x, index.y, index.z + 1, visitedBlocks, fluidsFound, pumpingFluid);
|
queueForPumping(index.x, index.y, index.z + 1, visitedBlocks, fluidsFound, pumpingFluid);
|
||||||
queueForPumping(index.x, index.y, index.z - 1, visitedBlocks, fluidsFound, pumpingFluid);
|
queueForPumping(index.x, index.y, index.z - 1, visitedBlocks, fluidsFound, pumpingFluid);
|
||||||
|
|
||||||
|
if (pumpingFluid == FluidRegistry.WATER && !BuildCraftCore.consumeWaterSources && numFluidBlocksFound >= 9)
|
||||||
|
return;
|
||||||
|
|
||||||
// if (System.nanoTime() > timeoutTime)
|
// if (System.nanoTime() > timeoutTime)
|
||||||
// return;
|
// return;
|
||||||
}
|
}
|
||||||
|
@ -262,6 +267,7 @@ public class TilePump extends TileBuildCraft implements IMachine, IPowerReceptor
|
||||||
}
|
}
|
||||||
if (canDrainBlock(blockId, x, y, z, pumpingFluid)) {
|
if (canDrainBlock(blockId, x, y, z, pumpingFluid)) {
|
||||||
getLayerQueue(y).add(index);
|
getLayerQueue(y).add(index);
|
||||||
|
numFluidBlocksFound++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue