From 8da3f862ec36c1059c6572299ad453b540660a12 Mon Sep 17 00:00:00 2001 From: runsonmypc <45095641+runsonmypc@users.noreply.github.com> Date: Fri, 29 Aug 2025 17:49:49 -0400 Subject: [PATCH 1/9] feat(sandminer): drop empty waterskins when humidify disabled (#1440) * feat(sandminer): drop empty waterskins when humidify is disabled * refactor(sandminer): drop empty waterskins only when idle and drop all --------- Co-authored-by: Pert --- .../gabplugs/sandminer/GabulhasSandMinerScript.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/gabplugs/sandminer/GabulhasSandMinerScript.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/gabplugs/sandminer/GabulhasSandMinerScript.java index 48eb030a10b..2fde9ed3f09 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/gabplugs/sandminer/GabulhasSandMinerScript.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/gabplugs/sandminer/GabulhasSandMinerScript.java @@ -83,6 +83,11 @@ private void miningLoop(GabulhasSandMinerConfig config) { sleep(100, 4000); } while (!Rs2Inventory.isFull() && super.isRunning()) { + // Drop empty waterskins if not using humidify (only when idle) + if (!config.useHumidify() && !Rs2Player.isAnimating()) { + dropEmptyWaterskins(); + } + while (Rs2Player.hopIfPlayerDetected(1, 3000, 100) && super.isRunning()) { sleepUntil(() -> Microbot.getClient().getGameState() == GameState.HOPPING); sleepUntil(() -> Microbot.getClient().getGameState() == GameState.LOGGED_IN); @@ -131,6 +136,12 @@ private void humidifyIfNeeded() { } } + private void dropEmptyWaterskins() { + while (Rs2Inventory.hasItem(ItemID.WATER_SKIN0)) { + Rs2Inventory.drop(ItemID.WATER_SKIN0); + } + } + private void deposit(GabulhasSandMinerConfig config) { if (!config.turboMode()) Rs2Walker.walkTo(grinder); GameObject sandstoneRock = Rs2GameObject.findObject(26199, grinder); From f66fc282a3994b93ea9a07a67286e5850633e0da Mon Sep 17 00:00:00 2001 From: g-mason0 <19415334+g-mason0@users.noreply.github.com> Date: Fri, 29 Aug 2025 17:53:42 -0400 Subject: [PATCH 2/9] Revert "feat(sandminer): drop empty waterskins when humidify disabled (#1440)" This reverts commit 8da3f862ec36c1059c6572299ad453b540660a12. --- .../gabplugs/sandminer/GabulhasSandMinerScript.java | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/gabplugs/sandminer/GabulhasSandMinerScript.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/gabplugs/sandminer/GabulhasSandMinerScript.java index 2fde9ed3f09..48eb030a10b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/gabplugs/sandminer/GabulhasSandMinerScript.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/gabplugs/sandminer/GabulhasSandMinerScript.java @@ -83,11 +83,6 @@ private void miningLoop(GabulhasSandMinerConfig config) { sleep(100, 4000); } while (!Rs2Inventory.isFull() && super.isRunning()) { - // Drop empty waterskins if not using humidify (only when idle) - if (!config.useHumidify() && !Rs2Player.isAnimating()) { - dropEmptyWaterskins(); - } - while (Rs2Player.hopIfPlayerDetected(1, 3000, 100) && super.isRunning()) { sleepUntil(() -> Microbot.getClient().getGameState() == GameState.HOPPING); sleepUntil(() -> Microbot.getClient().getGameState() == GameState.LOGGED_IN); @@ -136,12 +131,6 @@ private void humidifyIfNeeded() { } } - private void dropEmptyWaterskins() { - while (Rs2Inventory.hasItem(ItemID.WATER_SKIN0)) { - Rs2Inventory.drop(ItemID.WATER_SKIN0); - } - } - private void deposit(GabulhasSandMinerConfig config) { if (!config.turboMode()) Rs2Walker.walkTo(grinder); GameObject sandstoneRock = Rs2GameObject.findObject(26199, grinder); From 5ffb8e14d2df996db5e70c263f67660c6f178547 Mon Sep 17 00:00:00 2001 From: v3tcn Date: Sat, 30 Aug 2025 16:04:23 +0100 Subject: [PATCH 3/9] AutoLoginConfig.java config changes for world selection config changes --- .../accountselector/AutoLoginConfig.java | 55 +++++++++++++++++-- 1 file changed, 50 insertions(+), 5 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginConfig.java index 39be1fa0b63..2c09eee9778 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginConfig.java @@ -27,18 +27,63 @@ public interface AutoLoginConfig extends Config { @ConfigItem( keyName = "Is Member", name = "Is Member", - description = "use Member worlds", - position = 0, + description = "Use member worlds", + position = 1, section = generalSection ) default boolean isMember() { return false; } @ConfigItem( keyName = "RandomWorld", - name = "RandomWorld", - description = "use random worlds", - position = 0, + name = "Use Random World", + description = "Use random worlds", + position = 2, section = generalSection ) default boolean useRandomWorld() { return true; } + + @ConfigSection( + name = "Region Filter", + description = "Filter random world selection by region", + position = 10, + closedByDefault = false + ) + String regionSection = "region"; + + + @ConfigItem( + keyName = "AllowUK", + name = "UK", + description = "Allow UK worlds", + position = 1, + section = regionSection + ) + default boolean allowUK() { return true; } + + @ConfigItem( + keyName = "AllowUS", + name = "US", + description = "Allow US worlds", + position = 2, + section = regionSection + ) + default boolean allowUS() { return true; } + + @ConfigItem( + keyName = "AllowGermany", + name = "Germany", + description = "Allow German worlds", + position = 3, + section = regionSection + ) + default boolean allowGermany() { return true; } + + @ConfigItem( + keyName = "AllowAustralia", + name = "Australia", + description = "Allow Australian worlds", + position = 4, + section = regionSection + ) + default boolean allowAustralia() { return true; } } From f37121cf1c8444e36beb4fd1289ae68c4d7bab41 Mon Sep 17 00:00:00 2001 From: v3tcn Date: Sat, 30 Aug 2025 16:05:50 +0100 Subject: [PATCH 4/9] script updated to select world hop configs script updated to select world hop configs --- .../accountselector/AutoLoginScript.java | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java index f9bf10613db..b2c467f810f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java @@ -4,11 +4,49 @@ import net.runelite.client.plugins.microbot.Microbot; import net.runelite.client.plugins.microbot.Script; import net.runelite.client.plugins.microbot.util.security.Login; +import net.runelite.http.api.worlds.WorldRegion; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; import java.util.concurrent.TimeUnit; public class AutoLoginScript extends Script { + private List getAllowedRegions(AutoLoginConfig config) { + List allowedRegions = new ArrayList<>(); + + if (config.allowUK()) { + allowedRegions.add(WorldRegion.UNITED_KINGDOM); + } + if (config.allowUS()) { + allowedRegions.add(WorldRegion.UNITED_STATES_OF_AMERICA); + } + if (config.allowGermany()) { + allowedRegions.add(WorldRegion.GERMANY); + } + if (config.allowAustralia()) { + allowedRegions.add(WorldRegion.AUSTRALIA); + } + + return allowedRegions; + } + + private int getRandomWorldWithRegionFilter(AutoLoginConfig config) { + List allowedRegions = getAllowedRegions(config); + + if (allowedRegions.isEmpty()) { + // If no regions allowed, use default method + return Login.getRandomWorld(config.isMember()); + } + + // Pick a random region from allowed regions + Random random = new Random(); + WorldRegion selectedRegion = allowedRegions.get(random.nextInt(allowedRegions.size())); + + return Login.getRandomWorld(config.isMember(), selectedRegion); + } + public boolean run(AutoLoginConfig autoLoginConfig) { mainScheduledFuture = scheduledExecutorService.scheduleWithFixedDelay(() -> { try { @@ -16,7 +54,7 @@ public boolean run(AutoLoginConfig autoLoginConfig) { if (Microbot.getClient().getGameState() == GameState.LOGIN_SCREEN) { if (autoLoginConfig.useRandomWorld()) { - new Login(Login.getRandomWorld(autoLoginConfig.isMember())); + new Login(getRandomWorldWithRegionFilter(autoLoginConfig)); } else { new Login(autoLoginConfig.world()); } From c515a2eb63548e48b737054a2bee917b41d9860e Mon Sep 17 00:00:00 2001 From: v3tcn Date: Sat, 30 Aug 2025 16:53:48 +0100 Subject: [PATCH 5/9] Update runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java Co-authored-by: Igor <74077743+Bolado@users.noreply.github.com> --- .../client/plugins/microbot/accountselector/AutoLoginScript.java | 1 + 1 file changed, 1 insertion(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java index b2c467f810f..190baa53889 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java @@ -56,6 +56,7 @@ public boolean run(AutoLoginConfig autoLoginConfig) { if (autoLoginConfig.useRandomWorld()) { new Login(getRandomWorldWithRegionFilter(autoLoginConfig)); } else { + Microbot.log(Level.INFO, String.format("Auto-logging into world: %d", autoLoginConfig.world())); new Login(autoLoginConfig.world()); } sleep(5000); From ccbfe8fe34fca6e12054d4b2acf8e68f19b168aa Mon Sep 17 00:00:00 2001 From: v3tcn Date: Sat, 30 Aug 2025 16:54:01 +0100 Subject: [PATCH 6/9] Update runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java Co-authored-by: Igor <74077743+Bolado@users.noreply.github.com> --- .../client/plugins/microbot/accountselector/AutoLoginScript.java | 1 + 1 file changed, 1 insertion(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java index 190baa53889..7ea26704665 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java @@ -51,6 +51,7 @@ public boolean run(AutoLoginConfig autoLoginConfig) { mainScheduledFuture = scheduledExecutorService.scheduleWithFixedDelay(() -> { try { if (!super.run()) return; + if (BreakHandlerScript.isBreakActive() || BreakHandlerScript.isMicroBreakActive()) return; if (Microbot.getClient().getGameState() == GameState.LOGIN_SCREEN) { if (autoLoginConfig.useRandomWorld()) { From e5fcccf4bf2d718c70eecd926410acc25afe020f Mon Sep 17 00:00:00 2001 From: v3tcn Date: Sat, 30 Aug 2025 16:54:07 +0100 Subject: [PATCH 7/9] Update runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java Co-authored-by: Igor <74077743+Bolado@users.noreply.github.com> --- .../plugins/microbot/accountselector/AutoLoginScript.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java index 7ea26704665..41fa4e03c99 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java @@ -55,7 +55,9 @@ public boolean run(AutoLoginConfig autoLoginConfig) { if (Microbot.getClient().getGameState() == GameState.LOGIN_SCREEN) { if (autoLoginConfig.useRandomWorld()) { - new Login(getRandomWorldWithRegionFilter(autoLoginConfig)); + final int world = getRandomWorldWithRegionFilter(autoLoginConfig); + Microbot.log(Level.INFO, String.format("Auto-logging into random %s world: %d", autoLoginConfig.isMember() ? "member" : "free", world)); + new Login(world); } else { Microbot.log(Level.INFO, String.format("Auto-logging into world: %d", autoLoginConfig.world())); new Login(autoLoginConfig.world()); From 99f517f7841cf7a6f487ce7e815e1d8282da4ff1 Mon Sep 17 00:00:00 2001 From: v3tcn Date: Sat, 30 Aug 2025 16:54:30 +0100 Subject: [PATCH 8/9] Update runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java Co-authored-by: Igor <74077743+Bolado@users.noreply.github.com> --- .../client/plugins/microbot/accountselector/AutoLoginScript.java | 1 + 1 file changed, 1 insertion(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java index 41fa4e03c99..6abde3b3575 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java @@ -3,6 +3,7 @@ import net.runelite.api.GameState; import net.runelite.client.plugins.microbot.Microbot; import net.runelite.client.plugins.microbot.Script; +import net.runelite.client.plugins.microbot.breakhandler.BreakHandlerScript; import net.runelite.client.plugins.microbot.util.security.Login; import net.runelite.http.api.worlds.WorldRegion; From 323c4a9ca94e8865343b46fd9f9121eb013404d5 Mon Sep 17 00:00:00 2001 From: v3tcn Date: Sun, 31 Aug 2025 00:18:23 +0100 Subject: [PATCH 9/9] Missing imports added by bolado import org.slf4j.event.Level; Co-authored-by: Igor <74077743+Bolado@users.noreply.github.com> --- .../client/plugins/microbot/accountselector/AutoLoginScript.java | 1 + 1 file changed, 1 insertion(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java index 6abde3b3575..156423ffc83 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/accountselector/AutoLoginScript.java @@ -6,6 +6,7 @@ import net.runelite.client.plugins.microbot.breakhandler.BreakHandlerScript; import net.runelite.client.plugins.microbot.util.security.Login; import net.runelite.http.api.worlds.WorldRegion; +import org.slf4j.event.Level; import java.util.ArrayList; import java.util.List;