From 7fa6e001e61060576b3890bc8c9114fa7878eaf2 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sun, 23 Sep 2018 08:13:21 -0700 Subject: [PATCH] don't cause exception on main thread if a movement becomes impossible --- .../pathing/calc/AbstractNodeCostSearch.java | 14 ++++++++++++-- src/main/java/baritone/pathing/calc/Path.java | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/baritone/pathing/calc/AbstractNodeCostSearch.java b/src/main/java/baritone/pathing/calc/AbstractNodeCostSearch.java index 012c257c..3b8108d8 100644 --- a/src/main/java/baritone/pathing/calc/AbstractNodeCostSearch.java +++ b/src/main/java/baritone/pathing/calc/AbstractNodeCostSearch.java @@ -147,7 +147,12 @@ public abstract class AbstractNodeCostSearch implements IPathFinder { @Override public Optional pathToMostRecentNodeConsidered() { - return Optional.ofNullable(mostRecentConsidered).map(node -> new Path(startNode, node, 0, goal)); + try { + return Optional.ofNullable(mostRecentConsidered).map(node -> new Path(startNode, node, 0, goal)); + } catch (IllegalStateException ex) { + System.out.println("Unable to construct path to render"); + return Optional.empty(); + } } protected int mapSize() { @@ -164,7 +169,12 @@ public abstract class AbstractNodeCostSearch implements IPathFinder { continue; } if (getDistFromStartSq(bestSoFar[i]) > MIN_DIST_PATH * MIN_DIST_PATH) { // square the comparison since distFromStartSq is squared - return Optional.of(new Path(startNode, bestSoFar[i], 0, goal)); + try { + return Optional.of(new Path(startNode, bestSoFar[i], 0, goal)); + } catch (IllegalStateException ex) { + System.out.println("Unable to construct path to render"); + return Optional.empty(); + } } } // instead of returning bestSoFar[0], be less misleading diff --git a/src/main/java/baritone/pathing/calc/Path.java b/src/main/java/baritone/pathing/calc/Path.java index 50dd49d7..c429970b 100644 --- a/src/main/java/baritone/pathing/calc/Path.java +++ b/src/main/java/baritone/pathing/calc/Path.java @@ -107,6 +107,7 @@ class Path implements IPath { return move; } } + // leave this as IllegalStateException; it's caught in AbstractNodeCostSearch throw new IllegalStateException("Movement became impossible during calculation " + src + " " + dest + " " + dest.subtract(src)); }