diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java index c8dc1b9e..7ca050ce 100644 --- a/src/api/java/baritone/api/Settings.java +++ b/src/api/java/baritone/api/Settings.java @@ -201,9 +201,16 @@ public final class Settings { ))); /** - * make {@link #blocksToAvoidBreaking} mean the block is never broken instead of just strongly discouraging it. + * blocks that baritone shouldn't break, but can if it needs to. */ - public final Setting avoidBreakingMeansNever = new Setting(false); + public final Setting> blocksToDiscourageBreaking = new Setting<>(new ArrayList<>(Arrays.asList( + + ))); + + /** + * this multiplies the break speed, if set above 1 it's "encourage breaking" instead + */ + public final Setting discourageBreakingMultiplier = new Setting<>(.1); /** * A list of blocks to be treated as if they're air. diff --git a/src/main/java/baritone/pathing/movement/MovementHelper.java b/src/main/java/baritone/pathing/movement/MovementHelper.java index 69e846a2..64528ddd 100644 --- a/src/main/java/baritone/pathing/movement/MovementHelper.java +++ b/src/main/java/baritone/pathing/movement/MovementHelper.java @@ -50,7 +50,8 @@ public interface MovementHelper extends ActionCosts, Helper { static boolean avoidBreaking(BlockStateInterface bsi, int x, int y, int z, IBlockState state) { Block b = state.getBlock(); - return b == Blocks.ICE // ice becomes water, and water can mess up the path + return Baritone.settings().blocksToAvoidBreaking.value.contains(b) + || b == Blocks.ICE // ice becomes water, and water can mess up the path || b instanceof BlockSilverfish // obvious reasons // call context.get directly with x,y,z. no need to make 5 new BlockPos for no reason || avoidAdjacentBreaking(bsi, x, y + 1, z, true) diff --git a/src/main/java/baritone/utils/ToolSet.java b/src/main/java/baritone/utils/ToolSet.java index 31046a87..d99adbb3 100644 --- a/src/main/java/baritone/utils/ToolSet.java +++ b/src/main/java/baritone/utils/ToolSet.java @@ -165,7 +165,7 @@ public class ToolSet { } private double avoidanceMultiplier(Block b) { - return Baritone.settings().blocksToAvoidBreaking.value.contains(b) ? Baritone.settings().avoidBreakingMeansNever.value ? 0 : 0.1 : 1; + return Baritone.settings().blocksToDiscourageBreaking.value.contains(b) ? Baritone.settings().discourageBreakingMultiplier.value : 1; } /**