cherry pick 3x faster cache check
This commit is contained in:
		@@ -77,6 +77,10 @@ public final class CachedRegion implements IBlockTypeAccess {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public final boolean isCached(int x, int z) {
 | 
			
		||||
        return chunks[x >> 4][z >> 4] != null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public final LinkedList<BlockPos> getLocationsOf(String block) {
 | 
			
		||||
        LinkedList<BlockPos> res = new LinkedList<>();
 | 
			
		||||
        for (int chunkX = 0; chunkX < 32; chunkX++) {
 | 
			
		||||
 
 | 
			
		||||
@@ -59,7 +59,8 @@ public final class CachedWorld implements IBlockTypeAccess {
 | 
			
		||||
        if (!Files.exists(directory)) {
 | 
			
		||||
            try {
 | 
			
		||||
                Files.createDirectories(directory);
 | 
			
		||||
            } catch (IOException ignored) {}
 | 
			
		||||
            } catch (IOException ignored) {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        this.directory = directory.toString();
 | 
			
		||||
        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);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    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) {
 | 
			
		||||
        LinkedList<BlockPos> res = new LinkedList<>();
 | 
			
		||||
        int playerRegionX = playerFeet().getX() >> 9;
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,7 @@
 | 
			
		||||
package baritone.pathing.calc;
 | 
			
		||||
 | 
			
		||||
import baritone.Baritone;
 | 
			
		||||
import baritone.chunk.CachedWorld;
 | 
			
		||||
import baritone.chunk.WorldProvider;
 | 
			
		||||
import baritone.pathing.calc.openset.BinaryHeapOpenSet;
 | 
			
		||||
import baritone.pathing.calc.openset.IOpenSet;
 | 
			
		||||
@@ -70,6 +71,7 @@ public class AStarPathFinder extends AbstractNodeCostSearch implements Helper {
 | 
			
		||||
        CalculationContext calcContext = new CalculationContext();
 | 
			
		||||
        HashSet<BetterBlockPos> favored = favoredPositions.orElse(null);
 | 
			
		||||
        currentlyRunning = this;
 | 
			
		||||
        CachedWorld world = Optional.ofNullable(WorldProvider.INSTANCE.getCurrentWorld()).map(w -> w.cache).orElse(null);
 | 
			
		||||
        long startTime = System.currentTimeMillis();
 | 
			
		||||
        boolean slowPath = Baritone.settings().slowPath.get();
 | 
			
		||||
        long timeoutTime = startTime + (slowPath ? Baritone.settings().slowPathTimeoutMS : Baritone.settings().pathTimeoutMS).<Long>get();
 | 
			
		||||
@@ -112,8 +114,8 @@ public class AStarPathFinder extends AbstractNodeCostSearch implements Helper {
 | 
			
		||||
                }
 | 
			
		||||
                BetterBlockPos dest = (BetterBlockPos) movementToGetToNeighbor.getDest();
 | 
			
		||||
                boolean isPositionCached = false;
 | 
			
		||||
                if (WorldProvider.INSTANCE.getCurrentWorld() != null) {
 | 
			
		||||
                    if (WorldProvider.INSTANCE.getCurrentWorld().cache.getBlock(dest) != null) {
 | 
			
		||||
                if (world != null) {
 | 
			
		||||
                    if (world.isCached(dest)) {
 | 
			
		||||
                        isPositionCached = true;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user