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..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 @@ -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.parseItemsToKeep(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; } 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..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 @@ -20,6 +20,14 @@ 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(",")); + assertEquals(Collections.singletonList("pickaxe"), MiningBankRule.parseItemsToKeep(", ")); + } + @Test void defaultListStillBanksOres() { assertTrue(MiningBankRule.shouldBank("Tin ore", only(Rocks.TIN), DEFAULT_ITEMS));