From 50d37bb311224455af8994f7ef7c7b3f3fe23bd8 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Tue, 25 Dec 2018 20:07:26 -0800 Subject: [PATCH 01/20] lol --- src/main/java/baritone/pathing/movement/Movement.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/baritone/pathing/movement/Movement.java b/src/main/java/baritone/pathing/movement/Movement.java index 3754d831..b8f7b25e 100644 --- a/src/main/java/baritone/pathing/movement/Movement.java +++ b/src/main/java/baritone/pathing/movement/Movement.java @@ -34,7 +34,6 @@ import java.util.Optional; public abstract class Movement implements IMovement, MovementHelper { - protected static final EnumFacing[] HORIZONTALS = {EnumFacing.NORTH, EnumFacing.SOUTH, EnumFacing.EAST, EnumFacing.WEST}; protected static final EnumFacing[] HORIZONTALS_BUT_ALSO_DOWN____SO_EVERY_DIRECTION_EXCEPT_UP = {EnumFacing.NORTH, EnumFacing.SOUTH, EnumFacing.EAST, EnumFacing.WEST, EnumFacing.DOWN}; protected final IBaritone baritone; From bebdede33bcf7be3557063247b2e2aa12774b639 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Wed, 26 Dec 2018 18:07:14 -1000 Subject: [PATCH 02/20] unneeded --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 66357bfa..6bffdc24 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,6 @@ Here are some links to help to get started: - [Installation](INSTALL.md) -There's also some useful information down below - # Setup ## Command Line From dffbb8e4c8fa97b0e33bad233e7f1f776d2f990f Mon Sep 17 00:00:00 2001 From: Brady Date: Thu, 27 Dec 2018 17:15:13 -0600 Subject: [PATCH 03/20] Overload reachable with IPlayerContext parameter --- src/api/java/baritone/api/utils/RotationUtils.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/api/java/baritone/api/utils/RotationUtils.java b/src/api/java/baritone/api/utils/RotationUtils.java index 0649ff10..9352b7fe 100644 --- a/src/api/java/baritone/api/utils/RotationUtils.java +++ b/src/api/java/baritone/api/utils/RotationUtils.java @@ -127,6 +127,16 @@ public final class RotationUtils { return new Vec3d((double) (f1 * f2), (double) f3, (double) (f * f2)); } + /** + * @param ctx Context for the viewing entity + * @param pos The target block position + * @return The optional rotation + * @see #reachable(EntityPlayerSP, BlockPos, double) + */ + public static Optional reachable(IPlayerContext ctx, BlockPos pos) { + return reachable(ctx.player(), pos, ctx.playerController().getBlockReachDistance()); + } + /** * Determines if the specified entity is able to reach the center of any of the sides * of the specified block. It first checks if the block center is reachable, and if so, From c2c69f243eb9ac1ce48c1de513ccb7ad50e838ff Mon Sep 17 00:00:00 2001 From: Leijurv Date: Thu, 27 Dec 2018 16:16:12 -1000 Subject: [PATCH 04/20] nothing is trashy in baritone --- src/main/java/baritone/process/FollowProcess.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/baritone/process/FollowProcess.java b/src/main/java/baritone/process/FollowProcess.java index 4c9c1263..3d25c076 100644 --- a/src/main/java/baritone/process/FollowProcess.java +++ b/src/main/java/baritone/process/FollowProcess.java @@ -57,7 +57,6 @@ public final class FollowProcess extends BaritoneProcessHelper implements IFollo } private Goal towards(Entity following) { - // lol this is trashy but it works BlockPos pos; if (Baritone.settings().followOffsetDistance.get() == 0) { pos = new BlockPos(following); From 1da72ba473b8d32b2d478e15de4cd1550b2e6eb3 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Fri, 28 Dec 2018 17:17:43 -1000 Subject: [PATCH 05/20] unneeded --- src/main/java/baritone/pathing/path/PathExecutor.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/baritone/pathing/path/PathExecutor.java b/src/main/java/baritone/pathing/path/PathExecutor.java index ec71ef48..8d841e46 100644 --- a/src/main/java/baritone/pathing/path/PathExecutor.java +++ b/src/main/java/baritone/pathing/path/PathExecutor.java @@ -110,7 +110,6 @@ public class PathExecutor implements IPathExecutor, Helper { return false; } - //System.out.println("Should be at " + whereShouldIBe + " actually am at " + whereAmI); if (!Blocks.AIR.equals(BlockStateInterface.getBlock(ctx, whereAmI.down()))) {//do not skip if standing on air, because our position isn't stable to skip for (int i = 0; i < pathPosition - 1 && i < path.length(); i++) {//this happens for example when you lag out and get teleported back a couple blocks if (whereAmI.equals(path.positions().get(i))) { From 258700ee7bca524b2f8f2975bca5415ba9857961 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sat, 29 Dec 2018 14:50:21 -1000 Subject: [PATCH 06/20] bitshift --- src/main/java/baritone/cache/CachedWorld.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/baritone/cache/CachedWorld.java b/src/main/java/baritone/cache/CachedWorld.java index e9caddfe..fc1e177b 100644 --- a/src/main/java/baritone/cache/CachedWorld.java +++ b/src/main/java/baritone/cache/CachedWorld.java @@ -215,7 +215,7 @@ public final class CachedWorld implements ICachedWorld, Helper { if (mostRecentlyModified == null) { return new BlockPos(0, 0, 0); } - return new BlockPos(mostRecentlyModified.x * 16 + 8, 0, mostRecentlyModified.z * 16 + 8); + return new BlockPos(mostRecentlyModified.x << 4 + 8, 0, mostRecentlyModified.z << 4 + 8); } private synchronized List allRegions() { From 539b0e64c868fe5dad08c89f2b3ae47a9e4cda9a Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sun, 30 Dec 2018 07:36:10 -1000 Subject: [PATCH 07/20] bitshift 2: electric boogaloo --- src/main/java/baritone/cache/CachedWorld.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/baritone/cache/CachedWorld.java b/src/main/java/baritone/cache/CachedWorld.java index fc1e177b..b604ce48 100644 --- a/src/main/java/baritone/cache/CachedWorld.java +++ b/src/main/java/baritone/cache/CachedWorld.java @@ -179,8 +179,8 @@ public final class CachedWorld implements ICachedWorld, Helper { if (region == null) { continue; } - int distX = (region.getX() * 512 + 256) - pruneCenter.getX(); - int distZ = (region.getZ() * 512 + 256) - pruneCenter.getZ(); + int distX = (region.getX() << 9 + 256) - pruneCenter.getX(); + int distZ = (region.getZ() << 9 + 256) - pruneCenter.getZ(); double dist = Math.sqrt(distX * distX + distZ * distZ); if (dist > 1024) { logDebug("Deleting cached region " + region.getX() + "," + region.getZ() + " from ram"); From 0e012adb6c6d95cbd3e89790780a2f99ed4ad932 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Mon, 31 Dec 2018 08:00:43 -1000 Subject: [PATCH 08/20] unneeded --- src/main/java/baritone/pathing/movement/Movement.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/Movement.java b/src/main/java/baritone/pathing/movement/Movement.java index b8f7b25e..40e523c5 100644 --- a/src/main/java/baritone/pathing/movement/Movement.java +++ b/src/main/java/baritone/pathing/movement/Movement.java @@ -125,8 +125,7 @@ public abstract class Movement implements IMovement, MovementHelper { currentState.getTarget().hasToForceRotations())); // TODO: calculate movement inputs from latestState.getGoal().position - // latestState.getTarget().position.ifPresent(null); NULL CONSUMER REALLY SHOULDN'T BE THE FINAL THING YOU SHOULD REALLY REPLACE THIS WITH ALMOST ACTUALLY ANYTHING ELSE JUST PLEASE DON'T LEAVE IT AS IT IS THANK YOU KANYE - + currentState.getInputStates().forEach((input, forced) -> { baritone.getInputOverrideHandler().setInputForceState(input, forced); }); From 816727d65b6a45ec35c2f7fa2b32e94c4a91c3e7 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Tue, 1 Jan 2019 22:32:43 -0800 Subject: [PATCH 09/20] not happening --- src/main/java/baritone/pathing/movement/Movement.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/Movement.java b/src/main/java/baritone/pathing/movement/Movement.java index 40e523c5..dcdcdec7 100644 --- a/src/main/java/baritone/pathing/movement/Movement.java +++ b/src/main/java/baritone/pathing/movement/Movement.java @@ -124,8 +124,6 @@ public abstract class Movement implements IMovement, MovementHelper { rotation, currentState.getTarget().hasToForceRotations())); - // TODO: calculate movement inputs from latestState.getGoal().position - currentState.getInputStates().forEach((input, forced) -> { baritone.getInputOverrideHandler().setInputForceState(input, forced); }); From 83e6b2fdfe19c066dca39c1b9761af99bd553f71 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Wed, 2 Jan 2019 21:08:31 -0800 Subject: [PATCH 10/20] cursed --- buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java b/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java index 235b0d31..351ded3a 100644 --- a/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java +++ b/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java @@ -208,7 +208,7 @@ public class ProguardTask extends BaritoneGradleTask { Objects.requireNonNull(extension); // for some reason cant use Class.forName - Class class_baseExtension = extension.getClass().getSuperclass().getSuperclass().getSuperclass(); + Class class_baseExtension = extension.getClass().getSuperclass().getSuperclass().getSuperclass(); // <-- cursed Field f_replacer = class_baseExtension.getDeclaredField("replacer"); f_replacer.setAccessible(true); Object replacer = f_replacer.get(extension); From 39648c5dc6052e94360812fd6052a4a3675c57ba Mon Sep 17 00:00:00 2001 From: Leijurv Date: Thu, 3 Jan 2019 23:40:43 -0800 Subject: [PATCH 11/20] comment --- src/main/java/baritone/utils/PathingControlManager.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/baritone/utils/PathingControlManager.java b/src/main/java/baritone/utils/PathingControlManager.java index f5fff546..1dfdbb57 100644 --- a/src/main/java/baritone/utils/PathingControlManager.java +++ b/src/main/java/baritone/utils/PathingControlManager.java @@ -64,8 +64,7 @@ public class PathingControlManager implements IPathingControlManager { command = null; for (IBaritoneProcess proc : processes) { proc.onLostControl(); - if (proc.isActive() && !proc.isTemporary()) { // it's okay for a temporary thing (like combat pause) to maintain control even if you say to cancel - // but not for a non temporary thing + if (proc.isActive() && !proc.isTemporary()) { // it's okay only for a temporary thing (like combat pause) to maintain control even if you say to cancel throw new IllegalStateException(proc.displayName()); } } From 7898b24baced3daf7627c5cb32bf8970ff321016 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Fri, 4 Jan 2019 23:37:00 -0800 Subject: [PATCH 12/20] mc is weird --- src/main/java/baritone/utils/ToolSet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/baritone/utils/ToolSet.java b/src/main/java/baritone/utils/ToolSet.java index 880517a0..0aa02afd 100644 --- a/src/main/java/baritone/utils/ToolSet.java +++ b/src/main/java/baritone/utils/ToolSet.java @@ -180,7 +180,7 @@ public class ToolSet { speed *= 0.09; break; case 2: - speed *= 0.0027; + speed *= 0.0027; // you might think that 0.09*0.3 = 0.027 so that should be next, that would make too much sense. it's 0.0027. break; default: speed *= 0.00081; From 8b6d621d20318b3c69202fc5b4fbcde43f410806 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sat, 5 Jan 2019 23:38:24 -0800 Subject: [PATCH 13/20] crucial performance optimization --- src/main/java/baritone/utils/PathingControlManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/baritone/utils/PathingControlManager.java b/src/main/java/baritone/utils/PathingControlManager.java index 1dfdbb57..79a36695 100644 --- a/src/main/java/baritone/utils/PathingControlManager.java +++ b/src/main/java/baritone/utils/PathingControlManager.java @@ -174,7 +174,7 @@ public class PathingControlManager implements IPathingControlManager { boolean found = false; boolean cancelOthers = false; PathingCommand exec = null; - for (int i = inContention.size() - 1; i >= 0; i--) { // truly a gamer moment + for (int i = inContention.size() - 1; i >= 0; --i) { // truly a gamer moment IBaritoneProcess proc = inContention.get(i); if (found) { if (cancelOthers) { From 76427b8ecb94769da3c5a6261745b5cc7f952732 Mon Sep 17 00:00:00 2001 From: EvilSourcerer <32974335+EvilSourcerer@users.noreply.github.com> Date: Sun, 6 Jan 2019 19:49:58 -0500 Subject: [PATCH 14/20] real gamers use bufferedreader --- src/api/java/baritone/api/utils/SettingsUtil.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/api/java/baritone/api/utils/SettingsUtil.java b/src/api/java/baritone/api/utils/SettingsUtil.java index 4d13d027..fc7c3efd 100644 --- a/src/api/java/baritone/api/utils/SettingsUtil.java +++ b/src/api/java/baritone/api/utils/SettingsUtil.java @@ -23,9 +23,14 @@ import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; import java.awt.*; +import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; -import java.util.*; +import java.io.FileReader; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -37,9 +42,9 @@ public class SettingsUtil { private static final Map, SettingsIO> map; public static void readAndApply(Settings settings) { - try (Scanner scan = new Scanner(settingsFile)) { - while (scan.hasNextLine()) { - String line = scan.nextLine(); + try (BufferedReader scan = new BufferedReader(new FileReader(settingsFile))) { + String line; + while ((line = scan.readLine()) != null) { if (line.isEmpty()) { continue; } From 712a0a39052ae9a088bfb09e8a04104ef0a8fcbe Mon Sep 17 00:00:00 2001 From: babbaj Date: Mon, 7 Jan 2019 01:08:46 -0500 Subject: [PATCH 15/20] refactor SettingsUtil to be more epic --- .../java/baritone/api/utils/SettingsUtil.java | 66 ++++++++++++------- 1 file changed, 41 insertions(+), 25 deletions(-) diff --git a/src/api/java/baritone/api/utils/SettingsUtil.java b/src/api/java/baritone/api/utils/SettingsUtil.java index fc7c3efd..a9e81383 100644 --- a/src/api/java/baritone/api/utils/SettingsUtil.java +++ b/src/api/java/baritone/api/utils/SettingsUtil.java @@ -18,15 +18,18 @@ package baritone.api.utils; import baritone.api.Settings; -import net.minecraft.client.Minecraft; +import java.io.BufferedWriter; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.function.Consumer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; import java.awt.*; import java.io.BufferedReader; -import java.io.File; -import java.io.FileOutputStream; -import java.io.FileReader; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -35,44 +38,57 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; +import static net.minecraft.client.Minecraft.getMinecraft; + public class SettingsUtil { - private static final File settingsFile = new File(new File(Minecraft.getMinecraft().gameDir, "baritone"), "settings.txt"); + private static final Path settingsFile = getMinecraft().gameDir.toPath().resolve("baritone").resolve("settings.txt"); + private static final Pattern SETTING_PATTERN = Pattern.compile("^(?[^ ]+) +(?[^ ]+)");// 2 words separated by spaces private static final Map, SettingsIO> map; - public static void readAndApply(Settings settings) { - try (BufferedReader scan = new BufferedReader(new FileReader(settingsFile))) { + + private static boolean isComment(String line) { + return line.startsWith("#") || line.startsWith("//"); + } + + private static void forEachLine(Path file, Consumer consumer) throws IOException { + try (BufferedReader scan = Files.newBufferedReader(file)) { String line; while ((line = scan.readLine()) != null) { - if (line.isEmpty()) { - continue; + if (line.isEmpty() || isComment(line)) continue; + + consumer.accept(line); + } + } + } + + public void readAndApply(Settings settings) { + try { + forEachLine(settingsFile, line -> { + Matcher matcher = SETTING_PATTERN.matcher(line); + if (!matcher.matches()) { + System.out.println("Invalid syntax in setting file: " + line); + return; } - if (line.startsWith("#") || line.startsWith("//")) { - continue; - } - int space = line.indexOf(" "); - if (space == -1) { - System.out.println("Skipping invalid line with no space: " + line); - continue; - } - String settingName = line.substring(0, space).trim().toLowerCase(); - String settingValue = line.substring(space).trim(); + + String settingName = matcher.group("setting").toLowerCase(); + String settingValue = matcher.group("value").toLowerCase(); try { parseAndApply(settings, settingName, settingValue); } catch (Exception ex) { - ex.printStackTrace(); System.out.println("Unable to parse line " + line); + ex.printStackTrace(); } - } + }); } catch (Exception ex) { - ex.printStackTrace(); System.out.println("Exception while reading Baritone settings, some settings may be reset to default values!"); + ex.printStackTrace(); } } public static synchronized void save(Settings settings) { - try (FileOutputStream out = new FileOutputStream(settingsFile)) { + try (BufferedWriter out = Files.newBufferedWriter(settingsFile)) { for (Settings.Setting setting : settings.allSettings) { if (setting.get() == null) { System.out.println("NULL SETTING?" + setting.getName()); @@ -88,11 +104,11 @@ public class SettingsUtil { if (io == null) { throw new IllegalStateException("Missing " + setting.getValueClass() + " " + setting + " " + setting.getName()); } - out.write((setting.getName() + " " + io.toString.apply(setting.get()) + "\n").getBytes()); + out.write(setting.getName() + " " + io.toString.apply(setting.get()) + "\n"); } } catch (Exception ex) { + System.out.println("Exception thrown while saving Baritone settings!"); ex.printStackTrace(); - System.out.println("Exception while saving Baritone settings!"); } } From 227b30366907c8c7ea055f5717606aa0a91b9b3f Mon Sep 17 00:00:00 2001 From: babbaj Date: Mon, 7 Jan 2019 01:16:52 -0500 Subject: [PATCH 16/20] value doesnt have to be lowercase --- src/api/java/baritone/api/utils/SettingsUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/java/baritone/api/utils/SettingsUtil.java b/src/api/java/baritone/api/utils/SettingsUtil.java index a9e81383..f71f7614 100644 --- a/src/api/java/baritone/api/utils/SettingsUtil.java +++ b/src/api/java/baritone/api/utils/SettingsUtil.java @@ -73,7 +73,7 @@ public class SettingsUtil { } String settingName = matcher.group("setting").toLowerCase(); - String settingValue = matcher.group("value").toLowerCase(); + String settingValue = matcher.group("value"); try { parseAndApply(settings, settingName, settingValue); } catch (Exception ex) { From 84b580b00161cc11d63df3c6f26179e2c444ffcc Mon Sep 17 00:00:00 2001 From: Leijurv Date: Sun, 6 Jan 2019 21:04:50 -0800 Subject: [PATCH 17/20] cursed --- src/main/java/baritone/utils/pathing/PathBase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/baritone/utils/pathing/PathBase.java b/src/main/java/baritone/utils/pathing/PathBase.java index 3fbc95ca..04fe9872 100644 --- a/src/main/java/baritone/utils/pathing/PathBase.java +++ b/src/main/java/baritone/utils/pathing/PathBase.java @@ -26,7 +26,7 @@ import net.minecraft.util.math.BlockPos; public abstract class PathBase implements IPath { @Override - public PathBase cutoffAtLoadedChunks(Object bsi0) { + public PathBase cutoffAtLoadedChunks(Object bsi0) { // <-- cursed cursed cursed BlockStateInterface bsi = (BlockStateInterface) bsi0; for (int i = 0; i < positions().size(); i++) { BlockPos pos = positions().get(i); From 23dc97ad5e96bcb577228efc89ac98eec2a3dd39 Mon Sep 17 00:00:00 2001 From: babbaj Date: Mon, 7 Jan 2019 01:25:39 -0500 Subject: [PATCH 18/20] oops that should have been static --- src/api/java/baritone/api/utils/SettingsUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/java/baritone/api/utils/SettingsUtil.java b/src/api/java/baritone/api/utils/SettingsUtil.java index f71f7614..b6623b98 100644 --- a/src/api/java/baritone/api/utils/SettingsUtil.java +++ b/src/api/java/baritone/api/utils/SettingsUtil.java @@ -63,7 +63,7 @@ public class SettingsUtil { } } - public void readAndApply(Settings settings) { + public static void readAndApply(Settings settings) { try { forEachLine(settingsFile, line -> { Matcher matcher = SETTING_PATTERN.matcher(line); From ee9519d8911464b35203104e96ab74444c3b0907 Mon Sep 17 00:00:00 2001 From: Leijurv Date: Mon, 7 Jan 2019 08:53:39 -0800 Subject: [PATCH 19/20] tweaks --- .../java/baritone/api/utils/SettingsUtil.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/api/java/baritone/api/utils/SettingsUtil.java b/src/api/java/baritone/api/utils/SettingsUtil.java index b6623b98..07b4cd98 100644 --- a/src/api/java/baritone/api/utils/SettingsUtil.java +++ b/src/api/java/baritone/api/utils/SettingsUtil.java @@ -18,23 +18,23 @@ package baritone.api.utils; import baritone.api.Settings; -import java.io.BufferedWriter; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.function.Consumer; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; import java.awt.*; import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.function.Consumer; import java.util.function.Function; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -42,12 +42,11 @@ import static net.minecraft.client.Minecraft.getMinecraft; public class SettingsUtil { - private static final Path settingsFile = getMinecraft().gameDir.toPath().resolve("baritone").resolve("settings.txt"); - private static final Pattern SETTING_PATTERN = Pattern.compile("^(?[^ ]+) +(?[^ ]+)");// 2 words separated by spaces + private static final Path SETTINGS_PATH = getMinecraft().gameDir.toPath().resolve("baritone").resolve("settings.txt"); + private static final Pattern SETTING_PATTERN = Pattern.compile("^(?[^ ]+) +(?[^ ]+)"); // 2 words separated by spaces private static final Map, SettingsIO> map; - private static boolean isComment(String line) { return line.startsWith("#") || line.startsWith("//"); } @@ -56,8 +55,9 @@ public class SettingsUtil { try (BufferedReader scan = Files.newBufferedReader(file)) { String line; while ((line = scan.readLine()) != null) { - if (line.isEmpty() || isComment(line)) continue; - + if (line.isEmpty() || isComment(line)) { + continue; + } consumer.accept(line); } } @@ -65,7 +65,7 @@ public class SettingsUtil { public static void readAndApply(Settings settings) { try { - forEachLine(settingsFile, line -> { + forEachLine(SETTINGS_PATH, line -> { Matcher matcher = SETTING_PATTERN.matcher(line); if (!matcher.matches()) { System.out.println("Invalid syntax in setting file: " + line); @@ -88,7 +88,7 @@ public class SettingsUtil { } public static synchronized void save(Settings settings) { - try (BufferedWriter out = Files.newBufferedWriter(settingsFile)) { + try (BufferedWriter out = Files.newBufferedWriter(SETTINGS_PATH)) { for (Settings.Setting setting : settings.allSettings) { if (setting.get() == null) { System.out.println("NULL SETTING?" + setting.getName()); From e971d5d43fb14947e4872faaee52aa05ae24692a Mon Sep 17 00:00:00 2001 From: Leijurv Date: Tue, 8 Jan 2019 14:56:21 -0800 Subject: [PATCH 20/20] prevent favoring from affecting movement cost thresholds --- src/main/java/baritone/pathing/calc/Path.java | 4 +++- src/main/java/baritone/pathing/movement/Movement.java | 2 +- .../baritone/pathing/movement/movements/MovementAscend.java | 2 +- .../baritone/pathing/movement/movements/MovementDescend.java | 2 +- .../baritone/pathing/movement/movements/MovementDiagonal.java | 2 +- .../baritone/pathing/movement/movements/MovementDownward.java | 2 +- .../baritone/pathing/movement/movements/MovementFall.java | 2 +- .../baritone/pathing/movement/movements/MovementParkour.java | 2 +- .../baritone/pathing/movement/movements/MovementPillar.java | 2 +- .../baritone/pathing/movement/movements/MovementTraverse.java | 2 +- 10 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main/java/baritone/pathing/calc/Path.java b/src/main/java/baritone/pathing/calc/Path.java index 0b5b2cc7..37441743 100644 --- a/src/main/java/baritone/pathing/calc/Path.java +++ b/src/main/java/baritone/pathing/calc/Path.java @@ -132,7 +132,9 @@ class Path extends PathBase { Movement move = moves.apply0(context, src); if (move.getDest().equals(dest)) { // have to calculate the cost at calculation time so we can accurately judge whether a cost increase happened between cached calculation and real execution - move.override(cost); + // however, taking into account possible favoring that could skew the node cost, we really want the stricter limit of the two + // so we take the minimum of the path node cost difference, and the calculated cost + move.override(Math.min(move.calculateCost(context), cost)); return move; } } diff --git a/src/main/java/baritone/pathing/movement/Movement.java b/src/main/java/baritone/pathing/movement/Movement.java index dcdcdec7..2db8bf8d 100644 --- a/src/main/java/baritone/pathing/movement/Movement.java +++ b/src/main/java/baritone/pathing/movement/Movement.java @@ -84,7 +84,7 @@ public abstract class Movement implements IMovement, MovementHelper { return cost; } - protected abstract double calculateCost(CalculationContext context); + public abstract double calculateCost(CalculationContext context); @Override public double recalculateCost() { diff --git a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java index 9973e94b..2e20dd6e 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementAscend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementAscend.java @@ -52,7 +52,7 @@ public class MovementAscend extends Movement { } @Override - protected double calculateCost(CalculationContext context) { + public double calculateCost(CalculationContext context) { return cost(context, src.x, src.y, src.z, dest.x, dest.z); } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java index ba915ac6..d2d2c282 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDescend.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDescend.java @@ -52,7 +52,7 @@ public class MovementDescend extends Movement { } @Override - protected double calculateCost(CalculationContext context) { + public double calculateCost(CalculationContext context) { MutableMoveResult result = new MutableMoveResult(); cost(context, src.x, src.y, src.z, dest.x, dest.z, result); if (result.y != dest.y) { diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java index f2aeebbb..a47fc263 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDiagonal.java @@ -54,7 +54,7 @@ public class MovementDiagonal extends Movement { } @Override - protected double calculateCost(CalculationContext context) { + public double calculateCost(CalculationContext context) { MutableMoveResult result = new MutableMoveResult(); cost(context, src.x, src.y, src.z, dest.x, dest.z, result); if (result.y != dest.y) { diff --git a/src/main/java/baritone/pathing/movement/movements/MovementDownward.java b/src/main/java/baritone/pathing/movement/movements/MovementDownward.java index 81b257e7..2bec8fcf 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementDownward.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementDownward.java @@ -43,7 +43,7 @@ public class MovementDownward extends Movement { } @Override - protected double calculateCost(CalculationContext context) { + public double calculateCost(CalculationContext context) { return cost(context, src.x, src.y, src.z); } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementFall.java b/src/main/java/baritone/pathing/movement/movements/MovementFall.java index 90b44c14..6442d7d9 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementFall.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementFall.java @@ -54,7 +54,7 @@ public class MovementFall extends Movement { } @Override - protected double calculateCost(CalculationContext context) { + public double calculateCost(CalculationContext context) { MutableMoveResult result = new MutableMoveResult(); MovementDescend.cost(context, src.x, src.y, src.z, dest.x, dest.z, result); if (result.y != dest.y) { diff --git a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java index 5bc5b1db..ab98d3d0 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementParkour.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementParkour.java @@ -166,7 +166,7 @@ public class MovementParkour extends Movement { @Override - protected double calculateCost(CalculationContext context) { + public double calculateCost(CalculationContext context) { MutableMoveResult res = new MutableMoveResult(); cost(context, src.x, src.y, src.z, direction, res); if (res.x != dest.x || res.z != dest.z) { diff --git a/src/main/java/baritone/pathing/movement/movements/MovementPillar.java b/src/main/java/baritone/pathing/movement/movements/MovementPillar.java index fafba24a..b236f7e2 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementPillar.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementPillar.java @@ -42,7 +42,7 @@ public class MovementPillar extends Movement { } @Override - protected double calculateCost(CalculationContext context) { + public double calculateCost(CalculationContext context) { return cost(context, src.x, src.y, src.z); } diff --git a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java index 84e42358..0788ff8c 100644 --- a/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java +++ b/src/main/java/baritone/pathing/movement/movements/MovementTraverse.java @@ -60,7 +60,7 @@ public class MovementTraverse extends Movement { } @Override - protected double calculateCost(CalculationContext context) { + public double calculateCost(CalculationContext context) { return cost(context, src.x, src.y, src.z, dest.x, dest.z); }