3x faster cache check

This commit is contained in:
leijurv
2018-08-28 21:14:50 -07:00
parent fd74fcabc0
commit 7ae1a9f6e4
3 changed files with 18 additions and 2 deletions
@@ -77,6 +77,10 @@ public final class CachedRegion implements IBlockTypeAccess {
return null; return null;
} }
public final boolean isCached(int x, int z) {
return chunks[x >> 4][z >> 4] != null;
}
public final LinkedList<BlockPos> getLocationsOf(String block) { public final LinkedList<BlockPos> getLocationsOf(String block) {
LinkedList<BlockPos> res = new LinkedList<>(); LinkedList<BlockPos> res = new LinkedList<>();
for (int chunkX = 0; chunkX < 32; chunkX++) { for (int chunkX = 0; chunkX < 32; chunkX++) {
+13 -1
View File
@@ -59,7 +59,8 @@ public final class CachedWorld implements IBlockTypeAccess {
if (!Files.exists(directory)) { if (!Files.exists(directory)) {
try { try {
Files.createDirectories(directory); Files.createDirectories(directory);
} catch (IOException ignored) {} } catch (IOException ignored) {
}
} }
this.directory = directory.toString(); this.directory = directory.toString();
System.out.println("Cached world directory: " + directory); System.out.println("Cached world directory: " + directory);
@@ -102,6 +103,17 @@ public final class CachedWorld implements IBlockTypeAccess {
return region.getBlock(x & 511, y, z & 511); return region.getBlock(x & 511, y, z & 511);
} }
public final boolean isCached(BlockPos pos) {
int x = pos.getX();
int z = pos.getZ();
CachedRegion region = getRegion(x >> 9, z >> 9);
if (region == null) {
return false;
}
return region.isCached(x & 511, z & 511);
}
public final LinkedList<BlockPos> getLocationsOf(String block, int minimum, int maxRegionDistanceSq) { public final LinkedList<BlockPos> getLocationsOf(String block, int minimum, int maxRegionDistanceSq) {
LinkedList<BlockPos> res = new LinkedList<>(); LinkedList<BlockPos> res = new LinkedList<>();
int playerRegionX = playerFeet().getX() >> 9; int playerRegionX = playerFeet().getX() >> 9;
@@ -135,7 +135,7 @@ public class AStarPathFinder extends AbstractNodeCostSearch implements Helper {
long s=System.nanoTime(); long s=System.nanoTime();
boolean isPositionCached = false; boolean isPositionCached = false;
if (world != null) { if (world != null) {
if (world.getBlock(dest) != null) { if (world.isCached(dest)){
isPositionCached = true; isPositionCached = true;
} }
} }