From 2ddc2c3660d591d42e39a935bb46c27e924ee22a Mon Sep 17 00:00:00 2001 From: RealIndrit Date: Thu, 13 Aug 2020 22:36:34 +0200 Subject: [PATCH 01/11] Add auto tool settings because 2 lines of code lols --- src/api/java/baritone/api/Settings.java | 5 +++++ src/main/java/baritone/utils/ToolSet.java | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java index 3da1d21b..c03b0b72 100644 --- a/src/api/java/baritone/api/Settings.java +++ b/src/api/java/baritone/api/Settings.java @@ -61,6 +61,11 @@ public final class Settings { */ public final Setting allowInventory = new Setting<>(false); + /** + * Allow player to decide if to use auto tool or not + */ + public final Setting autoTool = new Setting<>(true); + /** * It doesn't actually take twenty ticks to place a block, this cost is so high * because we want to generally conserve blocks which might be limited. diff --git a/src/main/java/baritone/utils/ToolSet.java b/src/main/java/baritone/utils/ToolSet.java index b6446b30..01784302 100644 --- a/src/main/java/baritone/utils/ToolSet.java +++ b/src/main/java/baritone/utils/ToolSet.java @@ -127,7 +127,7 @@ public class ToolSet { } } } - return best; + return Baritone.settings().autoTool.value? best : player.inventory.currentItem; } /** From 2b6fe188ed15a658141bd670c476b8ab5e84f874 Mon Sep 17 00:00:00 2001 From: RealIndrit Date: Thu, 13 Aug 2020 22:47:40 +0200 Subject: [PATCH 02/11] Why calculate stuff that isnt needed... --- src/main/java/baritone/pathing/movement/MovementHelper.java | 4 +++- src/main/java/baritone/utils/ToolSet.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/MovementHelper.java b/src/main/java/baritone/pathing/movement/MovementHelper.java index 1a3faf57..7dae4cea 100644 --- a/src/main/java/baritone/pathing/movement/MovementHelper.java +++ b/src/main/java/baritone/pathing/movement/MovementHelper.java @@ -432,7 +432,9 @@ public interface MovementHelper extends ActionCosts, Helper { * @param ts previously calculated ToolSet */ static void switchToBestToolFor(IPlayerContext ctx, IBlockState b, ToolSet ts, boolean preferSilkTouch) { - ctx.player().inventory.currentItem = ts.getBestSlot(b.getBlock(), preferSilkTouch); + if(Baritone.settings().autoTool.value){ + ctx.player().inventory.currentItem = ts.getBestSlot(b.getBlock(), preferSilkTouch); + } } static void moveTowards(IPlayerContext ctx, MovementState state, BlockPos pos) { diff --git a/src/main/java/baritone/utils/ToolSet.java b/src/main/java/baritone/utils/ToolSet.java index 01784302..b6446b30 100644 --- a/src/main/java/baritone/utils/ToolSet.java +++ b/src/main/java/baritone/utils/ToolSet.java @@ -127,7 +127,7 @@ public class ToolSet { } } } - return Baritone.settings().autoTool.value? best : player.inventory.currentItem; + return best; } /** From 2ed3e10833bd08cdd4993af3387fa909a2aff742 Mon Sep 17 00:00:00 2001 From: RealIndrit Date: Thu, 13 Aug 2020 23:20:30 +0200 Subject: [PATCH 03/11] And we try this again, because wtf?? --- src/main/java/baritone/pathing/movement/MovementHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/baritone/pathing/movement/MovementHelper.java b/src/main/java/baritone/pathing/movement/MovementHelper.java index 7dae4cea..7ae57ae4 100644 --- a/src/main/java/baritone/pathing/movement/MovementHelper.java +++ b/src/main/java/baritone/pathing/movement/MovementHelper.java @@ -432,7 +432,7 @@ public interface MovementHelper extends ActionCosts, Helper { * @param ts previously calculated ToolSet */ static void switchToBestToolFor(IPlayerContext ctx, IBlockState b, ToolSet ts, boolean preferSilkTouch) { - if(Baritone.settings().autoTool.value){ + if (Baritone.settings().autoTool.value) { ctx.player().inventory.currentItem = ts.getBestSlot(b.getBlock(), preferSilkTouch); } } From f8872e1cd450cbf205974d6dc9db1e1c6b8d676e Mon Sep 17 00:00:00 2001 From: RealIndrit Date: Fri, 14 Aug 2020 10:14:02 +0200 Subject: [PATCH 04/11] Everything can be traced back to getBestSlot(); --- src/main/java/baritone/pathing/movement/MovementHelper.java | 4 +--- src/main/java/baritone/utils/ToolSet.java | 6 ++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/baritone/pathing/movement/MovementHelper.java b/src/main/java/baritone/pathing/movement/MovementHelper.java index 7ae57ae4..1a3faf57 100644 --- a/src/main/java/baritone/pathing/movement/MovementHelper.java +++ b/src/main/java/baritone/pathing/movement/MovementHelper.java @@ -432,9 +432,7 @@ public interface MovementHelper extends ActionCosts, Helper { * @param ts previously calculated ToolSet */ static void switchToBestToolFor(IPlayerContext ctx, IBlockState b, ToolSet ts, boolean preferSilkTouch) { - if (Baritone.settings().autoTool.value) { - ctx.player().inventory.currentItem = ts.getBestSlot(b.getBlock(), preferSilkTouch); - } + ctx.player().inventory.currentItem = ts.getBestSlot(b.getBlock(), preferSilkTouch); } static void moveTowards(IPlayerContext ctx, MovementState state, BlockPos pos) { diff --git a/src/main/java/baritone/utils/ToolSet.java b/src/main/java/baritone/utils/ToolSet.java index b6446b30..101a4294 100644 --- a/src/main/java/baritone/utils/ToolSet.java +++ b/src/main/java/baritone/utils/ToolSet.java @@ -18,6 +18,7 @@ package baritone.utils; import baritone.Baritone; +import baritone.command.argparser.DefaultArgParsers; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.entity.EntityPlayerSP; @@ -102,6 +103,11 @@ public class ToolSet { * @return An int containing the index in the tools array that worked best */ public int getBestSlot(Block b, boolean preferSilkTouch) { + // Make all depending calculation respect auto tool value without doing unecessary calculations... + if (Baritone.settings().autoTool.value) { + return player.inventory.currentItem; + } + int best = 0; double highestSpeed = Double.NEGATIVE_INFINITY; int lowestCost = Integer.MIN_VALUE; From 49db52673a1dfd60828ecbb6e6a01e330610dd34 Mon Sep 17 00:00:00 2001 From: RealIndrit Date: Fri, 14 Aug 2020 10:25:51 +0200 Subject: [PATCH 05/11] Lol --- src/main/java/baritone/utils/ToolSet.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/baritone/utils/ToolSet.java b/src/main/java/baritone/utils/ToolSet.java index 101a4294..c6161f07 100644 --- a/src/main/java/baritone/utils/ToolSet.java +++ b/src/main/java/baritone/utils/ToolSet.java @@ -18,7 +18,6 @@ package baritone.utils; import baritone.Baritone; -import baritone.command.argparser.DefaultArgParsers; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.entity.EntityPlayerSP; From e0ff16e2dd8366f9c7e94003a3de6dc997115d4b Mon Sep 17 00:00:00 2001 From: RealIndrit Date: Fri, 14 Aug 2020 10:34:21 +0200 Subject: [PATCH 06/11] Nice brainfart --- 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 c6161f07..cd347d20 100644 --- a/src/main/java/baritone/utils/ToolSet.java +++ b/src/main/java/baritone/utils/ToolSet.java @@ -103,7 +103,7 @@ public class ToolSet { */ public int getBestSlot(Block b, boolean preferSilkTouch) { // Make all depending calculation respect auto tool value without doing unecessary calculations... - if (Baritone.settings().autoTool.value) { + if (!Baritone.settings().autoTool.value) { return player.inventory.currentItem; } From 19355cb4f252489356e91a37bfac877055247ae3 Mon Sep 17 00:00:00 2001 From: RealIndrit Date: Fri, 14 Aug 2020 10:58:15 +0200 Subject: [PATCH 07/11] Added AutoToolMovement bypass setting for special usage cases, should not be used it not actually necessary --- src/api/java/baritone/api/Settings.java | 8 ++++++++ .../java/baritone/pathing/movement/MovementHelper.java | 4 +++- src/main/java/baritone/utils/ToolSet.java | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java index c03b0b72..5b0d58ed 100644 --- a/src/api/java/baritone/api/Settings.java +++ b/src/api/java/baritone/api/Settings.java @@ -66,6 +66,14 @@ public final class Settings { */ public final Setting autoTool = new Setting<>(true); + /** + * Should movement cost calculation ignore the cost of breaking blocks with current slot? + * Only use this if actually necessary, make sure to put this back to original state (false), or it + * will mess up pathing in some combinations with auto tool setting. (just fall back to original settings if any + * problems occurs) + */ + public final Setting ignoreAutoToolMovementCost = new Setting<>(false); + /** * It doesn't actually take twenty ticks to place a block, this cost is so high * because we want to generally conserve blocks which might be limited. diff --git a/src/main/java/baritone/pathing/movement/MovementHelper.java b/src/main/java/baritone/pathing/movement/MovementHelper.java index 1a3faf57..7ae57ae4 100644 --- a/src/main/java/baritone/pathing/movement/MovementHelper.java +++ b/src/main/java/baritone/pathing/movement/MovementHelper.java @@ -432,7 +432,9 @@ public interface MovementHelper extends ActionCosts, Helper { * @param ts previously calculated ToolSet */ static void switchToBestToolFor(IPlayerContext ctx, IBlockState b, ToolSet ts, boolean preferSilkTouch) { - ctx.player().inventory.currentItem = ts.getBestSlot(b.getBlock(), preferSilkTouch); + if (Baritone.settings().autoTool.value) { + ctx.player().inventory.currentItem = ts.getBestSlot(b.getBlock(), preferSilkTouch); + } } static void moveTowards(IPlayerContext ctx, MovementState state, BlockPos pos) { diff --git a/src/main/java/baritone/utils/ToolSet.java b/src/main/java/baritone/utils/ToolSet.java index cd347d20..2d8a1a2a 100644 --- a/src/main/java/baritone/utils/ToolSet.java +++ b/src/main/java/baritone/utils/ToolSet.java @@ -103,7 +103,7 @@ public class ToolSet { */ public int getBestSlot(Block b, boolean preferSilkTouch) { // Make all depending calculation respect auto tool value without doing unecessary calculations... - if (!Baritone.settings().autoTool.value) { + if (!Baritone.settings().ignoreAutoToolMovementCost.value) { return player.inventory.currentItem; } From 94ac15a8fcc5fff7b08f1337a66c3ec3fd7158d7 Mon Sep 17 00:00:00 2001 From: RealIndrit Date: Fri, 14 Aug 2020 17:06:41 +0200 Subject: [PATCH 08/11] KEK False != True :clown: --- 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 2d8a1a2a..e3eb56f5 100644 --- a/src/main/java/baritone/utils/ToolSet.java +++ b/src/main/java/baritone/utils/ToolSet.java @@ -103,7 +103,7 @@ public class ToolSet { */ public int getBestSlot(Block b, boolean preferSilkTouch) { // Make all depending calculation respect auto tool value without doing unecessary calculations... - if (!Baritone.settings().ignoreAutoToolMovementCost.value) { + if (Baritone.settings().ignoreAutoToolMovementCost.value) { return player.inventory.currentItem; } From 88e2fba447ed82abd23760dad1540010567c9300 Mon Sep 17 00:00:00 2001 From: RealIndrit Date: Fri, 14 Aug 2020 17:11:31 +0200 Subject: [PATCH 09/11] Ok, Im actually retarded --- 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 e3eb56f5..2d8a1a2a 100644 --- a/src/main/java/baritone/utils/ToolSet.java +++ b/src/main/java/baritone/utils/ToolSet.java @@ -103,7 +103,7 @@ public class ToolSet { */ public int getBestSlot(Block b, boolean preferSilkTouch) { // Make all depending calculation respect auto tool value without doing unecessary calculations... - if (Baritone.settings().ignoreAutoToolMovementCost.value) { + if (!Baritone.settings().ignoreAutoToolMovementCost.value) { return player.inventory.currentItem; } From ac55de63e9a8665770d0e80316793d28f2bf914a Mon Sep 17 00:00:00 2001 From: RealIndrit Date: Fri, 14 Aug 2020 17:55:10 +0200 Subject: [PATCH 10/11] Maybe dont have ignore cost calculation override auto tool? --- src/api/java/baritone/api/Settings.java | 2 +- src/main/java/baritone/utils/ToolSet.java | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java index 5b0d58ed..0776d2b3 100644 --- a/src/api/java/baritone/api/Settings.java +++ b/src/api/java/baritone/api/Settings.java @@ -69,7 +69,7 @@ public final class Settings { /** * Should movement cost calculation ignore the cost of breaking blocks with current slot? * Only use this if actually necessary, make sure to put this back to original state (false), or it - * will mess up pathing in some combinations with auto tool setting. (just fall back to original settings if any + * migth mess up pathing in some combinations with auto tool setting. (just fall back to original settings if any * problems occurs) */ public final Setting ignoreAutoToolMovementCost = new Setting<>(false); diff --git a/src/main/java/baritone/utils/ToolSet.java b/src/main/java/baritone/utils/ToolSet.java index 2d8a1a2a..0f791cb7 100644 --- a/src/main/java/baritone/utils/ToolSet.java +++ b/src/main/java/baritone/utils/ToolSet.java @@ -101,9 +101,14 @@ public class ToolSet { * @param b the blockstate to be mined * @return An int containing the index in the tools array that worked best */ + public int getBestSlot(Block b, boolean preferSilkTouch) { + return getBestSlot(b, preferSilkTouch, false); + } + + public int getBestSlot(Block b, boolean preferSilkTouch, boolean pathingCalculation) { // Make all depending calculation respect auto tool value without doing unecessary calculations... - if (!Baritone.settings().ignoreAutoToolMovementCost.value) { + if (!Baritone.settings().ignoreAutoToolMovementCost.value && pathingCalculation) { return player.inventory.currentItem; } @@ -142,7 +147,7 @@ public class ToolSet { * @return A double containing the destruction ticks with the best tool */ private double getBestDestructionTime(Block b) { - ItemStack stack = player.inventory.getStackInSlot(getBestSlot(b, false)); + ItemStack stack = player.inventory.getStackInSlot(getBestSlot(b, false, true)); return calculateSpeedVsBlock(stack, b.getDefaultState()) * avoidanceMultiplier(b); } From 2eba22031a524215993da1f57a5bf7c5385e0a13 Mon Sep 17 00:00:00 2001 From: RealIndrit Date: Fri, 14 Aug 2020 22:47:39 +0200 Subject: [PATCH 11/11] Maybe dont have ignore cost calculation override auto tool? --- src/api/java/baritone/api/Settings.java | 6 ++++-- src/main/java/baritone/utils/ToolSet.java | 9 +++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java index 0776d2b3..15c9ba35 100644 --- a/src/api/java/baritone/api/Settings.java +++ b/src/api/java/baritone/api/Settings.java @@ -67,9 +67,11 @@ public final class Settings { public final Setting autoTool = new Setting<>(true); /** - * Should movement cost calculation ignore the cost of breaking blocks with current slot? + * Should movement cost calculation ignore the cost of breaking blocks with current slot, and assume best possible + * item in the hotbar? + * * Only use this if actually necessary, make sure to put this back to original state (false), or it - * migth mess up pathing in some combinations with auto tool setting. (just fall back to original settings if any + * might mess up pathing in some combinations with auto tool setting. (just fall back to original settings if any * problems occurs) */ public final Setting ignoreAutoToolMovementCost = new Setting<>(false); diff --git a/src/main/java/baritone/utils/ToolSet.java b/src/main/java/baritone/utils/ToolSet.java index 0f791cb7..b903bdf3 100644 --- a/src/main/java/baritone/utils/ToolSet.java +++ b/src/main/java/baritone/utils/ToolSet.java @@ -96,7 +96,8 @@ public class ToolSet { } /** - * Calculate which tool on the hotbar is best for mining + * Calculate which tool on the hotbar is best for mining, depending on an override setting, + * related to auto tool movement cost, it will either return current selected slot, or the best slot. * * @param b the blockstate to be mined * @return An int containing the index in the tools array that worked best @@ -107,7 +108,11 @@ public class ToolSet { } public int getBestSlot(Block b, boolean preferSilkTouch, boolean pathingCalculation) { - // Make all depending calculation respect auto tool value without doing unecessary calculations... + + /* + If we actually want know what efficiency our held item has instead of the best one + possible, this lets us make pathing depending on the actual tool used (if auto tool is disabled) + */ if (!Baritone.settings().ignoreAutoToolMovementCost.value && pathingCalculation) { return player.inventory.currentItem; }