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