Move to API
This commit is contained in:
@@ -17,7 +17,10 @@
|
|||||||
|
|
||||||
package baritone.api.behavior;
|
package baritone.api.behavior;
|
||||||
|
|
||||||
|
import baritone.api.pathing.calc.IPathFinder;
|
||||||
import baritone.api.pathing.goals.Goal;
|
import baritone.api.pathing.goals.Goal;
|
||||||
|
import baritone.api.pathing.path.IPath;
|
||||||
|
import baritone.api.pathing.path.IPathExecutor;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@@ -65,4 +68,30 @@ public interface IPathingBehavior extends IBehavior {
|
|||||||
* Cancels the pathing behavior or the current path calculation.
|
* Cancels the pathing behavior or the current path calculation.
|
||||||
*/
|
*/
|
||||||
void cancel();
|
void cancel();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the current path, from the current path executor, if there is one.
|
||||||
|
*
|
||||||
|
* @return The current path
|
||||||
|
*/
|
||||||
|
default Optional<IPath> getPath() {
|
||||||
|
return Optional.ofNullable(getCurrent()).map(IPathExecutor::getPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The current path finder being executed
|
||||||
|
*/
|
||||||
|
Optional<IPathFinder> getCurrentPathSearch();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The current path executor
|
||||||
|
*/
|
||||||
|
IPathExecutor getCurrent();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the next path executor, created when planning ahead.
|
||||||
|
*
|
||||||
|
* @return The next path executor
|
||||||
|
*/
|
||||||
|
IPathExecutor getNext();
|
||||||
}
|
}
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
|
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package baritone.pathing.calc;
|
package baritone.api.pathing.calc;
|
||||||
|
|
||||||
import baritone.api.pathing.goals.Goal;
|
import baritone.api.pathing.goals.Goal;
|
||||||
import baritone.pathing.path.IPath;
|
import baritone.api.pathing.path.IPath;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
@@ -15,9 +15,9 @@
|
|||||||
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
|
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package baritone.pathing.movement;
|
package baritone.api.pathing.movement;
|
||||||
|
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
@@ -15,7 +15,7 @@
|
|||||||
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
|
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package baritone.pathing.movement;
|
package baritone.api.pathing.movement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Brady
|
* @author Brady
|
@@ -15,11 +15,11 @@
|
|||||||
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
|
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package baritone.pathing.path;
|
package baritone.api.pathing.path;
|
||||||
|
|
||||||
import baritone.api.pathing.goals.Goal;
|
import baritone.api.pathing.goals.Goal;
|
||||||
import baritone.pathing.movement.IMovement;
|
import baritone.api.pathing.movement.IMovement;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
import baritone.api.utils.BetterBlockPos;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
@@ -15,7 +15,7 @@
|
|||||||
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
|
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package baritone.pathing.path;
|
package baritone.api.pathing.path;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Brady
|
* @author Brady
|
@@ -15,15 +15,13 @@
|
|||||||
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
|
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package baritone.pathing.path;
|
package baritone.api.pathing.path;
|
||||||
|
|
||||||
import baritone.api.BaritoneAPI;
|
import baritone.api.BaritoneAPI;
|
||||||
import baritone.api.pathing.goals.Goal;
|
import baritone.api.pathing.goals.Goal;
|
||||||
import baritone.pathing.movement.IMovement;
|
import baritone.api.pathing.movement.IMovement;
|
||||||
import baritone.utils.Utils;
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.util.Tuple;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.chunk.EmptyChunk;
|
import net.minecraft.world.chunk.EmptyChunk;
|
||||||
|
|
||||||
@@ -70,19 +68,6 @@ public interface IPath {
|
|||||||
*/
|
*/
|
||||||
Goal getGoal();
|
Goal getGoal();
|
||||||
|
|
||||||
default Tuple<Double, BlockPos> closestPathPos() {
|
|
||||||
double best = -1;
|
|
||||||
BlockPos bestPos = null;
|
|
||||||
for (BlockPos pos : positions()) {
|
|
||||||
double dist = Utils.playerDistanceToCenter(pos);
|
|
||||||
if (dist < best || best == -1) {
|
|
||||||
best = dist;
|
|
||||||
bestPos = pos;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new Tuple<>(best, bestPos);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Where does this path start
|
* Where does this path start
|
||||||
*/
|
*/
|
27
src/api/java/baritone/api/pathing/path/IPathExecutor.java
Normal file
27
src/api/java/baritone/api/pathing/path/IPathExecutor.java
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of Baritone.
|
||||||
|
*
|
||||||
|
* Baritone is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Baritone is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package baritone.api.pathing.path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Brady
|
||||||
|
* @since 10/8/2018
|
||||||
|
*/
|
||||||
|
public interface IPathExecutor {
|
||||||
|
|
||||||
|
IPath getPath();
|
||||||
|
}
|
@@ -15,9 +15,8 @@
|
|||||||
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
|
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package baritone.utils.pathing;
|
package baritone.api.utils;
|
||||||
|
|
||||||
import baritone.pathing.calc.AbstractNodeCostSearch;
|
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
@@ -54,11 +53,30 @@ public final class BetterBlockPos extends BlockPos {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return (int) AbstractNodeCostSearch.posHash(x, y, z);
|
return (int) longHash(x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long longHash(BetterBlockPos pos) {
|
public static long longHash(BetterBlockPos pos) {
|
||||||
return AbstractNodeCostSearch.posHash(pos.x, pos.y, pos.z);
|
return longHash(pos.x, pos.y, pos.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static long longHash(int x, int y, int z) {
|
||||||
|
/*
|
||||||
|
* This is the hashcode implementation of Vec3i (the superclass of the class which I shall not name)
|
||||||
|
*
|
||||||
|
* public int hashCode() {
|
||||||
|
* return (this.getY() + this.getZ() * 31) * 31 + this.getX();
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* That is terrible and has tons of collisions and makes the HashMap terribly inefficient.
|
||||||
|
*
|
||||||
|
* That's why we grab out the X, Y, Z and calculate our own hashcode
|
||||||
|
*/
|
||||||
|
long hash = 3241;
|
||||||
|
hash = 3457689L * hash + x;
|
||||||
|
hash = 8734625L * hash + y;
|
||||||
|
hash = 2873465L * hash + z;
|
||||||
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
@@ -40,7 +40,6 @@ import org.spongepowered.asm.mixin.injection.At;
|
|||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -22,13 +22,13 @@ import baritone.api.behavior.IMineBehavior;
|
|||||||
import baritone.api.event.events.PathEvent;
|
import baritone.api.event.events.PathEvent;
|
||||||
import baritone.api.event.events.TickEvent;
|
import baritone.api.event.events.TickEvent;
|
||||||
import baritone.api.pathing.goals.Goal;
|
import baritone.api.pathing.goals.Goal;
|
||||||
|
import baritone.api.pathing.goals.GoalBlock;
|
||||||
|
import baritone.api.pathing.goals.GoalComposite;
|
||||||
|
import baritone.api.pathing.goals.GoalTwoBlocks;
|
||||||
import baritone.cache.CachedChunk;
|
import baritone.cache.CachedChunk;
|
||||||
import baritone.cache.ChunkPacker;
|
import baritone.cache.ChunkPacker;
|
||||||
import baritone.cache.WorldProvider;
|
import baritone.cache.WorldProvider;
|
||||||
import baritone.cache.WorldScanner;
|
import baritone.cache.WorldScanner;
|
||||||
import baritone.api.pathing.goals.GoalBlock;
|
|
||||||
import baritone.api.pathing.goals.GoalComposite;
|
|
||||||
import baritone.api.pathing.goals.GoalTwoBlocks;
|
|
||||||
import baritone.utils.BlockStateInterface;
|
import baritone.utils.BlockStateInterface;
|
||||||
import baritone.utils.Helper;
|
import baritone.utils.Helper;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
@@ -25,19 +25,19 @@ import baritone.api.event.events.RenderEvent;
|
|||||||
import baritone.api.event.events.TickEvent;
|
import baritone.api.event.events.TickEvent;
|
||||||
import baritone.api.pathing.goals.Goal;
|
import baritone.api.pathing.goals.Goal;
|
||||||
import baritone.api.pathing.goals.GoalXZ;
|
import baritone.api.pathing.goals.GoalXZ;
|
||||||
|
import baritone.api.pathing.path.CutoffResult;
|
||||||
|
import baritone.api.pathing.path.IPath;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import baritone.api.utils.interfaces.IGoalRenderPos;
|
import baritone.api.utils.interfaces.IGoalRenderPos;
|
||||||
import baritone.pathing.calc.AStarPathFinder;
|
import baritone.pathing.calc.AStarPathFinder;
|
||||||
import baritone.pathing.calc.AbstractNodeCostSearch;
|
import baritone.pathing.calc.AbstractNodeCostSearch;
|
||||||
import baritone.pathing.calc.IPathFinder;
|
import baritone.api.pathing.calc.IPathFinder;
|
||||||
import baritone.pathing.movement.MovementHelper;
|
import baritone.pathing.movement.MovementHelper;
|
||||||
import baritone.pathing.path.CutoffResult;
|
|
||||||
import baritone.pathing.path.IPath;
|
|
||||||
import baritone.pathing.path.PathExecutor;
|
import baritone.pathing.path.PathExecutor;
|
||||||
import baritone.utils.BlockBreakHelper;
|
import baritone.utils.BlockBreakHelper;
|
||||||
import baritone.utils.BlockStateInterface;
|
import baritone.utils.BlockStateInterface;
|
||||||
import baritone.utils.Helper;
|
import baritone.utils.Helper;
|
||||||
import baritone.utils.PathRenderer;
|
import baritone.utils.PathRenderer;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.chunk.EmptyChunk;
|
import net.minecraft.world.chunk.EmptyChunk;
|
||||||
@@ -191,19 +191,19 @@ public final class PathingBehavior extends Behavior implements IPathingBehavior,
|
|||||||
return goal;
|
return goal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public PathExecutor getCurrent() {
|
public PathExecutor getCurrent() {
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public PathExecutor getNext() {
|
public PathExecutor getNext() {
|
||||||
return next;
|
return next;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Expose this method in the API?
|
@Override
|
||||||
// In order to do so, we'd need to move over IPath which has a whole lot of references to other
|
public Optional<IPathFinder> getCurrentPathSearch() {
|
||||||
// things that may not need to be exposed necessarily, so we'll need to figure that out.
|
return Optional.ofNullable(AbstractNodeCostSearch.currentlyRunning());
|
||||||
public Optional<IPath> getPath() {
|
|
||||||
return Optional.ofNullable(current).map(PathExecutor::getPath);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -20,10 +20,11 @@ package baritone.pathing.calc;
|
|||||||
import baritone.Baritone;
|
import baritone.Baritone;
|
||||||
import baritone.api.pathing.goals.Goal;
|
import baritone.api.pathing.goals.Goal;
|
||||||
import baritone.api.pathing.movement.ActionCosts;
|
import baritone.api.pathing.movement.ActionCosts;
|
||||||
|
import baritone.api.pathing.path.IPath;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import baritone.pathing.calc.openset.BinaryHeapOpenSet;
|
import baritone.pathing.calc.openset.BinaryHeapOpenSet;
|
||||||
import baritone.pathing.movement.CalculationContext;
|
import baritone.pathing.movement.CalculationContext;
|
||||||
import baritone.pathing.movement.Moves;
|
import baritone.pathing.movement.Moves;
|
||||||
import baritone.pathing.path.IPath;
|
|
||||||
import baritone.utils.BlockStateInterface;
|
import baritone.utils.BlockStateInterface;
|
||||||
import baritone.utils.Helper;
|
import baritone.utils.Helper;
|
||||||
import baritone.utils.pathing.MutableMoveResult;
|
import baritone.utils.pathing.MutableMoveResult;
|
||||||
@@ -47,7 +48,7 @@ public final class AStarPathFinder extends AbstractNodeCostSearch implements Hel
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Optional<IPath> calculate0(long timeout) {
|
protected Optional<IPath> calculate0(long timeout) {
|
||||||
startNode = getNodeAtPosition(startX, startY, startZ, posHash(startX, startY, startZ));
|
startNode = getNodeAtPosition(startX, startY, startZ, BetterBlockPos.longHash(startX, startY, startZ));
|
||||||
startNode.cost = 0;
|
startNode.cost = 0;
|
||||||
startNode.combinedCost = startNode.estimatedCostToGoal;
|
startNode.combinedCost = startNode.estimatedCostToGoal;
|
||||||
BinaryHeapOpenSet openSet = new BinaryHeapOpenSet();
|
BinaryHeapOpenSet openSet = new BinaryHeapOpenSet();
|
||||||
@@ -122,7 +123,7 @@ public final class AStarPathFinder extends AbstractNodeCostSearch implements Hel
|
|||||||
if (actionCost <= 0) {
|
if (actionCost <= 0) {
|
||||||
throw new IllegalStateException(moves + " calculated implausible cost " + actionCost);
|
throw new IllegalStateException(moves + " calculated implausible cost " + actionCost);
|
||||||
}
|
}
|
||||||
long hashCode = posHash(res.x, res.y, res.z);
|
long hashCode = BetterBlockPos.longHash(res.x, res.y, res.z);
|
||||||
if (favoring && favored.contains(hashCode)) {
|
if (favoring && favored.contains(hashCode)) {
|
||||||
// see issue #18
|
// see issue #18
|
||||||
actionCost *= favorCoeff;
|
actionCost *= favorCoeff;
|
||||||
|
@@ -18,8 +18,9 @@
|
|||||||
package baritone.pathing.calc;
|
package baritone.pathing.calc;
|
||||||
|
|
||||||
import baritone.Baritone;
|
import baritone.Baritone;
|
||||||
|
import baritone.api.pathing.calc.IPathFinder;
|
||||||
import baritone.api.pathing.goals.Goal;
|
import baritone.api.pathing.goals.Goal;
|
||||||
import baritone.pathing.path.IPath;
|
import baritone.api.pathing.path.IPath;
|
||||||
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@@ -140,25 +141,6 @@ public abstract class AbstractNodeCostSearch implements IPathFinder {
|
|||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long posHash(int x, int y, int z) {
|
|
||||||
/*
|
|
||||||
* This is the hashcode implementation of Vec3i (the superclass of the class which I shall not name)
|
|
||||||
*
|
|
||||||
* public int hashCode() {
|
|
||||||
* return (this.getY() + this.getZ() * 31) * 31 + this.getX();
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
* That is terrible and has tons of collisions and makes the HashMap terribly inefficient.
|
|
||||||
*
|
|
||||||
* That's why we grab out the X, Y, Z and calculate our own hashcode
|
|
||||||
*/
|
|
||||||
long hash = 3241;
|
|
||||||
hash = 3457689L * hash + x;
|
|
||||||
hash = 8734625L * hash + y;
|
|
||||||
hash = 2873465L * hash + z;
|
|
||||||
return hash;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void forceCancel() {
|
public static void forceCancel() {
|
||||||
currentlyRunning = null;
|
currentlyRunning = null;
|
||||||
}
|
}
|
||||||
@@ -225,4 +207,8 @@ public abstract class AbstractNodeCostSearch implements IPathFinder {
|
|||||||
public static Optional<AbstractNodeCostSearch> getCurrentlyRunning() {
|
public static Optional<AbstractNodeCostSearch> getCurrentlyRunning() {
|
||||||
return Optional.ofNullable(currentlyRunning);
|
return Optional.ofNullable(currentlyRunning);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static AbstractNodeCostSearch currentlyRunning() {
|
||||||
|
return currentlyRunning;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,11 +18,11 @@
|
|||||||
package baritone.pathing.calc;
|
package baritone.pathing.calc;
|
||||||
|
|
||||||
import baritone.api.pathing.goals.Goal;
|
import baritone.api.pathing.goals.Goal;
|
||||||
import baritone.pathing.movement.IMovement;
|
import baritone.api.pathing.movement.IMovement;
|
||||||
|
import baritone.api.pathing.path.IPath;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import baritone.pathing.movement.Movement;
|
import baritone.pathing.movement.Movement;
|
||||||
import baritone.pathing.movement.Moves;
|
import baritone.pathing.movement.Moves;
|
||||||
import baritone.pathing.path.IPath;
|
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@@ -19,6 +19,7 @@ package baritone.pathing.calc;
|
|||||||
|
|
||||||
import baritone.api.pathing.goals.Goal;
|
import baritone.api.pathing.goals.Goal;
|
||||||
import baritone.api.pathing.movement.ActionCosts;
|
import baritone.api.pathing.movement.ActionCosts;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A node in the path, containing the cost and steps to get to it.
|
* A node in the path, containing the cost and steps to get to it.
|
||||||
@@ -85,7 +86,7 @@ public final class PathNode {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return (int) AbstractNodeCostSearch.posHash(x, y, z);
|
return (int) BetterBlockPos.longHash(x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -18,11 +18,13 @@
|
|||||||
package baritone.pathing.movement;
|
package baritone.pathing.movement;
|
||||||
|
|
||||||
import baritone.Baritone;
|
import baritone.Baritone;
|
||||||
|
import baritone.api.pathing.movement.IMovement;
|
||||||
|
import baritone.api.pathing.movement.MovementStatus;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import baritone.api.utils.Rotation;
|
import baritone.api.utils.Rotation;
|
||||||
import baritone.behavior.LookBehavior;
|
import baritone.behavior.LookBehavior;
|
||||||
import baritone.behavior.LookBehaviorUtils;
|
import baritone.behavior.LookBehaviorUtils;
|
||||||
import baritone.utils.*;
|
import baritone.utils.*;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import net.minecraft.block.BlockLiquid;
|
import net.minecraft.block.BlockLiquid;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
@@ -19,11 +19,11 @@ package baritone.pathing.movement;
|
|||||||
|
|
||||||
import baritone.Baritone;
|
import baritone.Baritone;
|
||||||
import baritone.api.pathing.movement.ActionCosts;
|
import baritone.api.pathing.movement.ActionCosts;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import baritone.api.utils.Rotation;
|
import baritone.api.utils.Rotation;
|
||||||
import baritone.behavior.LookBehaviorUtils;
|
import baritone.behavior.LookBehaviorUtils;
|
||||||
import baritone.pathing.movement.MovementState.MovementTarget;
|
import baritone.pathing.movement.MovementState.MovementTarget;
|
||||||
import baritone.utils.*;
|
import baritone.utils.*;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import net.minecraft.block.*;
|
import net.minecraft.block.*;
|
||||||
import net.minecraft.block.properties.PropertyBool;
|
import net.minecraft.block.properties.PropertyBool;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
package baritone.pathing.movement;
|
package baritone.pathing.movement;
|
||||||
|
|
||||||
|
import baritone.api.pathing.movement.MovementStatus;
|
||||||
import baritone.api.utils.Rotation;
|
import baritone.api.utils.Rotation;
|
||||||
import baritone.utils.InputOverrideHandler.Input;
|
import baritone.utils.InputOverrideHandler.Input;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
@@ -17,8 +17,8 @@
|
|||||||
|
|
||||||
package baritone.pathing.movement;
|
package baritone.pathing.movement;
|
||||||
|
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import baritone.pathing.movement.movements.*;
|
import baritone.pathing.movement.movements.*;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import baritone.utils.pathing.MutableMoveResult;
|
import baritone.utils.pathing.MutableMoveResult;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
|
||||||
|
@@ -18,12 +18,16 @@
|
|||||||
package baritone.pathing.movement.movements;
|
package baritone.pathing.movement.movements;
|
||||||
|
|
||||||
import baritone.Baritone;
|
import baritone.Baritone;
|
||||||
|
import baritone.api.pathing.movement.MovementStatus;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import baritone.behavior.LookBehaviorUtils;
|
import baritone.behavior.LookBehaviorUtils;
|
||||||
import baritone.pathing.movement.*;
|
import baritone.pathing.movement.CalculationContext;
|
||||||
|
import baritone.pathing.movement.Movement;
|
||||||
|
import baritone.pathing.movement.MovementHelper;
|
||||||
|
import baritone.pathing.movement.MovementState;
|
||||||
import baritone.utils.BlockStateInterface;
|
import baritone.utils.BlockStateInterface;
|
||||||
import baritone.utils.InputOverrideHandler;
|
import baritone.utils.InputOverrideHandler;
|
||||||
import baritone.utils.Utils;
|
import baritone.utils.Utils;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import net.minecraft.block.BlockFalling;
|
import net.minecraft.block.BlockFalling;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
@@ -18,14 +18,14 @@
|
|||||||
package baritone.pathing.movement.movements;
|
package baritone.pathing.movement.movements;
|
||||||
|
|
||||||
import baritone.Baritone;
|
import baritone.Baritone;
|
||||||
|
import baritone.api.pathing.movement.MovementStatus;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import baritone.pathing.movement.CalculationContext;
|
import baritone.pathing.movement.CalculationContext;
|
||||||
import baritone.pathing.movement.Movement;
|
import baritone.pathing.movement.Movement;
|
||||||
import baritone.pathing.movement.MovementHelper;
|
import baritone.pathing.movement.MovementHelper;
|
||||||
import baritone.pathing.movement.MovementState;
|
import baritone.pathing.movement.MovementState;
|
||||||
import baritone.pathing.movement.MovementStatus;
|
|
||||||
import baritone.utils.BlockStateInterface;
|
import baritone.utils.BlockStateInterface;
|
||||||
import baritone.utils.InputOverrideHandler;
|
import baritone.utils.InputOverrideHandler;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import baritone.utils.pathing.MutableMoveResult;
|
import baritone.utils.pathing.MutableMoveResult;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockFalling;
|
import net.minecraft.block.BlockFalling;
|
||||||
|
@@ -17,10 +17,14 @@
|
|||||||
|
|
||||||
package baritone.pathing.movement.movements;
|
package baritone.pathing.movement.movements;
|
||||||
|
|
||||||
import baritone.pathing.movement.*;
|
import baritone.api.pathing.movement.MovementStatus;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
|
import baritone.pathing.movement.CalculationContext;
|
||||||
|
import baritone.pathing.movement.Movement;
|
||||||
|
import baritone.pathing.movement.MovementHelper;
|
||||||
|
import baritone.pathing.movement.MovementState;
|
||||||
import baritone.utils.BlockStateInterface;
|
import baritone.utils.BlockStateInterface;
|
||||||
import baritone.utils.InputOverrideHandler;
|
import baritone.utils.InputOverrideHandler;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
|
@@ -17,9 +17,13 @@
|
|||||||
|
|
||||||
package baritone.pathing.movement.movements;
|
package baritone.pathing.movement.movements;
|
||||||
|
|
||||||
import baritone.pathing.movement.*;
|
import baritone.api.pathing.movement.MovementStatus;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
|
import baritone.pathing.movement.CalculationContext;
|
||||||
|
import baritone.pathing.movement.Movement;
|
||||||
|
import baritone.pathing.movement.MovementHelper;
|
||||||
|
import baritone.pathing.movement.MovementState;
|
||||||
import baritone.utils.BlockStateInterface;
|
import baritone.utils.BlockStateInterface;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
|
@@ -18,18 +18,18 @@
|
|||||||
package baritone.pathing.movement.movements;
|
package baritone.pathing.movement.movements;
|
||||||
|
|
||||||
import baritone.Baritone;
|
import baritone.Baritone;
|
||||||
|
import baritone.api.pathing.movement.MovementStatus;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import baritone.api.utils.Rotation;
|
import baritone.api.utils.Rotation;
|
||||||
import baritone.pathing.movement.CalculationContext;
|
import baritone.pathing.movement.CalculationContext;
|
||||||
import baritone.pathing.movement.Movement;
|
import baritone.pathing.movement.Movement;
|
||||||
import baritone.pathing.movement.MovementHelper;
|
import baritone.pathing.movement.MovementHelper;
|
||||||
import baritone.pathing.movement.MovementState;
|
import baritone.pathing.movement.MovementState;
|
||||||
import baritone.pathing.movement.MovementStatus;
|
|
||||||
import baritone.pathing.movement.MovementState.MovementTarget;
|
import baritone.pathing.movement.MovementState.MovementTarget;
|
||||||
import baritone.utils.BlockStateInterface;
|
import baritone.utils.BlockStateInterface;
|
||||||
import baritone.utils.InputOverrideHandler;
|
import baritone.utils.InputOverrideHandler;
|
||||||
import baritone.utils.RayTraceUtils;
|
import baritone.utils.RayTraceUtils;
|
||||||
import baritone.utils.Utils;
|
import baritone.utils.Utils;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import baritone.utils.pathing.MutableMoveResult;
|
import baritone.utils.pathing.MutableMoveResult;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.init.Items;
|
import net.minecraft.init.Items;
|
||||||
|
@@ -18,11 +18,15 @@
|
|||||||
package baritone.pathing.movement.movements;
|
package baritone.pathing.movement.movements;
|
||||||
|
|
||||||
import baritone.Baritone;
|
import baritone.Baritone;
|
||||||
|
import baritone.api.pathing.movement.MovementStatus;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import baritone.api.utils.Rotation;
|
import baritone.api.utils.Rotation;
|
||||||
import baritone.behavior.LookBehaviorUtils;
|
import baritone.behavior.LookBehaviorUtils;
|
||||||
import baritone.pathing.movement.*;
|
import baritone.pathing.movement.CalculationContext;
|
||||||
|
import baritone.pathing.movement.Movement;
|
||||||
|
import baritone.pathing.movement.MovementHelper;
|
||||||
|
import baritone.pathing.movement.MovementState;
|
||||||
import baritone.utils.*;
|
import baritone.utils.*;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import baritone.utils.pathing.MutableMoveResult;
|
import baritone.utils.pathing.MutableMoveResult;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
@@ -17,12 +17,16 @@
|
|||||||
|
|
||||||
package baritone.pathing.movement.movements;
|
package baritone.pathing.movement.movements;
|
||||||
|
|
||||||
|
import baritone.api.pathing.movement.MovementStatus;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import baritone.api.utils.Rotation;
|
import baritone.api.utils.Rotation;
|
||||||
import baritone.pathing.movement.*;
|
import baritone.pathing.movement.CalculationContext;
|
||||||
|
import baritone.pathing.movement.Movement;
|
||||||
|
import baritone.pathing.movement.MovementHelper;
|
||||||
|
import baritone.pathing.movement.MovementState;
|
||||||
import baritone.utils.BlockStateInterface;
|
import baritone.utils.BlockStateInterface;
|
||||||
import baritone.utils.InputOverrideHandler;
|
import baritone.utils.InputOverrideHandler;
|
||||||
import baritone.utils.Utils;
|
import baritone.utils.Utils;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import net.minecraft.block.*;
|
import net.minecraft.block.*;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
@@ -18,13 +18,17 @@
|
|||||||
package baritone.pathing.movement.movements;
|
package baritone.pathing.movement.movements;
|
||||||
|
|
||||||
import baritone.Baritone;
|
import baritone.Baritone;
|
||||||
|
import baritone.api.pathing.movement.MovementStatus;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import baritone.api.utils.Rotation;
|
import baritone.api.utils.Rotation;
|
||||||
import baritone.behavior.LookBehaviorUtils;
|
import baritone.behavior.LookBehaviorUtils;
|
||||||
import baritone.pathing.movement.*;
|
import baritone.pathing.movement.CalculationContext;
|
||||||
|
import baritone.pathing.movement.Movement;
|
||||||
|
import baritone.pathing.movement.MovementHelper;
|
||||||
|
import baritone.pathing.movement.MovementState;
|
||||||
import baritone.utils.BlockStateInterface;
|
import baritone.utils.BlockStateInterface;
|
||||||
import baritone.utils.InputOverrideHandler;
|
import baritone.utils.InputOverrideHandler;
|
||||||
import baritone.utils.Utils;
|
import baritone.utils.Utils;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import net.minecraft.block.*;
|
import net.minecraft.block.*;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
@@ -20,18 +20,23 @@ package baritone.pathing.path;
|
|||||||
import baritone.Baritone;
|
import baritone.Baritone;
|
||||||
import baritone.api.event.events.TickEvent;
|
import baritone.api.event.events.TickEvent;
|
||||||
import baritone.api.pathing.movement.ActionCosts;
|
import baritone.api.pathing.movement.ActionCosts;
|
||||||
|
import baritone.api.pathing.movement.IMovement;
|
||||||
|
import baritone.api.pathing.movement.MovementStatus;
|
||||||
|
import baritone.api.pathing.path.IPath;
|
||||||
|
import baritone.api.pathing.path.IPathExecutor;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import baritone.pathing.calc.AbstractNodeCostSearch;
|
import baritone.pathing.calc.AbstractNodeCostSearch;
|
||||||
import baritone.pathing.movement.*;
|
import baritone.pathing.movement.CalculationContext;
|
||||||
|
import baritone.pathing.movement.MovementHelper;
|
||||||
import baritone.pathing.movement.movements.*;
|
import baritone.pathing.movement.movements.*;
|
||||||
import baritone.utils.*;
|
import baritone.utils.*;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.util.Tuple;
|
import net.minecraft.util.Tuple;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import static baritone.pathing.movement.MovementStatus.*;
|
import static baritone.api.pathing.movement.MovementStatus.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Behavior to execute a precomputed path. Does not (yet) deal with path segmentation or stitching
|
* Behavior to execute a precomputed path. Does not (yet) deal with path segmentation or stitching
|
||||||
@@ -39,7 +44,7 @@ import static baritone.pathing.movement.MovementStatus.*;
|
|||||||
*
|
*
|
||||||
* @author leijurv
|
* @author leijurv
|
||||||
*/
|
*/
|
||||||
public class PathExecutor implements Helper {
|
public class PathExecutor implements IPathExecutor, Helper {
|
||||||
private static final double MAX_MAX_DIST_FROM_PATH = 3;
|
private static final double MAX_MAX_DIST_FROM_PATH = 3;
|
||||||
private static final double MAX_DIST_FROM_PATH = 2;
|
private static final double MAX_DIST_FROM_PATH = 2;
|
||||||
|
|
||||||
@@ -125,7 +130,7 @@ public class PathExecutor implements Helper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Tuple<Double, BlockPos> status = path.closestPathPos();
|
Tuple<Double, BlockPos> status = closestPathPos(path);
|
||||||
if (possiblyOffPath(status, MAX_DIST_FROM_PATH)) {
|
if (possiblyOffPath(status, MAX_DIST_FROM_PATH)) {
|
||||||
ticksAway++;
|
ticksAway++;
|
||||||
System.out.println("FAR AWAY FROM PATH FOR " + ticksAway + " TICKS. Current distance: " + status.getFirst() + ". Threshold: " + MAX_DIST_FROM_PATH);
|
System.out.println("FAR AWAY FROM PATH FOR " + ticksAway + " TICKS. Current distance: " + status.getFirst() + ". Threshold: " + MAX_DIST_FROM_PATH);
|
||||||
@@ -269,6 +274,19 @@ public class PathExecutor implements Helper {
|
|||||||
return false; // movement is in progress
|
return false; // movement is in progress
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Tuple<Double, BlockPos> closestPathPos(IPath path) {
|
||||||
|
double best = -1;
|
||||||
|
BlockPos bestPos = null;
|
||||||
|
for (BlockPos pos : path.positions()) {
|
||||||
|
double dist = Utils.playerDistanceToCenter(pos);
|
||||||
|
if (dist < best || best == -1) {
|
||||||
|
best = dist;
|
||||||
|
bestPos = pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new Tuple<>(best, bestPos);
|
||||||
|
}
|
||||||
|
|
||||||
private boolean shouldPause() {
|
private boolean shouldPause() {
|
||||||
Optional<AbstractNodeCostSearch> current = AbstractNodeCostSearch.getCurrentlyRunning();
|
Optional<AbstractNodeCostSearch> current = AbstractNodeCostSearch.getCurrentlyRunning();
|
||||||
if (!current.isPresent()) {
|
if (!current.isPresent()) {
|
||||||
|
@@ -31,7 +31,6 @@ import baritone.cache.ChunkPacker;
|
|||||||
import baritone.cache.Waypoint;
|
import baritone.cache.Waypoint;
|
||||||
import baritone.cache.WorldProvider;
|
import baritone.cache.WorldProvider;
|
||||||
import baritone.pathing.calc.AbstractNodeCostSearch;
|
import baritone.pathing.calc.AbstractNodeCostSearch;
|
||||||
import baritone.pathing.movement.CalculationContext;
|
|
||||||
import baritone.pathing.movement.Movement;
|
import baritone.pathing.movement.Movement;
|
||||||
import baritone.pathing.movement.MovementHelper;
|
import baritone.pathing.movement.MovementHelper;
|
||||||
import baritone.pathing.movement.Moves;
|
import baritone.pathing.movement.Moves;
|
||||||
|
@@ -18,8 +18,8 @@
|
|||||||
package baritone.utils;
|
package baritone.utils;
|
||||||
|
|
||||||
import baritone.Baritone;
|
import baritone.Baritone;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import baritone.api.utils.Rotation;
|
import baritone.api.utils.Rotation;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import net.minecraft.block.BlockSlab;
|
import net.minecraft.block.BlockSlab;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.entity.EntityPlayerSP;
|
import net.minecraft.client.entity.EntityPlayerSP;
|
||||||
|
@@ -23,12 +23,12 @@ import baritone.api.pathing.goals.Goal;
|
|||||||
import baritone.api.pathing.goals.GoalComposite;
|
import baritone.api.pathing.goals.GoalComposite;
|
||||||
import baritone.api.pathing.goals.GoalTwoBlocks;
|
import baritone.api.pathing.goals.GoalTwoBlocks;
|
||||||
import baritone.api.pathing.goals.GoalXZ;
|
import baritone.api.pathing.goals.GoalXZ;
|
||||||
|
import baritone.api.pathing.path.IPath;
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import baritone.api.utils.interfaces.IGoalRenderPos;
|
import baritone.api.utils.interfaces.IGoalRenderPos;
|
||||||
import baritone.behavior.PathingBehavior;
|
import baritone.behavior.PathingBehavior;
|
||||||
import baritone.pathing.calc.AbstractNodeCostSearch;
|
import baritone.pathing.calc.AbstractNodeCostSearch;
|
||||||
import baritone.pathing.path.IPath;
|
|
||||||
import baritone.pathing.path.PathExecutor;
|
import baritone.pathing.path.PathExecutor;
|
||||||
import baritone.utils.pathing.BetterBlockPos;
|
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.entity.EntityPlayerSP;
|
import net.minecraft.client.entity.EntityPlayerSP;
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
package baritone.utils.pathing;
|
package baritone.utils.pathing;
|
||||||
|
|
||||||
|
import baritone.api.utils.BetterBlockPos;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
Reference in New Issue
Block a user