From 413c11a23e02050eae6e7839fc9110eee78b278d Mon Sep 17 00:00:00 2001 From: rfresh2 <89827146+rfresh2@users.noreply.github.com> Date: Sat, 9 Mar 2024 13:22:15 -0800 Subject: [PATCH 1/2] block break delay setting --- src/api/java/baritone/api/Settings.java | 7 +++++++ src/main/java/baritone/utils/BlockBreakHelper.java | 8 ++++++++ 2 files changed, 15 insertions(+) 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 final class BlockBreakHelper { } 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 final class BlockBreakHelper { didBreakLastTick = true; } else if (didBreakLastTick) { stopBreakingBlock(); + breakDelay = BaritoneAPI.getSettings().blockBreakDelay.value; didBreakLastTick = false; } } From faece77e8c79680558b582a097683f0f94facd41 Mon Sep 17 00:00:00 2001 From: rfresh2 <89827146+rfresh2@users.noreply.github.com> Date: Sun, 10 Mar 2024 16:43:58 -0700 Subject: [PATCH 2/2] align setting value with actual tick delay between breaks --- src/api/java/baritone/api/Settings.java | 7 +++---- src/main/java/baritone/utils/BlockBreakHelper.java | 11 ++++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/api/java/baritone/api/Settings.java b/src/api/java/baritone/api/Settings.java index 5dd68ab6a..568fc4547 100644 --- a/src/api/java/baritone/api/Settings.java +++ b/src/api/java/baritone/api/Settings.java @@ -385,12 +385,11 @@ 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. + * How many ticks between breaking a block and starting to break the next block. Default in game is 6 ticks. + * Values under 2 will be clamped. */ - public final Setting blockBreakDelay = new Setting<>(4); + public final Setting blockBreakSpeed = new Setting<>(6); /** * 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 f6cc58837..3332aec76 100644 --- a/src/main/java/baritone/utils/BlockBreakHelper.java +++ b/src/main/java/baritone/utils/BlockBreakHelper.java @@ -28,10 +28,12 @@ import net.minecraft.world.phys.HitResult; * @since 8/25/2018 */ public final class BlockBreakHelper { + // base ticks between block breaks caused by tick logic + private static final int BASE_BREAK_DELAY = 2; private final IPlayerContext ctx; private boolean didBreakLastTick; - private int breakDelay = 0; + private int breakDelayTimer = 0; BlockBreakHelper(IPlayerContext ctx) { this.ctx = ctx; @@ -50,11 +52,10 @@ public final class BlockBreakHelper { } public void tick(boolean isLeftClick) { - if (breakDelay > 0) { - breakDelay--; + if (breakDelayTimer > 0) { + breakDelayTimer--; return; } - HitResult trace = ctx.objectMouseOver(); boolean isBlockTrace = trace != null && trace.getType() == HitResult.Type.BLOCK; @@ -75,7 +76,7 @@ public final class BlockBreakHelper { didBreakLastTick = true; } else if (didBreakLastTick) { stopBreakingBlock(); - breakDelay = BaritoneAPI.getSettings().blockBreakDelay.value; + breakDelayTimer = BaritoneAPI.getSettings().blockBreakSpeed.value - BASE_BREAK_DELAY; didBreakLastTick = false; } }