From f3086c2231aaae956b3f471b5d7f4afe8804f278 Mon Sep 17 00:00:00 2001 From: ZacSharp <68165024+ZacSharp@users.noreply.github.com> Date: Thu, 27 Feb 2025 15:36:59 +0100 Subject: [PATCH 1/3] Filter blocks where `avoidBreaking` returns false shaft-mining checks `avoidBreaking` so not checking it here can cause Baritone to walk to a position and then do nothing. --- src/main/java/baritone/process/MineProcess.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/baritone/process/MineProcess.java b/src/main/java/baritone/process/MineProcess.java index d1bec672f..cf16a5d36 100644 --- a/src/main/java/baritone/process/MineProcess.java +++ b/src/main/java/baritone/process/MineProcess.java @@ -486,7 +486,11 @@ public final class MineProcess extends BaritoneProcessHelper implements IMinePro public static boolean plausibleToBreak(CalculationContext ctx, BlockPos pos) { - if (MovementHelper.getMiningDurationTicks(ctx, pos.getX(), pos.getY(), pos.getZ(), ctx.bsi.get0(pos), true) >= COST_INF) { + BlockState state = ctx.bsi.get0(pos); + if (MovementHelper.getMiningDurationTicks(ctx, pos.getX(), pos.getY(), pos.getZ(), state, true) >= COST_INF) { + return false; + } + if (MovementHelper.avoidBreaking(ctx.bsi, pos.getX(), pos.getY(), pos.getZ(), state)) { return false; } From f357eb230b83cfa413ca5fbf8489076e0e9bb112 Mon Sep 17 00:00:00 2001 From: ZacSharp <68165024+ZacSharp@users.noreply.github.com> Date: Thu, 27 Feb 2025 15:55:09 +0100 Subject: [PATCH 2/3] Remove spam --- src/main/java/baritone/process/MineProcess.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/baritone/process/MineProcess.java b/src/main/java/baritone/process/MineProcess.java index cf16a5d36..0a64c98d4 100644 --- a/src/main/java/baritone/process/MineProcess.java +++ b/src/main/java/baritone/process/MineProcess.java @@ -77,7 +77,6 @@ public final class MineProcess extends BaritoneProcessHelper implements IMinePro int curr = ctx.player().getInventory().items.stream() .filter(stack -> filter.has(stack)) .mapToInt(ItemStack::getCount).sum(); - System.out.println("Currently have " + curr + " valid items"); if (curr >= desiredQuantity) { logDirect("Have " + curr + " valid items"); cancel(); From b8ac867fb920e5538aaa39a65cd7501804e43897 Mon Sep 17 00:00:00 2001 From: ZacSharp <68165024+ZacSharp@users.noreply.github.com> Date: Thu, 13 Mar 2025 19:32:35 +0100 Subject: [PATCH 3/3] Break from eye level outwards We might be standing inside passable blocks (e.g. sugar cane) so the block at foot level is occluded by the one at eye level. This does still break if we are standing inside a non-target with a target above or below. --- src/main/java/baritone/process/MineProcess.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/baritone/process/MineProcess.java b/src/main/java/baritone/process/MineProcess.java index 0a64c98d4..ff905c02f 100644 --- a/src/main/java/baritone/process/MineProcess.java +++ b/src/main/java/baritone/process/MineProcess.java @@ -118,7 +118,7 @@ public final class MineProcess extends BaritoneProcessHelper implements IMinePro .filter(pos -> pos.getX() == ctx.playerFeet().getX() && pos.getZ() == ctx.playerFeet().getZ()) .filter(pos -> pos.getY() >= ctx.playerFeet().getY()) .filter(pos -> !(BlockStateInterface.get(ctx, pos).getBlock() instanceof AirBlock)) // after breaking a block, it takes mineGoalUpdateInterval ticks for it to actually update this list =( - .min(Comparator.comparingDouble(ctx.playerFeet()::distSqr)); + .min(Comparator.comparingDouble(ctx.playerFeet().above()::distSqr)); baritone.getInputOverrideHandler().clearAllKeys(); if (shaft.isPresent() && ctx.player().isOnGround()) { BlockPos pos = shaft.get();