diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml
index c1f71e27e8a..19489f10b0e 100644
--- a/runelite-client/pom.xml
+++ b/runelite-client/pom.xml
@@ -41,7 +41,7 @@
nogit
false
false
- 2.0.39
+ 2.0.40
nogit
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/MicrobotConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/MicrobotConfig.java
index 9ee5000d56e..28cdf25561a 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/MicrobotConfig.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/MicrobotConfig.java
@@ -20,6 +20,32 @@ public interface MicrobotConfig extends Config
)
String generalSection = "generalSection";
+ String keyDisableLevelUpInterface = "disableLevelUpInterface";
+ @ConfigItem(
+ keyName = keyDisableLevelUpInterface,
+ name = "Disable level-up interface",
+ description = "Automatically close the level-up interface when it appears",
+ position = 0,
+ section = generalSection
+ )
+ default boolean disableLevelUpInterface()
+ {
+ return true;
+ }
+
+ String keyDisableWorldSwitcherConfirmation = "disableWorldSwitcherConfirmation";
+ @ConfigItem(
+ keyName = keyDisableWorldSwitcherConfirmation,
+ name = "Disable world switcher confirmation",
+ description = "Automatically disable the world switcher confirmation prompt",
+ position = 1,
+ section = generalSection
+ )
+ default boolean disableWorldSwitcherConfirmation()
+ {
+ return true;
+ }
+
@ConfigSection(
name = "Logging",
description = "Game chat logging configuration",
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/AntibanPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/AntibanPlugin.java
index 138dd9b8028..cf6c3f7946a 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/AntibanPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/AntibanPlugin.java
@@ -160,6 +160,7 @@ protected void startUp() throws AWTException {
.panel(panel)
.build();
Rs2AntibanSettings.reset();
+ Rs2AntibanSettings.loadFromProfile();
validateAndSetBreakDurations();
Timer timer = new Timer();
@@ -190,6 +191,8 @@ public void onChatMessage(ChatMessage event) {
@Subscribe
public void onProfileChanged(ProfileChanged event) {
Rs2Antiban.resetAntibanSettings();
+ Rs2AntibanSettings.loadFromProfile();
+ validateAndSetBreakDurations();
}
@Subscribe
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/Rs2AntibanSettings.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/Rs2AntibanSettings.java
index 65b44a45211..337c75da1d1 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/Rs2AntibanSettings.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/Rs2AntibanSettings.java
@@ -1,5 +1,11 @@
package net.runelite.client.plugins.microbot.util.antiban;
+import com.google.gson.Gson;
+import com.google.gson.JsonSyntaxException;
+import lombok.extern.slf4j.Slf4j;
+import net.runelite.client.config.ConfigManager;
+import net.runelite.client.plugins.microbot.Microbot;
+
/**
* Provides configuration settings for the anti-ban system used by various plugins within the bot framework.
*
@@ -73,7 +79,199 @@
*
*/
+@Slf4j
public class Rs2AntibanSettings {
+ private static final String CONFIG_GROUP = "MicrobotAntiban";
+ private static final String CONFIG_KEY = "settings";
+ private static final Gson GSON = new Gson();
+
+ private Rs2AntibanSettings() {
+ throw new IllegalStateException("Utility class");
+ }
+
+ private static class PersistentSettings {
+ private Boolean antibanEnabled;
+ private Boolean usePlayStyle;
+ private Boolean randomIntervals;
+ private Boolean simulateFatigue;
+ private Boolean simulateAttentionSpan;
+ private Boolean behavioralVariability;
+ private Boolean nonLinearIntervals;
+ private Boolean profileSwitching;
+ private Boolean timeOfDayAdjust;
+ private Boolean simulateMistakes;
+ private Boolean naturalMouse;
+ private Boolean moveMouseOffScreen;
+ private Boolean moveMouseRandomly;
+ private Boolean contextualVariability;
+ private Boolean dynamicIntensity;
+ private Boolean dynamicActivity;
+ private Boolean devDebug;
+ private Boolean overwriteScriptSettings;
+ private Boolean takeMicroBreaks;
+ private Boolean playSchedule;
+ private Boolean universalAntiban;
+ private Integer microBreakDurationLow;
+ private Integer microBreakDurationHigh;
+ private Double actionCooldownChance;
+ private Double microBreakChance;
+ private Double moveMouseRandomlyChance;
+ private Double moveMouseOffScreenChance;
+ }
+
+ public static void saveToProfile() {
+ ConfigManager configManager = Microbot.getConfigManager();
+ if (configManager == null) {
+ log.debug("ConfigManager not available, skipping antiban settings save");
+ return;
+ }
+
+ PersistentSettings settings = snapshot();
+ try {
+ configManager.setConfiguration(CONFIG_GROUP, CONFIG_KEY, GSON.toJson(settings));
+ } catch (Exception ex) {
+ log.warn("Unable to save antiban settings to profile", ex);
+ }
+ }
+
+ public static void loadFromProfile() {
+ ConfigManager configManager = Microbot.getConfigManager();
+ if (configManager == null) {
+ log.debug("ConfigManager not available, skipping antiban settings load");
+ return;
+ }
+
+ String json = configManager.getConfiguration(CONFIG_GROUP, CONFIG_KEY);
+ if (json == null || json.isEmpty()) {
+ return;
+ }
+
+ try {
+ PersistentSettings settings = GSON.fromJson(json, PersistentSettings.class);
+ if (settings != null) {
+ apply(settings);
+ }
+ } catch (JsonSyntaxException ex) {
+ log.warn("Unable to parse antiban settings from profile", ex);
+ }
+ }
+
+ private static PersistentSettings snapshot() {
+ PersistentSettings settings = new PersistentSettings();
+ settings.antibanEnabled = antibanEnabled;
+ settings.usePlayStyle = usePlayStyle;
+ settings.randomIntervals = randomIntervals;
+ settings.simulateFatigue = simulateFatigue;
+ settings.simulateAttentionSpan = simulateAttentionSpan;
+ settings.behavioralVariability = behavioralVariability;
+ settings.nonLinearIntervals = nonLinearIntervals;
+ settings.profileSwitching = profileSwitching;
+ settings.timeOfDayAdjust = timeOfDayAdjust;
+ settings.simulateMistakes = simulateMistakes;
+ settings.naturalMouse = naturalMouse;
+ settings.moveMouseOffScreen = moveMouseOffScreen;
+ settings.moveMouseRandomly = moveMouseRandomly;
+ settings.contextualVariability = contextualVariability;
+ settings.dynamicIntensity = dynamicIntensity;
+ settings.dynamicActivity = dynamicActivity;
+ settings.devDebug = devDebug;
+ settings.overwriteScriptSettings = overwriteScriptSettings;
+ settings.takeMicroBreaks = takeMicroBreaks;
+ settings.playSchedule = playSchedule;
+ settings.universalAntiban = universalAntiban;
+ settings.microBreakDurationLow = microBreakDurationLow;
+ settings.microBreakDurationHigh = microBreakDurationHigh;
+ settings.actionCooldownChance = actionCooldownChance;
+ settings.microBreakChance = microBreakChance;
+ settings.moveMouseRandomlyChance = moveMouseRandomlyChance;
+ settings.moveMouseOffScreenChance = moveMouseOffScreenChance;
+ return settings;
+ }
+
+ private static void apply(PersistentSettings settings) {
+ if (settings.antibanEnabled != null) {
+ antibanEnabled = settings.antibanEnabled;
+ }
+ if (settings.usePlayStyle != null) {
+ usePlayStyle = settings.usePlayStyle;
+ }
+ if (settings.randomIntervals != null) {
+ randomIntervals = settings.randomIntervals;
+ }
+ if (settings.simulateFatigue != null) {
+ simulateFatigue = settings.simulateFatigue;
+ }
+ if (settings.simulateAttentionSpan != null) {
+ simulateAttentionSpan = settings.simulateAttentionSpan;
+ }
+ if (settings.behavioralVariability != null) {
+ behavioralVariability = settings.behavioralVariability;
+ }
+ if (settings.nonLinearIntervals != null) {
+ nonLinearIntervals = settings.nonLinearIntervals;
+ }
+ if (settings.profileSwitching != null) {
+ profileSwitching = settings.profileSwitching;
+ }
+ if (settings.timeOfDayAdjust != null) {
+ timeOfDayAdjust = settings.timeOfDayAdjust;
+ }
+ if (settings.simulateMistakes != null) {
+ simulateMistakes = settings.simulateMistakes;
+ }
+ if (settings.naturalMouse != null) {
+ naturalMouse = settings.naturalMouse;
+ }
+ if (settings.moveMouseOffScreen != null) {
+ moveMouseOffScreen = settings.moveMouseOffScreen;
+ }
+ if (settings.moveMouseRandomly != null) {
+ moveMouseRandomly = settings.moveMouseRandomly;
+ }
+ if (settings.contextualVariability != null) {
+ contextualVariability = settings.contextualVariability;
+ }
+ if (settings.dynamicIntensity != null) {
+ dynamicIntensity = settings.dynamicIntensity;
+ }
+ if (settings.dynamicActivity != null) {
+ dynamicActivity = settings.dynamicActivity;
+ }
+ if (settings.devDebug != null) {
+ devDebug = settings.devDebug;
+ }
+ if (settings.overwriteScriptSettings != null) {
+ overwriteScriptSettings = settings.overwriteScriptSettings;
+ }
+ if (settings.takeMicroBreaks != null) {
+ takeMicroBreaks = settings.takeMicroBreaks;
+ }
+ if (settings.playSchedule != null) {
+ playSchedule = settings.playSchedule;
+ }
+ if (settings.universalAntiban != null) {
+ universalAntiban = settings.universalAntiban;
+ }
+ if (settings.microBreakDurationLow != null) {
+ microBreakDurationLow = settings.microBreakDurationLow;
+ }
+ if (settings.microBreakDurationHigh != null) {
+ microBreakDurationHigh = settings.microBreakDurationHigh;
+ }
+ if (settings.actionCooldownChance != null) {
+ actionCooldownChance = settings.actionCooldownChance;
+ }
+ if (settings.microBreakChance != null) {
+ microBreakChance = settings.microBreakChance;
+ }
+ if (settings.moveMouseRandomlyChance != null) {
+ moveMouseRandomlyChance = settings.moveMouseRandomlyChance;
+ }
+ if (settings.moveMouseOffScreenChance != null) {
+ moveMouseOffScreenChance = settings.moveMouseOffScreenChance;
+ }
+ }
+
public static boolean actionCooldownActive = false;
public static boolean microBreakActive = false;
public static boolean antibanEnabled = true;
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/ActivityPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/ActivityPanel.java
index ed80bdaa404..97c398828dd 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/ActivityPanel.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/ActivityPanel.java
@@ -49,14 +49,38 @@ public ActivityPanel() {
}
private void setupActionListeners() {
- usePlayStyle.addActionListener(e -> Rs2AntibanSettings.usePlayStyle = usePlayStyle.isSelected());
- useRandomIntervals.addActionListener(e -> Rs2AntibanSettings.randomIntervals = useRandomIntervals.isSelected());
- simulateFatigue.addActionListener(e -> Rs2AntibanSettings.simulateFatigue = simulateFatigue.isSelected());
- simulateAttentionSpan.addActionListener(e -> Rs2AntibanSettings.simulateAttentionSpan = simulateAttentionSpan.isSelected());
- useBehavioralVariability.addActionListener(e -> Rs2AntibanSettings.behavioralVariability = useBehavioralVariability.isSelected());
- useNonLinearIntervals.addActionListener(e -> Rs2AntibanSettings.nonLinearIntervals = useNonLinearIntervals.isSelected());
- dynamicActivityIntensity.addActionListener(e -> Rs2AntibanSettings.dynamicIntensity = dynamicActivityIntensity.isSelected());
- dynamicActivity.addActionListener(e -> Rs2AntibanSettings.dynamicActivity = dynamicActivity.isSelected());
+ usePlayStyle.addActionListener(e -> {
+ Rs2AntibanSettings.usePlayStyle = usePlayStyle.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
+ useRandomIntervals.addActionListener(e -> {
+ Rs2AntibanSettings.randomIntervals = useRandomIntervals.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
+ simulateFatigue.addActionListener(e -> {
+ Rs2AntibanSettings.simulateFatigue = simulateFatigue.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
+ simulateAttentionSpan.addActionListener(e -> {
+ Rs2AntibanSettings.simulateAttentionSpan = simulateAttentionSpan.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
+ useBehavioralVariability.addActionListener(e -> {
+ Rs2AntibanSettings.behavioralVariability = useBehavioralVariability.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
+ useNonLinearIntervals.addActionListener(e -> {
+ Rs2AntibanSettings.nonLinearIntervals = useNonLinearIntervals.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
+ dynamicActivityIntensity.addActionListener(e -> {
+ Rs2AntibanSettings.dynamicIntensity = dynamicActivityIntensity.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
+ dynamicActivity.addActionListener(e -> {
+ Rs2AntibanSettings.dynamicActivity = dynamicActivity.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/CooldownPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/CooldownPanel.java
index 2eb01a5176a..44b78ed8b52 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/CooldownPanel.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/CooldownPanel.java
@@ -61,6 +61,9 @@ private void setupActionListeners() {
actionCooldownChance.addChangeListener(e -> {
Rs2AntibanSettings.actionCooldownChance = actionCooldownChance.getValue() / 100.0;
actionCooldownChanceLabel.setText("Action Cooldown Chance (%): " + actionCooldownChance.getValue());
+ if (!actionCooldownChance.getValueIsAdjusting()) {
+ Rs2AntibanSettings.saveToProfile();
+ }
});
timeout.addChangeListener(e -> {
Rs2Antiban.setTIMEOUT(timeout.getValue());
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/GeneralPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/GeneralPanel.java
index 5249922e71b..867b03b6c61 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/GeneralPanel.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/GeneralPanel.java
@@ -57,12 +57,30 @@ public GeneralPanel() {
}
private void setupActionListeners() {
- isEnabled.addActionListener(e -> Rs2AntibanSettings.antibanEnabled = isEnabled.isSelected());
- universalAntiban.addActionListener(e -> Rs2AntibanSettings.universalAntiban = universalAntiban.isSelected());
- useContextualVariability.addActionListener(e -> Rs2AntibanSettings.contextualVariability = useContextualVariability.isSelected());
- devDebug.addActionListener(e -> Rs2AntibanSettings.devDebug = devDebug.isSelected());
- overwriteScriptSetting.addActionListener(e -> Rs2AntibanSettings.overwriteScriptSettings = overwriteScriptSetting.isSelected());
- universalAntibanSettings.addActionListener(e -> Rs2Antiban.antibanSetupTemplates.applyUniversalAntibanSetup());
+ isEnabled.addActionListener(e -> {
+ Rs2AntibanSettings.antibanEnabled = isEnabled.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
+ universalAntiban.addActionListener(e -> {
+ Rs2AntibanSettings.universalAntiban = universalAntiban.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
+ useContextualVariability.addActionListener(e -> {
+ Rs2AntibanSettings.contextualVariability = useContextualVariability.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
+ devDebug.addActionListener(e -> {
+ Rs2AntibanSettings.devDebug = devDebug.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
+ overwriteScriptSetting.addActionListener(e -> {
+ Rs2AntibanSettings.overwriteScriptSettings = overwriteScriptSetting.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
+ universalAntibanSettings.addActionListener(e -> {
+ Rs2Antiban.antibanSetupTemplates.applyUniversalAntibanSetup();
+ Rs2AntibanSettings.saveToProfile();
+ });
}
public void updateValues() {
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/MasterPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/MasterPanel.java
index 5dc65a0e363..3cb494fb473 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/MasterPanel.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/MasterPanel.java
@@ -3,6 +3,7 @@
import net.runelite.client.plugins.microbot.Microbot;
import net.runelite.client.plugins.microbot.util.antiban.AntibanPlugin;
import net.runelite.client.plugins.microbot.util.antiban.Rs2Antiban;
+import net.runelite.client.plugins.microbot.util.antiban.Rs2AntibanSettings;
import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.PluginPanel;
import net.runelite.client.util.ImageUtil;
@@ -180,6 +181,7 @@ private JPanel createHeaderPanel(NavigationPanel navigationPanel) {
public void setupResetButton() {
resetButton.addActionListener(e -> {
Rs2Antiban.resetAntibanSettings(true);
+ Rs2AntibanSettings.saveToProfile();
loadSettings();
});
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/MicroBreakPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/MicroBreakPanel.java
index d3cb2b4ba5c..6713759d17a 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/MicroBreakPanel.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/MicroBreakPanel.java
@@ -75,18 +75,30 @@ public MicroBreakPanel() {
private void setupActionListeners() {
isMicroBreakActive.addActionListener(e -> Rs2AntibanSettings.microBreakActive = isMicroBreakActive.isSelected());
- takeMicroBreaks.addActionListener(e -> Rs2AntibanSettings.takeMicroBreaks = takeMicroBreaks.isSelected());
+ takeMicroBreaks.addActionListener(e -> {
+ Rs2AntibanSettings.takeMicroBreaks = takeMicroBreaks.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
microBreakDurationLow.addChangeListener(e -> {
Rs2AntibanSettings.microBreakDurationLow = microBreakDurationLow.getValue();
microBreakDurationLowLabel.setText("Micro Break Duration Low (min): " + microBreakDurationLow.getValue());
+ if (!microBreakDurationLow.getValueIsAdjusting()) {
+ Rs2AntibanSettings.saveToProfile();
+ }
});
microBreakDurationHigh.addChangeListener(e -> {
Rs2AntibanSettings.microBreakDurationHigh = microBreakDurationHigh.getValue();
microBreakDurationHighLabel.setText("Micro Break Duration High (min): " + microBreakDurationHigh.getValue());
+ if (!microBreakDurationHigh.getValueIsAdjusting()) {
+ Rs2AntibanSettings.saveToProfile();
+ }
});
microBreakChance.addChangeListener(e -> {
Rs2AntibanSettings.microBreakChance = microBreakChance.getValue() / 100.0;
microBreakChanceLabel.setText("Micro Break Chance (%): " + microBreakChance.getValue());
+ if (!microBreakChance.getValueIsAdjusting()) {
+ Rs2AntibanSettings.saveToProfile();
+ }
});
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/MousePanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/MousePanel.java
index f3fce2f90d3..b465314ae07 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/MousePanel.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/MousePanel.java
@@ -89,17 +89,35 @@ public MousePanel()
private void setupActionListeners()
{
- useNaturalMouse.addActionListener(e -> Rs2AntibanSettings.naturalMouse = useNaturalMouse.isSelected());
- simulateMistakes.addActionListener(e -> Rs2AntibanSettings.simulateMistakes = simulateMistakes.isSelected());
- moveMouseOffScreen.addActionListener(e -> Rs2AntibanSettings.moveMouseOffScreen = moveMouseOffScreen.isSelected());
+ useNaturalMouse.addActionListener(e -> {
+ Rs2AntibanSettings.naturalMouse = useNaturalMouse.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
+ simulateMistakes.addActionListener(e -> {
+ Rs2AntibanSettings.simulateMistakes = simulateMistakes.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
+ moveMouseOffScreen.addActionListener(e -> {
+ Rs2AntibanSettings.moveMouseOffScreen = moveMouseOffScreen.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
moveMouseOffScreenChance.addChangeListener(e -> {
Rs2AntibanSettings.moveMouseOffScreenChance = moveMouseOffScreenChance.getValue() / 100.0;
moveMouseOffScreenChanceLabel.setText("Move Mouse Off Screen (%): " + moveMouseOffScreenChance.getValue());
+ if (!moveMouseOffScreenChance.getValueIsAdjusting()) {
+ Rs2AntibanSettings.saveToProfile();
+ }
+ });
+ moveMouseRandomly.addActionListener(e -> {
+ Rs2AntibanSettings.moveMouseRandomly = moveMouseRandomly.isSelected();
+ Rs2AntibanSettings.saveToProfile();
});
- moveMouseRandomly.addActionListener(e -> Rs2AntibanSettings.moveMouseRandomly = moveMouseRandomly.isSelected());
moveMouseRandomlyChance.addChangeListener(e -> {
Rs2AntibanSettings.moveMouseRandomlyChance = moveMouseRandomlyChance.getValue() / 100.0;
moveMouseRandomlyChanceLabel.setText("Random Mouse Movement (%): " + moveMouseRandomlyChance.getValue());
+ if (!moveMouseRandomlyChance.getValueIsAdjusting()) {
+ Rs2AntibanSettings.saveToProfile();
+ }
});
// 3) When mouseSpeedSlider changes, update the ActivityIntensity
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/ProfilePanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/ProfilePanel.java
index 448f3599bbf..20981c2992a 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/ProfilePanel.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/antiban/ui/ProfilePanel.java
@@ -41,9 +41,18 @@ public ProfilePanel() {
}
private void setupActionListeners() {
- enableProfileSwitching.addActionListener(e -> Rs2AntibanSettings.profileSwitching = enableProfileSwitching.isSelected());
- adjustForTimeOfDay.addActionListener(e -> Rs2AntibanSettings.timeOfDayAdjust = adjustForTimeOfDay.isSelected());
- simulatePlaySchedule.addActionListener(e -> Rs2AntibanSettings.playSchedule = simulatePlaySchedule.isSelected());
+ enableProfileSwitching.addActionListener(e -> {
+ Rs2AntibanSettings.profileSwitching = enableProfileSwitching.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
+ adjustForTimeOfDay.addActionListener(e -> {
+ Rs2AntibanSettings.timeOfDayAdjust = adjustForTimeOfDay.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
+ simulatePlaySchedule.addActionListener(e -> {
+ Rs2AntibanSettings.playSchedule = simulatePlaySchedule.isSelected();
+ Rs2AntibanSettings.saveToProfile();
+ });
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/events/DisableLevelUpInterfaceEvent.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/events/DisableLevelUpInterfaceEvent.java
index e27f11ed41b..d1d54a9724b 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/events/DisableLevelUpInterfaceEvent.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/events/DisableLevelUpInterfaceEvent.java
@@ -1,28 +1,50 @@
package net.runelite.client.plugins.microbot.util.events;
+import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.microbot.BlockingEvent;
import net.runelite.client.plugins.microbot.BlockingEventPriority;
import net.runelite.client.plugins.microbot.Microbot;
+import net.runelite.client.plugins.microbot.MicrobotConfig;
import net.runelite.client.plugins.microbot.util.settings.Rs2Settings;
public class DisableLevelUpInterfaceEvent implements BlockingEvent {
+ @Override
+ public boolean validate()
+ {
+ return isConfigEnabled() && Microbot.isLoggedIn() && Rs2Settings.isLevelUpNotificationsEnabled();
+ }
- @Override
- public boolean validate() {
- return Microbot.isLoggedIn() && Rs2Settings.isLevelUpNotificationsEnabled();
- }
+ @Override
+ public boolean execute()
+ {
+ if (!isConfigEnabled())
+ {
+ return true;
+ }
- @Override
- public boolean execute() {
- var result = Rs2Settings.disableLevelUpNotifications();
- if (result) {
- return true;
- }
- return !validate();
- }
+ var result = Rs2Settings.disableLevelUpNotifications();
+ if (result)
+ {
+ return true;
+ }
+ return !validate();
+ }
- @Override
- public BlockingEventPriority priority() {
- return BlockingEventPriority.HIGH;
- }
+ private boolean isConfigEnabled()
+ {
+ ConfigManager configManager = Microbot.getConfigManager();
+ if (configManager == null)
+ {
+ return true;
+ }
+
+ MicrobotConfig config = configManager.getConfig(MicrobotConfig.class);
+ return config == null || config.disableLevelUpInterface();
+ }
+
+ @Override
+ public BlockingEventPriority priority()
+ {
+ return BlockingEventPriority.HIGH;
+ }
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/events/DisableWorldSwitcherConfirmationEvent.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/events/DisableWorldSwitcherConfirmationEvent.java
index 5907b8befa5..91fcdb8b72f 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/events/DisableWorldSwitcherConfirmationEvent.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/events/DisableWorldSwitcherConfirmationEvent.java
@@ -1,8 +1,10 @@
package net.runelite.client.plugins.microbot.util.events;
+import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.microbot.BlockingEvent;
import net.runelite.client.plugins.microbot.BlockingEventPriority;
import net.runelite.client.plugins.microbot.Microbot;
+import net.runelite.client.plugins.microbot.MicrobotConfig;
import net.runelite.client.plugins.microbot.util.settings.Rs2Settings;
public class DisableWorldSwitcherConfirmationEvent implements BlockingEvent
@@ -10,15 +12,31 @@ public class DisableWorldSwitcherConfirmationEvent implements BlockingEvent
@Override
public boolean validate()
{
- return Microbot.isLoggedIn() && Rs2Settings.isWorldSwitcherConfirmationEnabled();
+ return isConfigEnabled() && Microbot.isLoggedIn() && Rs2Settings.isWorldSwitcherConfirmationEnabled();
}
@Override
public boolean execute()
{
+ if (!isConfigEnabled())
+ {
+ return true;
+ }
return Rs2Settings.disableWorldSwitcherConfirmation();
}
+ private boolean isConfigEnabled()
+ {
+ ConfigManager configManager = Microbot.getConfigManager();
+ if (configManager == null)
+ {
+ return true;
+ }
+
+ MicrobotConfig config = configManager.getConfig(MicrobotConfig.class);
+ return config == null || config.disableWorldSwitcherConfirmation();
+ }
+
@Override
public BlockingEventPriority priority()
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/prayer/Rs2Prayer.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/prayer/Rs2Prayer.java
index f12ac73c16a..5d560ff4414 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/prayer/Rs2Prayer.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/prayer/Rs2Prayer.java
@@ -93,7 +93,8 @@ private static void invokePrayer(Rs2PrayerEnum prayer, boolean withMouse) {
Rectangle prayerBounds = withMouse ? getPrayerBounds(prayer) : Rs2UiHelper.getDefaultRectangle();
- Microbot.doInvoke(menuEntry, prayerBounds);
+ Microbot.doInvoke(menuEntry, prayerBounds);
+ // Microbot.getClient().menuAction(-1, prayer.getIndex(), MenuAction.CC_OP, 1, -1, "Activate", "Activate");
}
/**
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/settings/Rs2Settings.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/settings/Rs2Settings.java
index 7c7800c7a14..534c34662a5 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/settings/Rs2Settings.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/settings/Rs2Settings.java
@@ -81,7 +81,7 @@ public static boolean enableDropShiftSetting(boolean closeInterface)
return false;
}
- // MenuEntryImpl(getOption=Toggle, getTarget=, getIdentifier=1, getType=CC_OP, getParam0=8, getParam1=8781843, getItemId=-1, isForceLeftClick=false, getWorldViewId=-1, isDeprioritized=false)
+ // MenuEntryImpl(getOption=Toggle, getTarget=, getIdentifier=1, getType=CC_OP, getParam0=8, getParam1=8781844, getItemId=-1, isForceLeftClick=false, getWorldViewId=-1, isDeprioritized=false)
NewMenuEntry menuEntry = new NewMenuEntry("Toggle", "", 1, MenuAction.CC_OP, 8, widget.getId(), false);
Microbot.doInvoke(menuEntry, Rs2UiHelper.getDefaultRectangle());
boolean success = sleepUntil(Rs2Settings::isDropShiftSettingEnabled);
@@ -244,8 +244,8 @@ public static boolean disableWorldSwitcherConfirmation(boolean closeInterface) {
Widget widget = Rs2Widget.getWidget(SETTINGS_CLICKABLE);
if (widget == null) return false;
- // MenuEntryImpl(getOption=Toggle, getTarget=, getIdentifier=1, getType=CC_OP, getParam0=34, getParam1=8781844, getItemId=-1, isForceLeftClick=false, getWorldViewId=-1, isDeprioritized=false)
- NewMenuEntry menuEntry = new NewMenuEntry("Toggle", "", 1, MenuAction.CC_OP, 34, widget.getId(), false);
+ // MenuEntryImpl(getOption=Toggle, getTarget=, getIdentifier=1, getType=CC_OP, getParam0=35, getParam1=8781844, getItemId=-1, isForceLeftClick=false, getWorldViewId=-1, isDeprioritized=false)
+ NewMenuEntry menuEntry = new NewMenuEntry("Toggle", "", 1, MenuAction.CC_OP, 35, widget.getId(), false);
Microbot.doInvoke(menuEntry, Rs2UiHelper.getDefaultRectangle());
boolean success = sleepUntil(() -> !isWorldSwitcherConfirmationEnabled());
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/skills/fletching/Rs2Fletching.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/skills/fletching/Rs2Fletching.java
index 67d4ee37c70..0a1129b9c31 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/skills/fletching/Rs2Fletching.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/skills/fletching/Rs2Fletching.java
@@ -416,7 +416,7 @@ public static boolean makeDartsFast(int dartTipId) {
* drop fletched items by name
*/
public static void dropFletchedItems(String itemName) {
- Rs2Inventory.dropAll(rsitem -> rsitem.getName().contains(itemName), InteractOrder.ZIGZAG);
+ Rs2Inventory.dropAll(rsitem -> rsitem.getName().toLowerCase().contains(itemName.toLowerCase()), InteractOrder.ZIGZAG);
log.info("dropped fletched items: {}", itemName);
}
diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/microbot/shortestpath/teleportation_items.tsv b/runelite-client/src/main/resources/net/runelite/client/plugins/microbot/shortestpath/teleportation_items.tsv
index 726a0e9eef5..6ef95f0acc7 100644
--- a/runelite-client/src/main/resources/net/runelite/client/plugins/microbot/shortestpath/teleportation_items.tsv
+++ b/runelite-client/src/main/resources/net/runelite/client/plugins/microbot/shortestpath/teleportation_items.tsv
@@ -57,7 +57,7 @@
3049 9763 0 11105;11107;11109;11111;11968;11970 Y T 29 4 Skills necklace: Mining Guild
2933 3295 0 11105;11107;11109;11111;11968;11970 Y T 29 4 Skills necklace: Crafting Guild
3144 3438 0 11105;11107;11109;11111;11968;11970 Y T 29 4 Skills necklace: Cooking Guild
-1662 3505 0 11105;11107;11109;11111;11968;11970 Y T 29 4 Skills necklace: Woodcutting Guild
+1662 3505 0 11105;11107;11109;11111;11968;11970 4897=1 Y T 29 4 Skills necklace: Woodcutting Guild
1248 3725 0 45 Farming 11105;11107;11109;11111;11968;11970 Y T 29 4 Skills necklace: Farming Guild
1248 3719 0 11105;11107;11109;11111;11968;11970 Y T 29 4 Skills necklace: Farming Guild