From 5d9fcd237d8b8af49f561f7c90810662d1095fc8 Mon Sep 17 00:00:00 2001 From: chsami <23292806+chsami@users.noreply.github.com> Date: Sun, 18 Oct 2026 18:30:49 +0200 Subject: [PATCH 1/3] fix(AutoMiningPlugin): progressive banking, mine anchor and blank keep list (1.0.15) - Run the progressive location check only in MINING so a bank trip can deposit instead of being walked back to the mine before the deposit tick. - Anchor the mining location to the selected progressive mine, so the walk-back, rock search and bank return no longer pull the player to the start tile (also after a level-up switches the mine). - Parse "Items to keep" with MiningBankRule.parseItemNames so empty entries no longer match every item and stall drop mode on a full inventory. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01LjtEMzQHGuq4M1Mpqk9pPV --- .../client/plugins/microbot/mining/AutoMiningPlugin.java | 2 +- .../client/plugins/microbot/mining/AutoMiningScript.java | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/runelite/client/plugins/microbot/mining/AutoMiningPlugin.java b/src/main/java/net/runelite/client/plugins/microbot/mining/AutoMiningPlugin.java index ef85a1e863..79add9443e 100644 --- a/src/main/java/net/runelite/client/plugins/microbot/mining/AutoMiningPlugin.java +++ b/src/main/java/net/runelite/client/plugins/microbot/mining/AutoMiningPlugin.java @@ -24,7 +24,7 @@ ) @Slf4j public class AutoMiningPlugin extends Plugin { - public static final String version = "1.0.14"; + public static final String version = "1.0.15"; @Inject private AutoMiningConfig config; @Provides diff --git a/src/main/java/net/runelite/client/plugins/microbot/mining/AutoMiningScript.java b/src/main/java/net/runelite/client/plugins/microbot/mining/AutoMiningScript.java index 744021764b..ecdf6ee946 100644 --- a/src/main/java/net/runelite/client/plugins/microbot/mining/AutoMiningScript.java +++ b/src/main/java/net/runelite/client/plugins/microbot/mining/AutoMiningScript.java @@ -79,7 +79,7 @@ public boolean run(AutoMiningConfig config) { updateActiveRock(config); - if (config.progressiveMode() && ensureProgressiveLocation(config)) { + if (config.progressiveMode() && state == State.MINING && ensureProgressiveLocation(config)) { return; } @@ -214,7 +214,7 @@ else if (activeRock == Rocks.GEM && Rs2Player.getWorldLocation().getRegionID() = } } else { - Rs2Inventory.dropAllExcept(false, config.interactOrder(), Arrays.stream(config.itemsToKeep().split(",")).map(String::trim).toArray(String[]::new)); + Rs2Inventory.dropAllExcept(false, config.interactOrder(), MiningBankRule.parseItemNames(config.itemsToKeep()).toArray(new String[0])); } state = State.MINING; @@ -313,9 +313,7 @@ private boolean ensureProgressiveLocation(AutoMiningConfig config) { WorldPoint targetPoint = activeLocation.getWorldPoint(); - // Only update initialPlayerLocation if it's null - // Don't update just because player is far away (e.g., at bank) - that breaks return-to-location - if (initialPlayerLocation == null) { + if (!targetPoint.equals(initialPlayerLocation)) { initialPlayerLocation = targetPoint; } From 4aecdbbd2a34e6e45f05a32cd5041372b87bf4d2 Mon Sep 17 00:00:00 2001 From: chsami <23292806+chsami@users.noreply.github.com> Date: Sun, 18 Oct 2026 18:38:31 +0200 Subject: [PATCH 2/3] fix(AutoMiningPlugin): keep the pickaxe when the keep list is blank A blank or separator-only "Items to keep" parsed to an empty list, so drop mode dropped the whole inventory, including a carried pickaxe. Fall back to the config default "pickaxe" when the parsed list is empty. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01LjtEMzQHGuq4M1Mpqk9pPV --- .../plugins/microbot/mining/AutoMiningScript.java | 2 +- .../plugins/microbot/mining/MiningBankRule.java | 7 +++++++ .../plugins/microbot/mining/MiningBankRuleTest.java | 13 +++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/runelite/client/plugins/microbot/mining/AutoMiningScript.java b/src/main/java/net/runelite/client/plugins/microbot/mining/AutoMiningScript.java index ecdf6ee946..45894df36c 100644 --- a/src/main/java/net/runelite/client/plugins/microbot/mining/AutoMiningScript.java +++ b/src/main/java/net/runelite/client/plugins/microbot/mining/AutoMiningScript.java @@ -214,7 +214,7 @@ else if (activeRock == Rocks.GEM && Rs2Player.getWorldLocation().getRegionID() = } } else { - Rs2Inventory.dropAllExcept(false, config.interactOrder(), MiningBankRule.parseItemNames(config.itemsToKeep()).toArray(new String[0])); + Rs2Inventory.dropAllExcept(false, config.interactOrder(), MiningBankRule.parseItemsToKeep(config.itemsToKeep()).toArray(new String[0])); } state = State.MINING; diff --git a/src/main/java/net/runelite/client/plugins/microbot/mining/MiningBankRule.java b/src/main/java/net/runelite/client/plugins/microbot/mining/MiningBankRule.java index 6ad91fc65f..5fd7f271f7 100644 --- a/src/main/java/net/runelite/client/plugins/microbot/mining/MiningBankRule.java +++ b/src/main/java/net/runelite/client/plugins/microbot/mining/MiningBankRule.java @@ -4,12 +4,14 @@ import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Locale; import java.util.stream.Collectors; final class MiningBankRule { private static final String UNCUT_GEM_PREFIX = "uncut "; + private static final String DEFAULT_ITEM_TO_KEEP = "pickaxe"; private MiningBankRule() { } @@ -22,6 +24,11 @@ static List parseItemNames(String itemsToBank) { .collect(Collectors.toList()); } + static List parseItemsToKeep(String itemsToKeep) { + List keep = parseItemNames(itemsToKeep); + return keep.isEmpty() ? Collections.singletonList(DEFAULT_ITEM_TO_KEEP) : keep; + } + static boolean shouldBank(String itemName, Collection rocks, List itemNames) { if (itemName == null) { return false; diff --git a/src/test/java/net/runelite/client/plugins/microbot/mining/MiningBankRuleTest.java b/src/test/java/net/runelite/client/plugins/microbot/mining/MiningBankRuleTest.java index a85f391be6..e656ee0f83 100644 --- a/src/test/java/net/runelite/client/plugins/microbot/mining/MiningBankRuleTest.java +++ b/src/test/java/net/runelite/client/plugins/microbot/mining/MiningBankRuleTest.java @@ -20,6 +20,19 @@ void parsesCommaSeparatedNames() { assertTrue(MiningBankRule.parseItemNames(" , ").isEmpty()); } + @Test + void blankKeepListFallsBackToPickaxe() { + assertEquals(Collections.singletonList("pickaxe"), MiningBankRule.parseItemsToKeep("")); + assertEquals(Collections.singletonList("pickaxe"), MiningBankRule.parseItemsToKeep(" , ")); + assertEquals(Collections.singletonList("pickaxe"), MiningBankRule.parseItemsToKeep(",")); + } + + @Test + void keepListDropsEmptyEntries() { + assertEquals(Collections.singletonList("pickaxe"), MiningBankRule.parseItemsToKeep("pickaxe, ")); + assertEquals(Arrays.asList("pickaxe", "gem bag"), MiningBankRule.parseItemsToKeep("Pickaxe,, Gem bag")); + } + @Test void defaultListStillBanksOres() { assertTrue(MiningBankRule.shouldBank("Tin ore", only(Rocks.TIN), DEFAULT_ITEMS)); From 3b72aff010bad220eae607b0c4d8fb9e8fdc84ee Mon Sep 17 00:00:00 2001 From: chsami <23292806+chsami@users.noreply.github.com> Date: Sun, 18 Oct 2026 18:44:00 +0200 Subject: [PATCH 3/3] fix(AutoMiningPlugin): drop keep-list test that passes without the fix keepListDropsEmptyEntries only exercised the empty-entry filtering that parseItemNames already had, so it passed on the old code and proved nothing. The blank-list fallback test, now also covering ", ", is the one that fails without the fix. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01LjtEMzQHGuq4M1Mpqk9pPV --- .../client/plugins/microbot/mining/MiningBankRuleTest.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/test/java/net/runelite/client/plugins/microbot/mining/MiningBankRuleTest.java b/src/test/java/net/runelite/client/plugins/microbot/mining/MiningBankRuleTest.java index e656ee0f83..a255565641 100644 --- a/src/test/java/net/runelite/client/plugins/microbot/mining/MiningBankRuleTest.java +++ b/src/test/java/net/runelite/client/plugins/microbot/mining/MiningBankRuleTest.java @@ -25,12 +25,7 @@ void blankKeepListFallsBackToPickaxe() { assertEquals(Collections.singletonList("pickaxe"), MiningBankRule.parseItemsToKeep("")); assertEquals(Collections.singletonList("pickaxe"), MiningBankRule.parseItemsToKeep(" , ")); assertEquals(Collections.singletonList("pickaxe"), MiningBankRule.parseItemsToKeep(",")); - } - - @Test - void keepListDropsEmptyEntries() { - assertEquals(Collections.singletonList("pickaxe"), MiningBankRule.parseItemsToKeep("pickaxe, ")); - assertEquals(Arrays.asList("pickaxe", "gem bag"), MiningBankRule.parseItemsToKeep("Pickaxe,, Gem bag")); + assertEquals(Collections.singletonList("pickaxe"), MiningBankRule.parseItemsToKeep(", ")); } @Test