Merge pull request #4291 from rfresh2/block-break-delay

Block break delay setting
This commit is contained in:
leijurv
2024-03-28 16:53:13 -07:00
committed by GitHub
2 changed files with 15 additions and 0 deletions

View File

@@ -385,6 +385,12 @@ public final class Settings {
*/
public final Setting<Float> blockReachDistance = new Setting<>(4.5f);
/**
* 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<Integer> blockBreakSpeed = new Setting<>(6);
/**
* How many degrees to randomize the pitch and yaw every tick. Set to 0 to disable
*/

View File

@@ -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;
@@ -27,9 +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 breakDelayTimer = 0;
BlockBreakHelper(IPlayerContext ctx) {
this.ctx = ctx;
@@ -48,6 +52,10 @@ public final class BlockBreakHelper {
}
public void tick(boolean isLeftClick) {
if (breakDelayTimer > 0) {
breakDelayTimer--;
return;
}
HitResult trace = ctx.objectMouseOver();
boolean isBlockTrace = trace != null && trace.getType() == HitResult.Type.BLOCK;
@@ -68,6 +76,7 @@ public final class BlockBreakHelper {
didBreakLastTick = true;
} else if (didBreakLastTick) {
stopBreakingBlock();
breakDelayTimer = BaritoneAPI.getSettings().blockBreakSpeed.value - BASE_BREAK_DELAY;
didBreakLastTick = false;
}
}