revert february 2013 optimization - fix 3 issues related to quarry mining
This commit is contained in:
parent
3ba539ade3
commit
915d900a40
6 changed files with 4 additions and 21 deletions
|
@ -38,7 +38,7 @@ public abstract class Schematic {
|
|||
* Blocks are build in various stages, in order to make sure that a block
|
||||
* can indeed be placed, and that it's unlikely to disturb other blocks.
|
||||
*/
|
||||
public static enum BuildingStage {
|
||||
public enum BuildingStage {
|
||||
/**
|
||||
* Standalone blocks can be placed in the air, and they don't change
|
||||
* once placed.
|
||||
|
|
|
@ -6,6 +6,7 @@ Bugs fixed:
|
|||
* [#2841] Another crash with Oil in the Nether (asie)
|
||||
* [#2837] Massive lag with Construction Markers (hea3ven)
|
||||
* [#2831] Robots sinking through the ground (hea3ven)
|
||||
* [#2825, #2618, #1777] Quarry issues with just about every translucent block (asie)
|
||||
* Allow Builders to use arbitrary IPathProviders (asie)
|
||||
* Block breaking robots sleeping in mid air (hea3ven)
|
||||
* Error in robot AI loading (hea3ven)
|
||||
|
|
|
@ -466,7 +466,6 @@ public class BuildCraftCore extends BuildCraftMod {
|
|||
BuildCraftAPI.softBlocks.add(Blocks.snow);
|
||||
BuildCraftAPI.softBlocks.add(Blocks.vine);
|
||||
BuildCraftAPI.softBlocks.add(Blocks.fire);
|
||||
BuildCraftAPI.softBlocks.add(Blocks.air);
|
||||
|
||||
FMLCommonHandler.instance().bus().register(new TickHandlerCore());
|
||||
|
||||
|
|
|
@ -313,9 +313,7 @@ public class TileQuarry extends TileAbstractBuilder implements IHasWork, ISidedI
|
|||
|
||||
if (!columnVisitListIsUpdated) { // nextTarget may not be accurate, at least search the target column for changes
|
||||
for (int y = nextTarget[1] + 1; y < yCoord + 3; y++) {
|
||||
Block block = worldObj.getBlock(nextTarget[0], y, nextTarget[2]);
|
||||
if (BlockUtils.isAnObstructingBlock(block, worldObj, nextTarget[0], y, nextTarget[2])
|
||||
|| !BuildCraftAPI.isSoftBlock(worldObj, nextTarget[0], y, nextTarget[2])) {
|
||||
if (isQuarriableBlock(nextTarget[0], y, nextTarget[2])) {
|
||||
createColumnVisitList();
|
||||
columnVisitListIsUpdated = true;
|
||||
nextTarget = null;
|
||||
|
@ -340,8 +338,6 @@ public class TileQuarry extends TileAbstractBuilder implements IHasWork, ISidedI
|
|||
*/
|
||||
private void createColumnVisitList() {
|
||||
visitList.clear();
|
||||
|
||||
Integer[][] columnHeights = new Integer[builder.blueprint.sizeX - 2][builder.blueprint.sizeZ - 2];
|
||||
boolean[][] blockedColumns = new boolean[builder.blueprint.sizeX - 2][builder.blueprint.sizeZ - 2];
|
||||
|
||||
for (int searchY = yCoord + 3; searchY >= 1; --searchY) {
|
||||
|
@ -372,17 +368,8 @@ public class TileQuarry extends TileAbstractBuilder implements IHasWork, ISidedI
|
|||
|
||||
for (int searchZ = startZ; searchZ != endZ; searchZ += incZ) {
|
||||
if (!blockedColumns[searchX][searchZ]) {
|
||||
Integer height = columnHeights[searchX][searchZ];
|
||||
int bx = box.xMin + searchX + 1, by = searchY, bz = box.zMin + searchZ + 1;
|
||||
|
||||
if (height == null) {
|
||||
columnHeights[searchX][searchZ] = height = worldObj.getHeightValue(bx, bz);
|
||||
}
|
||||
|
||||
if (height > 0 && height < by && worldObj.provider.dimensionId != -1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Block block = worldObj.getBlock(bx, by, bz);
|
||||
|
||||
if (!BlockUtils.canChangeBlock(block, worldObj, bx, by, bz)) {
|
||||
|
@ -391,10 +378,6 @@ public class TileQuarry extends TileAbstractBuilder implements IHasWork, ISidedI
|
|||
visitList.add(new int[]{bx, by, bz});
|
||||
}
|
||||
|
||||
if (height == 0 && !worldObj.isAirBlock(bx, by, bz)) {
|
||||
columnHeights[searchX][searchZ] = by;
|
||||
}
|
||||
|
||||
// Stop at two planes - generally any obstructions will have been found and will force a recompute prior to this
|
||||
|
||||
if (visitList.size() > builder.blueprint.sizeZ * builder.blueprint.sizeX * 2) {
|
||||
|
|
|
@ -119,6 +119,7 @@ public final class BlockUtils {
|
|||
world.spawnEntityInWorld(entityitem);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static boolean isAnObstructingBlock(Block block, World world, int x, int y, int z) {
|
||||
if (block == null || block.isAir(world, x, y, z)) {
|
||||
return false;
|
||||
|
|
|
@ -14,7 +14,6 @@ import net.minecraft.world.IBlockAccess;
|
|||
import buildcraft.api.core.BuildCraftAPI;
|
||||
|
||||
public class WorldPropertyIsSoft extends WorldProperty {
|
||||
|
||||
@Override
|
||||
public boolean get(IBlockAccess blockAccess, Block block, int meta, int x, int y, int z) {
|
||||
return block == null
|
||||
|
|
Loading…
Reference in a new issue