From ce4f90f6fa721b7013054277f6455868c1ad8c7c Mon Sep 17 00:00:00 2001 From: dekvall Date: Tue, 13 Aug 2019 01:55:05 +0200 Subject: [PATCH] mining plugin: fix respawn timers in misc and resource area Fix respawn timers for: - Adamant rocks in Wilderness Resource area - Coal rocks in Miscellania The doubled respawn rate of the adamant rocks is a possible Jagex bug as they are the only type of rock within the Wilderness resource area to do so. The coal rocks in Miscellania are mined for favour instead of ores and therefore have a shortened respawn time. --- .../client/plugins/mining/MiningPlugin.java | 14 +++----- .../runelite/client/plugins/mining/Rock.java | 33 ++++++++++++------- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/mining/MiningPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/mining/MiningPlugin.java index a401a5ca66..5ff4b1ff7f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/mining/MiningPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/mining/MiningPlugin.java @@ -62,7 +62,6 @@ import net.runelite.client.ui.overlay.OverlayManager; public class MiningPlugin extends Plugin { private static final int ROCK_DISTANCE = 14; - private static final int MINING_GUILD_REGION = 12183; @Inject private Client client; @@ -123,11 +122,12 @@ public class MiningPlugin extends Plugin } final GameObject object = event.getGameObject(); + final int region = client.getLocalPlayer().getWorldLocation().getRegionID(); Rock rock = Rock.getRock(object.getId()); if (rock != null) { - RockRespawn rockRespawn = new RockRespawn(rock, object.getWorldLocation(), Instant.now(), (int) rock.getRespawnTime(inMiningGuild()).toMillis(), rock.getZOffset()); + RockRespawn rockRespawn = new RockRespawn(rock, object.getWorldLocation(), Instant.now(), (int) rock.getRespawnTime(region).toMillis(), rock.getZOffset()); respawns.add(rockRespawn); } } @@ -141,13 +141,14 @@ public class MiningPlugin extends Plugin } final WallObject object = event.getWallObject(); + final int region = client.getLocalPlayer().getWorldLocation().getRegionID(); switch (object.getId()) { case EMPTY_WALL: { Rock rock = Rock.AMETHYST; - RockRespawn rockRespawn = new RockRespawn(rock, object.getWorldLocation(), Instant.now(), (int) rock.getRespawnTime(inMiningGuild()).toMillis(), rock.getZOffset()); + RockRespawn rockRespawn = new RockRespawn(rock, object.getWorldLocation(), Instant.now(), (int) rock.getRespawnTime(region).toMillis(), rock.getZOffset()); respawns.add(rockRespawn); break; } @@ -157,7 +158,7 @@ public class MiningPlugin extends Plugin case DEPLETED_VEIN_26668: // Depleted motherlode vein { Rock rock = Rock.ORE_VEIN; - RockRespawn rockRespawn = new RockRespawn(rock, object.getWorldLocation(), Instant.now(), (int) rock.getRespawnTime(inMiningGuild()).toMillis(), rock.getZOffset()); + RockRespawn rockRespawn = new RockRespawn(rock, object.getWorldLocation(), Instant.now(), (int) rock.getRespawnTime(region).toMillis(), rock.getZOffset()); respawns.add(rockRespawn); break; } @@ -173,9 +174,4 @@ public class MiningPlugin extends Plugin } } } - - private boolean inMiningGuild() - { - return client.getLocalPlayer().getWorldLocation().getRegionID() == MINING_GUILD_REGION; - } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/mining/Rock.java b/runelite-client/src/main/java/net/runelite/client/plugins/mining/Rock.java index 8ecfeba2bd..582d7fd14a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/mining/Rock.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/mining/Rock.java @@ -38,17 +38,25 @@ enum Rock IRON(Duration.ofMillis(5400), 0, ROCKS_11364, ROCKS_11365, ROCKS_36203) { @Override - Duration getRespawnTime(boolean inMiningGuild) + Duration getRespawnTime(int region) { - return inMiningGuild ? Duration.ofMillis(2400) : super.respawnTime; + return region == MINING_GUILD ? Duration.ofMillis(2400) : super.respawnTime; } }, COAL(Duration.ofMillis(29400), 0, ROCKS_11366, ROCKS_11367, ROCKS_36204) { @Override - Duration getRespawnTime(boolean inMiningGuild) + Duration getRespawnTime(int region) { - return inMiningGuild ? Duration.ofMillis(14400) : super.respawnTime; + switch (region) + { + case MINING_GUILD: + return Duration.ofMillis(14400); + case MISCELLANIA: + return Duration.ofMillis(6600); + default: + return super.respawnTime; + } } }, SILVER(Duration.ofMinutes(1), 0, ROCKS_11368, ROCKS_11369, ROCKS_36205), @@ -58,25 +66,25 @@ enum Rock MITHRIL(Duration.ofMinutes(2), 0, ROCKS_11372, ROCKS_11373, ROCKS_36207) { @Override - Duration getRespawnTime(boolean inMiningGuild) + Duration getRespawnTime(int region) { - return inMiningGuild ? Duration.ofMinutes(1) : super.respawnTime; + return region == MINING_GUILD ? Duration.ofMinutes(1) : super.respawnTime; } }, ADAMANTITE(Duration.ofMinutes(4), 0, ROCKS_11374, ROCKS_11375, ROCKS_36208) { @Override - Duration getRespawnTime(boolean inMiningGuild) + Duration getRespawnTime(int region) { - return inMiningGuild ? Duration.ofMinutes(2) : super.respawnTime; + return region == MINING_GUILD || region == WILDERNESS_RESOURCE_AREA ? Duration.ofMinutes(2) : super.respawnTime; } }, RUNITE(Duration.ofMinutes(12), 0, ROCKS_11376, ROCKS_11377, ROCKS_36209) { @Override - Duration getRespawnTime(boolean inMiningGuild) + Duration getRespawnTime(int region) { - return inMiningGuild ? Duration.ofMinutes(6) : super.respawnTime; + return region == MINING_GUILD ? Duration.ofMinutes(6) : super.respawnTime; } }, ORE_VEIN(Duration.ofSeconds(MiningOverlay.ORE_VEIN_MAX_RESPAWN_TIME), 150), @@ -84,6 +92,9 @@ enum Rock ASH_VEIN(Duration.ofSeconds(30), 0, ASH_PILE), GEM_ROCK(Duration.ofMinutes(1), 0, ROCKS_11380, ROCKS_11381); + private static final int WILDERNESS_RESOURCE_AREA = 12605; + private static final int MISCELLANIA = 10044; + private static final int MINING_GUILD = 12183; private static final Map ROCKS; static @@ -111,7 +122,7 @@ enum Rock this.ids = ids; } - Duration getRespawnTime(boolean inMiningGuild) + Duration getRespawnTime(int region) { return respawnTime; }