Merge branch 'master' into segment-calculation
This commit is contained in:
		@@ -247,7 +247,9 @@ public class Settings {
 | 
			
		||||
    public Setting<Integer> movementTimeoutTicks = new Setting<>(100);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Pathing ends after this amount of time, if a path has been found
 | 
			
		||||
     * Pathing ends after this amount of time, but only if a path has been found
 | 
			
		||||
     * <p>
 | 
			
		||||
     * If no valid path (length above the minimum) has been found, pathing continues up until the failure timeout
 | 
			
		||||
     */
 | 
			
		||||
    public Setting<Long> primaryTimeoutMS = new Setting<>(500L);
 | 
			
		||||
 | 
			
		||||
@@ -257,7 +259,9 @@ public class Settings {
 | 
			
		||||
    public Setting<Long> failureTimeoutMS = new Setting<>(2000L);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Planning ahead while executing a segment ends after this amount of time, if a path has been found
 | 
			
		||||
     * Planning ahead while executing a segment ends after this amount of time, but only if a path has been found
 | 
			
		||||
     * <p>
 | 
			
		||||
     * If no valid path (length above the minimum) has been found, pathing continues up until the failure timeout
 | 
			
		||||
     */
 | 
			
		||||
    public Setting<Long> planAheadPrimaryTimeoutMS = new Setting<>(4000L);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -17,10 +17,7 @@
 | 
			
		||||
 | 
			
		||||
package baritone.api.pathing.goals;
 | 
			
		||||
 | 
			
		||||
import net.minecraft.util.math.BlockPos;
 | 
			
		||||
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * A composite of many goals, any one of which satisfies the composite.
 | 
			
		||||
@@ -40,14 +37,6 @@ public class GoalComposite implements Goal {
 | 
			
		||||
        this.goals = goals;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public GoalComposite(BlockPos... blocks) {
 | 
			
		||||
        this(Arrays.asList(blocks));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public GoalComposite(Collection<BlockPos> blocks) {
 | 
			
		||||
        this(blocks.stream().map(GoalBlock::new).toArray(Goal[]::new));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean isInGoal(int x, int y, int z) {
 | 
			
		||||
        for (Goal goal : goals) {
 | 
			
		||||
 
 | 
			
		||||
@@ -48,10 +48,7 @@ public class GoalGetToBlock implements Goal, IGoalRenderPos {
 | 
			
		||||
        int xDiff = x - this.x;
 | 
			
		||||
        int yDiff = y - this.y;
 | 
			
		||||
        int zDiff = z - this.z;
 | 
			
		||||
        if (yDiff < 0) {
 | 
			
		||||
            yDiff++;
 | 
			
		||||
        }
 | 
			
		||||
        return Math.abs(xDiff) + Math.abs(yDiff) + Math.abs(zDiff) <= 1;
 | 
			
		||||
        return Math.abs(xDiff) + Math.abs(yDiff < 0 ? yDiff + 1 : yDiff) + Math.abs(zDiff) <= 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
@@ -59,7 +56,7 @@ public class GoalGetToBlock implements Goal, IGoalRenderPos {
 | 
			
		||||
        int xDiff = x - this.x;
 | 
			
		||||
        int yDiff = y - this.y;
 | 
			
		||||
        int zDiff = z - this.z;
 | 
			
		||||
        return GoalBlock.calculate(xDiff, yDiff, zDiff);
 | 
			
		||||
        return GoalBlock.calculate(xDiff, yDiff < 0 ? yDiff + 1 : yDiff, zDiff);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
 
 | 
			
		||||
@@ -63,10 +63,7 @@ public class GoalTwoBlocks implements Goal, IGoalRenderPos {
 | 
			
		||||
        int xDiff = x - this.x;
 | 
			
		||||
        int yDiff = y - this.y;
 | 
			
		||||
        int zDiff = z - this.z;
 | 
			
		||||
        if (yDiff < 0) {
 | 
			
		||||
            yDiff++;
 | 
			
		||||
        }
 | 
			
		||||
        return GoalBlock.calculate(xDiff, yDiff, zDiff);
 | 
			
		||||
        return GoalBlock.calculate(xDiff, yDiff < 0 ? yDiff + 1 : yDiff, zDiff);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,10 @@ import baritone.utils.PathRenderer;
 | 
			
		||||
import net.minecraft.util.math.BlockPos;
 | 
			
		||||
import net.minecraft.world.chunk.EmptyChunk;
 | 
			
		||||
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Comparator;
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
import java.util.concurrent.LinkedBlockingQueue;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -92,7 +92,8 @@ public final class ChunkPacker {
 | 
			
		||||
 | 
			
		||||
        for (int z = 0; z < 16; z++) {
 | 
			
		||||
            // @formatter:off
 | 
			
		||||
            https://www.ibm.com/developerworks/library/j-perry-writing-good-java-code/index.html
 | 
			
		||||
            https:
 | 
			
		||||
//www.ibm.com/developerworks/library/j-perry-writing-good-java-code/index.html
 | 
			
		||||
            // @formatter:on
 | 
			
		||||
            for (int x = 0; x < 16; x++) {
 | 
			
		||||
                for (int y = 255; y >= 0; y--) {
 | 
			
		||||
@@ -124,7 +125,7 @@ public final class ChunkPacker {
 | 
			
		||||
 | 
			
		||||
    private static PathingBlockType getPathingBlockType(IBlockState state) {
 | 
			
		||||
        Block block = state.getBlock();
 | 
			
		||||
        if (block.equals(Blocks.WATER) && !MovementHelper.isFlowing(state)) {
 | 
			
		||||
        if (block == Blocks.WATER && !MovementHelper.isFlowing(state)) {
 | 
			
		||||
            // only water source blocks are plausibly usable, flowing water should be avoid
 | 
			
		||||
            return PathingBlockType.WATER;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -88,7 +88,7 @@ public abstract class AbstractNodeCostSearch implements IPathFinder {
 | 
			
		||||
        if (isFinished) {
 | 
			
		||||
            throw new IllegalStateException("Path Finder is currently in use, and cannot be reused!");
 | 
			
		||||
        }
 | 
			
		||||
        this.cancelRequested = false;
 | 
			
		||||
        cancelRequested = false;
 | 
			
		||||
        try {
 | 
			
		||||
            IPath path = calculate0(primaryTimeout, failureTimeout).map(IPath::postProcess).orElse(null);
 | 
			
		||||
            isFinished = true;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user