diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java index 5e33b39ba..5dd68ab6a 100644 --- a/src/api/java/baritone/api/Settings.java +++ b/src/api/java/baritone/api/Settings.java @@ -385,6 +385,13 @@ public final class Settings { */ public final Setting blockReachDistance = new Setting<>(4.5f); + + /** + * Delay between breaking a block and starting to break the next block. The vanilla delay is 6 ticks. + * Baritone waits an additional 2 ticks on top of this setting value. + */ + public final Setting blockBreakDelay = new Setting<>(4); + /** * How many degrees to randomize the pitch and yaw every tick. Set to 0 to disable */ diff --git a/src/main/java/baritone/utils/BlockBreakHelper.java b/src/main/java/baritone/utils/BlockBreakHelper.java index 2d209c721..f6cc58837 100644 --- a/src/main/java/baritone/utils/BlockBreakHelper.java +++ b/src/main/java/baritone/utils/BlockBreakHelper.java @@ -17,6 +17,7 @@ package baritone.utils; +import baritone.api.BaritoneAPI; import baritone.api.utils.IPlayerContext; import net.minecraft.world.InteractionHand; import net.minecraft.world.phys.BlockHitResult; @@ -30,6 +31,7 @@ public final class BlockBreakHelper { private final IPlayerContext ctx; private boolean didBreakLastTick; + private int breakDelay = 0; BlockBreakHelper(IPlayerContext ctx) { this.ctx = ctx; @@ -48,6 +50,11 @@ public void stopBreakingBlock() { } public void tick(boolean isLeftClick) { + if (breakDelay > 0) { + breakDelay--; + return; + } + HitResult trace = ctx.objectMouseOver(); boolean isBlockTrace = trace != null && trace.getType() == HitResult.Type.BLOCK; @@ -68,6 +75,7 @@ public void tick(boolean isLeftClick) { didBreakLastTick = true; } else if (didBreakLastTick) { stopBreakingBlock(); + breakDelay = BaritoneAPI.getSettings().blockBreakDelay.value; didBreakLastTick = false; } }