Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ project.build.group=net.runelite
project.build.version=1.12.12.1

glslang.path=
microbot.version=2.1.12
microbot.version=2.1.13
microbot.commit.sha=nogit
microbot.repo.url=http://138.201.81.246:8081/repository/microbot-snapshot/
microbot.repo.username=
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.microbot.Microbot;
import net.runelite.client.plugins.microbot.breakhandler.BreakHandlerPlugin;
import net.runelite.client.plugins.microbot.util.events.PluginPauseEvent;
import lombok.extern.slf4j.Slf4j;
import net.runelite.client.plugins.microbot.util.antiban.enums.Activity;
import net.runelite.client.plugins.microbot.util.antiban.enums.ActivityIntensity;
import net.runelite.client.plugins.microbot.util.antiban.enums.CombatSkills;
Expand Down Expand Up @@ -79,7 +81,7 @@
alwaysOn = true,
hidden = true
)

@Slf4j
public class AntibanPlugin extends Plugin {

private static final int COOK_TIMEOUT = 3;
Expand All @@ -100,6 +102,16 @@ public class AntibanPlugin extends Plugin {
private static final int MICRO_BREAK_DURATION_HIGH_MIN = 1;
private static final int MICRO_BREAK_DURATION_HIGH_MAX = 30;

/**
* Avoid spamming the user if they keep micro breaks on while the break handler is disabled.
*/
private boolean warnedBreakHandlerDisabled;

/**
* Remembers last micro-break state to detect transitions (start/end).
*/
private boolean lastMicroBreakActive;

@Inject
private OverlayManager overlayManager;

Expand Down Expand Up @@ -179,6 +191,8 @@ public void run() {
protected void shutDown() {
overlayManager.removeIf(overlay -> overlay instanceof AntibanOverlay);
clientToolbar.removeNavigation(navButton);

clearPauseFlags();
}

@Subscribe
Expand Down Expand Up @@ -242,18 +256,7 @@ public void onGameTick(GameTick event) {

validateAndSetBreakDurations();

if (Rs2AntibanSettings.takeMicroBreaks && !Microbot.isPluginEnabled(BreakHandlerPlugin.class)) {
if (Rs2AntibanSettings.devDebug)
Microbot.showMessage("Micro breaks depend on the BreakHandlerPlugin, enabling it now.");

Microbot.log("BreakHandlerPlugin not enabled, enabling it now.");
String name = BreakHandlerPlugin.class.getName();
Plugin breakHandlerPlugin = Microbot.getPluginManager().getPlugins().stream()
.filter(x -> x.getClass().getName().equals(name))
.findFirst()
.orElse(null);
Microbot.startPlugin(breakHandlerPlugin);
}
handleMicroBreakIntegration();

if (Rs2Antiban.isMining()) {
updateLastMiningAction();
Expand All @@ -274,6 +277,57 @@ public void onGameTick(GameTick event) {
}
}

/**
* Micro-break / BreakHandler integration logic that respects the user's manual BreakHandler toggle.
*
* Behaviour:
* - If user has micro-breaks on and BreakHandler is disabled, we warn once and do NOT auto-start.
* - When micro-breaks end, we clear pause flags so scripts resume even if BreakHandler stays disabled.
*/
private void handleMicroBreakIntegration() {
boolean microBreaksEnabled = Rs2AntibanSettings.takeMicroBreaks;

// Detect end of micro-break to clear flags even if BreakHandler stays enabled.
if (lastMicroBreakActive && !Rs2AntibanSettings.microBreakActive) {
clearPauseFlags();
}
lastMicroBreakActive = Rs2AntibanSettings.microBreakActive;

if (!microBreaksEnabled) {
// User turned off micro-breaks; ensure pause flags are released.
return;
}

// Micro-breaks enabled: ensure BreakHandler is available, but respect manual disable.
if (Microbot.isPluginEnabled(BreakHandlerPlugin.class)) {
// Already on (user or us). Nothing else to do.
return;
}

// BreakHandler is off. If user turned it off, warn once and skip auto-start.
if (warnedBreakHandlerDisabled) {
return;
}

// If a micro-break was triggered while BreakHandler is disabled, cancel it and unpause to avoid getting stuck.
if (Rs2AntibanSettings.microBreakActive) {
Rs2AntibanSettings.microBreakActive = false;
clearPauseFlags();
}

warnedBreakHandlerDisabled = true;
Microbot.showMessage("Micro breaks need BreakHandler. Enable it to use micro breaks.");
log.debug("Micro breaks requested but BreakHandler is disabled; respecting user choice.");
}

/**
* Clears global pause flags to guarantee scripts resume after micro-break.
*/
private void clearPauseFlags() {
PluginPauseEvent.setPaused(false);
Microbot.pauseAllScripts.compareAndSet(true, false);
}

@Subscribe
public void onStatChanged(StatChanged statChanged) {
if (!Rs2AntibanSettings.antibanEnabled) {
Expand Down Expand Up @@ -374,4 +428,3 @@ public static void validateAndSetBreakDurations() {
}
}
}