only sprint ascends that are followed in the same direction

This commit is contained in:
Leijurv 2019-02-13 22:39:34 -08:00
parent 41b1106c72
commit 3f1ee100bf
No known key found for this signature in database
GPG Key ID: 44A3EA646EADAC6A
1 changed files with 7 additions and 4 deletions

View File

@ -388,9 +388,9 @@ public class PathExecutor implements IPathExecutor, Helper {
IMovement current = path.movements().get(pathPosition); IMovement current = path.movements().get(pathPosition);
// traverse requests sprinting, so we need to do this check first // traverse requests sprinting, so we need to do this check first
if (current instanceof MovementTraverse && pathPosition < path.length() - 2) { if (current instanceof MovementTraverse && pathPosition < path.length() - 3) {
IMovement next = path.movements().get(pathPosition + 1); IMovement next = path.movements().get(pathPosition + 1);
if (next instanceof MovementAscend && sprintableAscend(ctx, (MovementTraverse) current, (MovementAscend) next)) { if (next instanceof MovementAscend && sprintableAscend(ctx, (MovementTraverse) current, (MovementAscend) next, path.movements().get(pathPosition + 2))) {
if (skipNow(ctx, current, next)) { if (skipNow(ctx, current, next)) {
logDebug("Skipping traverse to straight ascend"); logDebug("Skipping traverse to straight ascend");
pathPosition++; pathPosition++;
@ -448,7 +448,7 @@ public class PathExecutor implements IPathExecutor, Helper {
return true; return true;
} }
} }
if (prev instanceof MovementTraverse && sprintableAscend(ctx, (MovementTraverse) prev, (MovementAscend) current)) { if (pathPosition < path.length() - 2 && prev instanceof MovementTraverse && sprintableAscend(ctx, (MovementTraverse) prev, (MovementAscend) current, path.movements().get(pathPosition + 1))) {
return true; return true;
} }
} }
@ -526,13 +526,16 @@ public class PathExecutor implements IPathExecutor, Helper {
return flatDist > 0.8; return flatDist > 0.8;
} }
private static boolean sprintableAscend(IPlayerContext ctx, MovementTraverse current, MovementAscend next) { private static boolean sprintableAscend(IPlayerContext ctx, MovementTraverse current, MovementAscend next, IMovement nextnext) {
if (!Baritone.settings().sprintAscends.get()) { if (!Baritone.settings().sprintAscends.get()) {
return false; return false;
} }
if (!current.getDirection().equals(next.getDirection().down())) { if (!current.getDirection().equals(next.getDirection().down())) {
return false; return false;
} }
if (nextnext.getDirection().getX() != next.getDirection().getX() || nextnext.getDirection().getZ() != next.getDirection().getZ()) {
return false;
}
if (!MovementHelper.canWalkOn(ctx, current.getDest().down())) { if (!MovementHelper.canWalkOn(ctx, current.getDest().down())) {
return false; return false;
} }