From b96ee346f9b1cd35176ede447363d2f2ada1a511 Mon Sep 17 00:00:00 2001 From: Howard Stark Date: Sun, 5 Aug 2018 22:08:23 -0400 Subject: [PATCH] Fix failed path cancellation --- .circleci/config.yml | 43 +++++++++++++++++++ .../bot/pathing/movement/Movement.java | 6 +++ .../bot/pathing/movement/MovementState.java | 2 +- .../movement/movements/MovementAscend.java | 2 +- .../bot/pathing/path/PathExecutor.java | 1 + 5 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 000000000..d9cdd9117 --- /dev/null +++ b/.circleci/config.yml @@ -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 + diff --git a/src/main/java/baritone/bot/pathing/movement/Movement.java b/src/main/java/baritone/bot/pathing/movement/Movement.java index 1cdcd03bb..1e8338bcc 100644 --- a/src/main/java/baritone/bot/pathing/movement/Movement.java +++ b/src/main/java/baritone/bot/pathing/movement/Movement.java @@ -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. diff --git a/src/main/java/baritone/bot/pathing/movement/MovementState.java b/src/main/java/baritone/bot/pathing/movement/MovementState.java index ee67ac8dd..f8a5466ec 100644 --- a/src/main/java/baritone/bot/pathing/movement/MovementState.java +++ b/src/main/java/baritone/bot/pathing/movement/MovementState.java @@ -73,6 +73,6 @@ public class MovementState { } public enum MovementStatus { - PREPPING, WAITING, RUNNING, SUCCESS, UNREACHABLE, FAILED, FINISHING; + PREPPING, WAITING, RUNNING, SUCCESS, UNREACHABLE, FAILED, CANCELED; } } diff --git a/src/main/java/baritone/bot/pathing/movement/movements/MovementAscend.java b/src/main/java/baritone/bot/pathing/movement/movements/MovementAscend.java index b8fd605c4..7c75cea0b 100644 --- a/src/main/java/baritone/bot/pathing/movement/movements/MovementAscend.java +++ b/src/main/java/baritone/bot/pathing/movement/movements/MovementAscend.java @@ -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; diff --git a/src/main/java/baritone/bot/pathing/path/PathExecutor.java b/src/main/java/baritone/bot/pathing/path/PathExecutor.java index 21a68156e..3ebd344c0 100644 --- a/src/main/java/baritone/bot/pathing/path/PathExecutor.java +++ b/src/main/java/baritone/bot/pathing/path/PathExecutor.java @@ -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;