Fix failed path cancellation

This commit is contained in:
Howard Stark 2018-08-05 22:08:23 -04:00
parent 586024b57e
commit b96ee346f9
No known key found for this signature in database
GPG Key ID: 9FA4E350B33067F3
5 changed files with 52 additions and 2 deletions

43
.circleci/config.yml Normal file
View File

@ -0,0 +1,43 @@
# Java Gradle CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-java/ for more details
#
version: 2
jobs:
build:
docker:
# specify the version you desire here
- image: circleci/openjdk:8-jdk
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
# - image: circleci/postgres:9.4
working_directory: ~/repo
environment:
# Customize the JVM maximum heap limit
JVM_OPTS: -Xmx3200m
TERM: dumb
steps:
- checkout
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "build.gradle" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run: gradle dependencies
- save_cache:
paths:
- ~/.gradle
key: v1-dependencies-{{ checksum "build.gradle" }}
# run tests!
- run: gradle test

View File

@ -168,6 +168,12 @@ public abstract class Movement implements Helper, MovementHelper {
state.setStatus(MovementStatus.SUCCESS);
}
public void cancel() {
currentState.inputState.replaceAll((input, forced) -> false);
currentState.inputState.forEach((input, forced) -> Baritone.INSTANCE.getInputOverrideHandler().setInputForceState(input, forced));
currentState.setStatus(MovementStatus.CANCELED);
}
/**
* Calculate latest movement state.
* Gets called once a tick.

View File

@ -73,6 +73,6 @@ public class MovementState {
}
public enum MovementStatus {
PREPPING, WAITING, RUNNING, SUCCESS, UNREACHABLE, FAILED, FINISHING;
PREPPING, WAITING, RUNNING, SUCCESS, UNREACHABLE, FAILED, CANCELED;
}
}

View File

@ -78,7 +78,7 @@ public class MovementAscend extends Movement {
state.setStatus(MovementStatus.SUCCESS);
return state;
}
state.setTarget(new MovementState.MovementTarget(Optional.empty(), Optional.of(Utils.calcRotationFromVec3d(new Vec3d(player().posX, player().posY + 1.62, player().posZ), Utils.calcCenterFromCoords(positionsToBreak[0], world())))));
state.setInput(InputOverrideHandler.Input.JUMP, true).setInput(InputOverrideHandler.Input.MOVE_FORWARD, true);
return state;

View File

@ -135,6 +135,7 @@ public class PathExecutor extends Behavior {
ticksOnCurrent++;
if (ticksOnCurrent > movement.recalculateCost() + 100) {
System.out.println("This movement has taken too long (" + ticksOnCurrent + " ticks, expected " + movement.getCost(null) + "). Cancelling.");
movement.cancel();
pathPosition = path.length() + 3;
failed = true;
return;