From 7b82d61e09bac82ed23934a93f3d519766c381a7 Mon Sep 17 00:00:00 2001 From: trimbe Date: Sun, 27 Oct 2019 16:11:28 -0400 Subject: [PATCH 1/7] clues plugin: add fairy rings to coord clues --- .../cluescrolls/clues/CoordinateClue.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java index 3d833104d7..43965ade9d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java @@ -63,7 +63,7 @@ public class CoordinateClue extends ClueScroll implements TextClueScroll, Locati .put(new WorldPoint(2383, 3370, 0), "West of the outpost") .put(new WorldPoint(3312, 3375, 0), "North-west of Exam Centre, on the hill.") .put(new WorldPoint(3121, 3384, 0), "North-east of Draynor Manor, near River Lum.") - .put(new WorldPoint(3430, 3388, 0), "West of Mort Myre Swamp.") + .put(new WorldPoint(3430, 3388, 0), "West of Mort Myre Swamp (BKR).") .put(new WorldPoint(2920, 3403, 0), "South-east of Taverley, near Lady of the Lake.") .put(new WorldPoint(2594, 2899, 0), "South-east of Feldip Hills, by the crimson swifts (AKS).") .put(new WorldPoint(2387, 3435, 0), "West of Tree Gnome Stronghold, near the pen containing terrorbirds.") @@ -71,21 +71,21 @@ public class CoordinateClue extends ClueScroll implements TextClueScroll, Locati .put(new WorldPoint(2381, 3468, 0), "West of Tree Gnome Stronghold, north of the pen with terrorbirds.") .put(new WorldPoint(3005, 3475, 0), "Ice Mountain, west of Edgeville.") .put(new WorldPoint(2585, 3505, 0), "By the shore line north of the Coal Trucks.") - .put(new WorldPoint(3443, 3515, 0), "South of Slayer Tower.") + .put(new WorldPoint(3443, 3515, 0), "South of Slayer Tower (CKS).") .put(new WorldPoint(2416, 3516, 0), "Tree Gnome Stronghold, west of Grand Tree, near swamp.") - .put(new WorldPoint(3429, 3523, 0), "South of Slayer Tower.") - .put(new WorldPoint(2363, 3531, 0), "North-east of Eagles' Peak.") + .put(new WorldPoint(3429, 3523, 0), "South of Slayer Tower (CKS).") + .put(new WorldPoint(2363, 3531, 0), "North-east of Eagles' Peak (AKQ).") .put(new WorldPoint(2919, 3535, 0), "East of Burthorpe pub.") .put(new WorldPoint(3548, 3560, 0), "Inside Fenkenstrain's Castle.") .put(new WorldPoint(1456, 3620, 0), "Graveyard west of Shayzien (DJR).") .put(new WorldPoint(2735, 3638, 0), "East of Rellekka, north-west of Golden Apple Tree (AJR).") .put(new WorldPoint(2681, 3653, 0), "Rellekka, in the garden of the south-east house.") - .put(new WorldPoint(2537, 3881, 0), "Miscellania.") + .put(new WorldPoint(2537, 3881, 0), "Miscellania (CIP).") .put(new WorldPoint(2828, 3234, 0), "Southern coast of Crandor.") .put(new WorldPoint(1247, 3726, 0), "Just inside the Farming Guild") .put(new WorldPoint(3770, 3898, 0), "On the small island north-east of Fossil Island's mushroom forest.") // Hard - .put(new WorldPoint(2209, 3161, 0), "North-east of Tyras Camp.") + .put(new WorldPoint(2209, 3161, 0), "North-east of Tyras Camp (BJS).") .put(new WorldPoint(2181, 3206, 0), "South of Elf Camp.") .put(new WorldPoint(3081, 3209, 0), "Small Island (CLP).") .put(new WorldPoint(3374, 3250, 0), "Duel Arena combat area.") @@ -98,12 +98,12 @@ public class CoordinateClue extends ClueScroll implements TextClueScroll, Locati .put(new WorldPoint(2581, 3030, 0), "Gu'Tanoth island, enter cave north-west of Feldip Hills (AKS).") .put(new WorldPoint(2961, 3024, 0), "Ship yard (DKP).") .put(new WorldPoint(2339, 3311, 0), "East of Prifddinas on Arandar mountain pass.") - .put(new WorldPoint(3440, 3341, 0), "Nature Spirit's grotto.") - .put(new WorldPoint(2763, 2974, 0), "Cairn Isle, west of Shilo Village.") + .put(new WorldPoint(3440, 3341, 0), "Nature Spirit's grotto (BIP).") + .put(new WorldPoint(2763, 2974, 0), "Cairn Isle, west of Shilo Village (CKR).") .put(new WorldPoint(3138, 2969, 0), "West of Bandit Camp in Kharidian Desert.") .put(new WorldPoint(2924, 2963, 0), "On the southern part of eastern Karamja.") - .put(new WorldPoint(2838, 2914, 0), "Kharazi Jungle, near water pool.") - .put(new WorldPoint(3441, 3419, 0), "Mort Myre Swamp.") + .put(new WorldPoint(2838, 2914, 0), "Kharazi Jungle, near water pool (CKR).") + .put(new WorldPoint(3441, 3419, 0), "Mort Myre Swamp (BKR).") .put(new WorldPoint(2950, 2902, 0), "South-east of Kharazi Jungle.") .put(new WorldPoint(2775, 2891, 0), "South-west of Kharazi Jungle.") .put(new WorldPoint(3113, 3602, 0), "Wilderness. North of Edgeville (level 11).") @@ -113,8 +113,8 @@ public class CoordinateClue extends ClueScroll implements TextClueScroll, Locati .put(new WorldPoint(3305, 3692, 0), "Wilderness. West of eastern green dragon.") .put(new WorldPoint(3055, 3696, 0), "Wilderness. Bandit Camp.") .put(new WorldPoint(3302, 3696, 0), "Wilderness. West of eastern green dragon.") - .put(new WorldPoint(1479, 3696, 0), "Lizardman Canyon.") - .put(new WorldPoint(2712, 3732, 0), "North-east of Rellekka.") + .put(new WorldPoint(1479, 3696, 0), "Lizardman Canyon (DJR).") + .put(new WorldPoint(2712, 3732, 0), "North-east of Rellekka (DKS).") .put(new WorldPoint(2970, 3749, 0), "Wilderness. Forgotten Cemetery.") .put(new WorldPoint(3094, 3764, 0), "Wilderness. Mining site north of Bandit Camp.") .put(new WorldPoint(3311, 3769, 0), "Wilderness. North of Venenatis.") @@ -188,7 +188,7 @@ public class CoordinateClue extends ClueScroll implements TextClueScroll, Locati .put(new WorldPoint(1698, 3792, 0), "Arceuus church.") .put(new WorldPoint(2951, 3820, 0), "Wilderness. Chaos Temple (level 38).") .put(new WorldPoint(2202, 3825, 0), "Pirates' Cove, between Lunar Isle and Rellekka.") - .put(new WorldPoint(1761, 3853, 0), "Arceuus essence mine.") + .put(new WorldPoint(1761, 3853, 0), "Arceuus essence mine (CIS).") .put(new WorldPoint(2090, 3863, 0), "South of Lunar Isle, west of Astral altar.") .put(new WorldPoint(1442, 3878, 0), "Sulphur Mine.") .put(new WorldPoint(3380, 3929, 0), "Wilderness. Near Volcano.") From dad19290d902e4caeffd836700dd47fad8dd3fc5 Mon Sep 17 00:00:00 2001 From: Freya Varez <37026454+VarezF@users.noreply.github.com> Date: Mon, 4 Nov 2019 02:39:37 -0800 Subject: [PATCH 2/7] Add "sound" and "volume" tags to music plugin (#10199) --- .../java/net/runelite/client/plugins/music/MusicPlugin.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java index 6f3496a922..19612ae1d6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java @@ -70,7 +70,8 @@ import net.runelite.client.plugins.PluginDescriptor; @PluginDescriptor( name = "Music", - description = "Adds search and filter for the music list, and additional volume control" + description = "Adds search and filter for the music list, and additional volume control", + tags = {"sound", "volume"} ) public class MusicPlugin extends Plugin { From 5b7423bfeed2d97be9c0ff8977f34b97e6a6c96a Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 4 Nov 2019 09:32:52 -0500 Subject: [PATCH 3/7] api: combine ExperienceChanged and BoostedLevelChanged events to StatChanged --- .../api/events/BoostedLevelChanged.java | 51 ------------------- ...xperienceChanged.java => StatChanged.java} | 19 ++++--- 2 files changed, 9 insertions(+), 61 deletions(-) delete mode 100644 runelite-api/src/main/java/net/runelite/api/events/BoostedLevelChanged.java rename runelite-api/src/main/java/net/runelite/api/events/{ExperienceChanged.java => StatChanged.java} (81%) diff --git a/runelite-api/src/main/java/net/runelite/api/events/BoostedLevelChanged.java b/runelite-api/src/main/java/net/runelite/api/events/BoostedLevelChanged.java deleted file mode 100644 index 0c7adee98f..0000000000 --- a/runelite-api/src/main/java/net/runelite/api/events/BoostedLevelChanged.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.api.events; - -import lombok.Data; -import net.runelite.api.Skill; - -/** - * An event where a players skill level has been temporarily modified. - *

- * Examples of when this event may trigger include: - *

    - *
  • Prayer points draining or being restored at an altar or restoration pool
  • - *
  • Positive and negative effects gained from potions (ie. Saradomin brew)
  • - *
  • Earning skill points towards a skill
  • - *
  • Levelling up a skill
  • - *
- *

- * Use {@link net.runelite.api.Client#getBoostedSkillLevel(Skill)} in order to - * retrieve the newly boosted skill level. - */ -@Data -public class BoostedLevelChanged -{ - /** - * The skill that has had its level modified. - */ - private Skill skill; -} diff --git a/runelite-api/src/main/java/net/runelite/api/events/ExperienceChanged.java b/runelite-api/src/main/java/net/runelite/api/events/StatChanged.java similarity index 81% rename from runelite-api/src/main/java/net/runelite/api/events/ExperienceChanged.java rename to runelite-api/src/main/java/net/runelite/api/events/StatChanged.java index 0a1a276cfb..b5fd373731 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/ExperienceChanged.java +++ b/runelite-api/src/main/java/net/runelite/api/events/StatChanged.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Adam + * Copyright (c) 2017-2019, Adam * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -22,20 +22,19 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - package net.runelite.api.events; -import lombok.Data; +import lombok.Value; import net.runelite.api.Skill; /** - * An event where the experience level of a {@link Skill} has been modified. + * An event where the experience, level, or boosted level of a {@link Skill} has been modified. */ -@Data -public class ExperienceChanged +@Value +public class StatChanged { - /** - * The modified skill. - */ - private Skill skill; + private final Skill skill; + private final int xp; + private final int level; + private final int boostedLevel; } From eea61cdc8e307a7cdaee0bcc763dbe50511a9cc1 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 4 Nov 2019 09:58:20 -0500 Subject: [PATCH 4/7] client: update for new skill change event --- .../client/plugins/agility/AgilityPlugin.java | 25 ++-- .../client/plugins/boosts/BoostsPlugin.java | 6 +- .../plugins/devtools/DevToolsPlugin.java | 27 ++-- .../client/plugins/discord/DiscordPlugin.java | 11 +- .../plugins/experiencedrop/XpDropPlugin.java | 8 +- .../client/plugins/slayer/SlayerPlugin.java | 8 +- .../plugins/worldmap/WorldMapPlugin.java | 37 +++--- .../plugins/xpglobes/XpGlobesPlugin.java | 10 +- .../plugins/xptracker/XpTrackerPlugin.java | 10 +- .../plugins/slayer/SlayerPluginTest.java | 125 ++++++++++++------ .../xptracker/XpTrackerPluginTest.java | 13 +- 11 files changed, 165 insertions(+), 115 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityPlugin.java index d27ca539f7..2a627c1b10 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityPlugin.java @@ -43,12 +43,10 @@ import net.runelite.api.Tile; import net.runelite.api.TileItem; import net.runelite.api.TileObject; import net.runelite.api.coords.WorldPoint; -import net.runelite.api.events.BoostedLevelChanged; import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.DecorativeObjectChanged; import net.runelite.api.events.DecorativeObjectDespawned; import net.runelite.api.events.DecorativeObjectSpawned; -import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.GameObjectChanged; import net.runelite.api.events.GameObjectDespawned; import net.runelite.api.events.GameObjectSpawned; @@ -59,6 +57,7 @@ import net.runelite.api.events.GroundObjectDespawned; import net.runelite.api.events.GroundObjectSpawned; import net.runelite.api.events.ItemDespawned; import net.runelite.api.events.ItemSpawned; +import net.runelite.api.events.StatChanged; import net.runelite.api.events.WallObjectChanged; import net.runelite.api.events.WallObjectDespawned; import net.runelite.api.events.WallObjectSpawned; @@ -181,9 +180,16 @@ public class AgilityPlugin extends Plugin } @Subscribe - public void onExperienceChanged(ExperienceChanged event) + public void onStatChanged(StatChanged statChanged) { - if (event.getSkill() != AGILITY || !config.showLapCount()) + if (statChanged.getSkill() != AGILITY) + { + return; + } + + agilityLevel = statChanged.getBoostedLevel(); + + if (!config.showLapCount()) { return; } @@ -216,17 +222,6 @@ public class AgilityPlugin extends Plugin } } - - @Subscribe - public void onBoostedLevelChanged(BoostedLevelChanged boostedLevelChanged) - { - Skill skill = boostedLevelChanged.getSkill(); - if (skill == AGILITY) - { - agilityLevel = client.getBoostedSkillLevel(skill); - } - } - @Subscribe public void onItemSpawned(ItemSpawned itemSpawned) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsPlugin.java index aa7e46d00e..2b676f9380 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsPlugin.java @@ -36,10 +36,10 @@ import net.runelite.api.Client; import net.runelite.api.Constants; import net.runelite.api.Prayer; import net.runelite.api.Skill; -import net.runelite.api.events.BoostedLevelChanged; import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; +import net.runelite.api.events.StatChanged; import net.runelite.client.Notifier; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; @@ -177,9 +177,9 @@ public class BoostsPlugin extends Plugin } @Subscribe - public void onBoostedLevelChanged(BoostedLevelChanged boostedLevelChanged) + public void onStatChanged(StatChanged statChanged) { - Skill skill = boostedLevelChanged.getSkill(); + Skill skill = statChanged.getSkill(); if (!BOOSTABLE_COMBAT_SKILLS.contains(skill) && !BOOSTABLE_NON_COMBAT_SKILLS.contains(skill)) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPlugin.java index a6692a0491..0f6a4e0648 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPlugin.java @@ -43,10 +43,9 @@ import net.runelite.api.NPC; import net.runelite.api.Player; import net.runelite.api.Skill; import net.runelite.api.coords.WorldPoint; -import net.runelite.api.events.BoostedLevelChanged; import net.runelite.api.events.CommandExecuted; -import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.MenuEntryAdded; +import net.runelite.api.events.StatChanged; import net.runelite.api.events.VarbitChanged; import net.runelite.api.kit.KitType; import net.runelite.client.config.ConfigManager; @@ -285,9 +284,13 @@ public class DevToolsPlugin extends Plugin client.queueChangedSkill(skill); - ExperienceChanged experienceChanged = new ExperienceChanged(); - experienceChanged.setSkill(skill); - eventBus.post(experienceChanged); + StatChanged statChanged = new StatChanged( + skill, + totalXp, + level, + level + ); + eventBus.post(statChanged); break; } case "setstat": @@ -304,13 +307,13 @@ public class DevToolsPlugin extends Plugin client.queueChangedSkill(skill); - ExperienceChanged experienceChanged = new ExperienceChanged(); - experienceChanged.setSkill(skill); - eventBus.post(experienceChanged); - - BoostedLevelChanged boostedLevelChanged = new BoostedLevelChanged(); - boostedLevelChanged.setSkill(skill); - eventBus.post(boostedLevelChanged); + StatChanged statChanged = new StatChanged( + skill, + xp, + level, + level + ); + eventBus.post(statChanged); break; } case "anim": diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordPlugin.java index fb62c2cc8f..ef1686ba29 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordPlugin.java @@ -44,8 +44,8 @@ import net.runelite.api.Skill; import net.runelite.api.WorldType; import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.ConfigChanged; -import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.GameStateChanged; +import net.runelite.api.events.StatChanged; import net.runelite.api.events.VarbitChanged; import net.runelite.client.RuneLiteProperties; import net.runelite.client.config.ConfigManager; @@ -181,17 +181,18 @@ public class DiscordPlugin extends Plugin } @Subscribe - public void onExperienceChanged(ExperienceChanged event) + public void onStatChanged(StatChanged statChanged) { - final int exp = client.getSkillExperience(event.getSkill()); - final Integer previous = skillExp.put(event.getSkill(), exp); + final Skill skill = statChanged.getSkill(); + final int exp = statChanged.getXp(); + final Integer previous = skillExp.put(skill, exp); if (previous == null || previous >= exp) { return; } - final DiscordGameEventType discordGameEventType = DiscordGameEventType.fromSkill(event.getSkill()); + final DiscordGameEventType discordGameEventType = DiscordGameEventType.fromSkill(skill); if (discordGameEventType != null && config.showSkillingActivity()) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/experiencedrop/XpDropPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/experiencedrop/XpDropPlugin.java index aca9477123..57073c8fbc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/experiencedrop/XpDropPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/experiencedrop/XpDropPlugin.java @@ -35,8 +35,8 @@ import static net.runelite.api.ScriptID.XPDROP_DISABLED; import net.runelite.api.Skill; import net.runelite.api.SpriteID; import net.runelite.api.Varbits; -import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.GameTick; +import net.runelite.api.events.StatChanged; import net.runelite.api.events.WidgetHiddenChanged; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetID; @@ -230,10 +230,10 @@ public class XpDropPlugin extends Plugin } @Subscribe - public void onExperienceChanged(ExperienceChanged event) + public void onStatChanged(StatChanged statChanged) { - final Skill skill = event.getSkill(); - final int xp = client.getSkillExperience(skill); + final Skill skill = statChanged.getSkill(); + final int xp = statChanged.getXp(); lastSkill = skill; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java index ac3e525d24..c60f2901a3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java @@ -55,11 +55,11 @@ import static net.runelite.api.Skill.SLAYER; import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ConfigChanged; -import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.NpcSpawned; +import net.runelite.api.events.StatChanged; import net.runelite.api.vars.SlayerUnlock; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetInfo; @@ -519,14 +519,14 @@ public class SlayerPlugin extends Plugin } @Subscribe - public void onExperienceChanged(ExperienceChanged event) + public void onStatChanged(StatChanged statChanged) { - if (event.getSkill() != SLAYER) + if (statChanged.getSkill() != SLAYER) { return; } - int slayerExp = client.getSkillExperience(SLAYER); + int slayerExp = statChanged.getXp(); if (slayerExp <= cachedXp) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java index 757584a9bb..8468d40729 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java @@ -30,13 +30,12 @@ import com.google.inject.Provides; import java.awt.image.BufferedImage; import java.util.Arrays; import net.runelite.api.Client; -import net.runelite.api.Experience; import net.runelite.api.GameState; -import net.runelite.api.Skill; import net.runelite.api.Quest; import net.runelite.api.QuestState; +import net.runelite.api.Skill; import net.runelite.api.events.ConfigChanged; -import net.runelite.api.events.ExperienceChanged; +import net.runelite.api.events.StatChanged; import net.runelite.api.events.WidgetLoaded; import net.runelite.api.widgets.WidgetID; import net.runelite.client.callback.ClientThread; @@ -168,25 +167,29 @@ public class WorldMapPlugin extends Plugin } @Subscribe - public void onExperienceChanged(ExperienceChanged event) + public void onStatChanged(StatChanged statChanged) { - if (event.getSkill() == Skill.AGILITY) + switch (statChanged.getSkill()) { - int newAgilityLevel = Experience.getLevelForXp(client.getSkillExperience(Skill.AGILITY)); - if (newAgilityLevel != agilityLevel) + case AGILITY: { - agilityLevel = newAgilityLevel; - updateAgilityIcons(); + int newAgilityLevel = statChanged.getLevel(); + if (newAgilityLevel != agilityLevel) + { + agilityLevel = newAgilityLevel; + updateAgilityIcons(); + } + break; } - } - - if (event.getSkill() == Skill.WOODCUTTING) - { - int newWoodcutLevel = Experience.getLevelForXp(client.getSkillExperience(Skill.WOODCUTTING)); - if (newWoodcutLevel != woodcuttingLevel) + case WOODCUTTING: { - woodcuttingLevel = newWoodcutLevel; - updateRareTreeIcons(); + int newWoodcutLevel = statChanged.getLevel(); + if (newWoodcutLevel != woodcuttingLevel) + { + woodcuttingLevel = newWoodcutLevel; + updateRareTreeIcons(); + } + break; } } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobesPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobesPlugin.java index ea2aabc2b5..9a19e6a0fd 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobesPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobesPlugin.java @@ -35,8 +35,8 @@ import lombok.Getter; import net.runelite.api.Client; import net.runelite.api.Experience; import net.runelite.api.Skill; -import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.GameStateChanged; +import net.runelite.api.events.StatChanged; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.plugins.Plugin; @@ -93,11 +93,11 @@ public class XpGlobesPlugin extends Plugin } @Subscribe - public void onExperienceChanged(ExperienceChanged event) + public void onStatChanged(StatChanged statChanged) { - Skill skill = event.getSkill(); - int currentXp = client.getSkillExperience(skill); - int currentLevel = Experience.getLevelForXp(currentXp); + Skill skill = statChanged.getSkill(); + int currentXp = statChanged.getXp(); + int currentLevel = statChanged.getLevel(); int skillIdx = skill.ordinal(); XpGlobe cachedGlobe = globeCache[skillIdx]; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java index bf939736e5..d4dd39696c 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java @@ -51,12 +51,12 @@ import net.runelite.api.Player; import net.runelite.api.Skill; import net.runelite.api.VarPlayer; import net.runelite.api.WorldType; -import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.MenuOptionClicked; import net.runelite.api.events.NpcDespawned; +import net.runelite.api.events.StatChanged; import net.runelite.api.widgets.WidgetID; import static net.runelite.api.widgets.WidgetInfo.TO_GROUP; import net.runelite.client.config.ConfigManager; @@ -341,11 +341,11 @@ public class XpTrackerPlugin extends Plugin } @Subscribe - public void onExperienceChanged(ExperienceChanged event) + public void onStatChanged(StatChanged statChanged) { - final Skill skill = event.getSkill(); - final int currentXp = client.getSkillExperience(skill); - final int currentLevel = Experience.getLevelForXp(currentXp); + final Skill skill = statChanged.getSkill(); + final int currentXp = statChanged.getXp(); + final int currentLevel = statChanged.getLevel(); final VarPlayer startGoal = startGoalVarpForSkill(skill); final VarPlayer endGoal = endGoalVarpForSkill(skill); final int startGoalXp = startGoal != null ? client.getVar(startGoal) : -1; diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/slayer/SlayerPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/slayer/SlayerPluginTest.java index fb7e705877..fcf0cef900 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/slayer/SlayerPluginTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/slayer/SlayerPluginTest.java @@ -39,9 +39,9 @@ import net.runelite.api.Player; import net.runelite.api.Skill; import net.runelite.api.coords.LocalPoint; import net.runelite.api.events.ChatMessage; -import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; +import net.runelite.api.events.StatChanged; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.Notifier; @@ -429,17 +429,24 @@ public class SlayerPluginTest when(player.getLocalLocation()).thenReturn(new LocalPoint(0, 0)); when(client.getLocalPlayer()).thenReturn(player); - final ExperienceChanged experienceChanged = new ExperienceChanged(); - experienceChanged.setSkill(Skill.SLAYER); - - when(client.getSkillExperience(Skill.SLAYER)).thenReturn(100); - slayerPlugin.onExperienceChanged(experienceChanged); + StatChanged statChanged = new StatChanged( + Skill.SLAYER, + 100, + 2, + 2 + ); + slayerPlugin.onStatChanged(statChanged); slayerPlugin.setTaskName("Dagannoth"); slayerPlugin.setAmount(143); - when(client.getSkillExperience(Skill.SLAYER)).thenReturn(110); - slayerPlugin.onExperienceChanged(experienceChanged); + statChanged = new StatChanged( + Skill.SLAYER, + 110, + 2, + 2 + ); + slayerPlugin.onStatChanged(statChanged); assertEquals(142, slayerPlugin.getAmount()); } @@ -451,19 +458,26 @@ public class SlayerPluginTest when(player.getLocalLocation()).thenReturn(new LocalPoint(0, 0)); when(client.getLocalPlayer()).thenReturn(player); - final ExperienceChanged experienceChanged = new ExperienceChanged(); - experienceChanged.setSkill(Skill.SLAYER); - - when(client.getSkillExperience(Skill.SLAYER)).thenReturn(100); - slayerPlugin.onExperienceChanged(experienceChanged); + StatChanged statChanged = new StatChanged( + Skill.SLAYER, + 100, + 2, + 2 + ); + slayerPlugin.onStatChanged(statChanged); slayerPlugin.setTaskName("Monster"); slayerPlugin.setAmount(98); assert Task.getTask("Monster") == null; - when(client.getSkillExperience(Skill.SLAYER)).thenReturn(110); - slayerPlugin.onExperienceChanged(experienceChanged); + statChanged = new StatChanged( + Skill.SLAYER, + 110, + 2, + 2 + ); + slayerPlugin.onStatChanged(statChanged); assertEquals(97, slayerPlugin.getAmount()); } @@ -475,24 +489,36 @@ public class SlayerPluginTest when(player.getLocalLocation()).thenReturn(new LocalPoint(0, 0)); when(client.getLocalPlayer()).thenReturn(player); - final ExperienceChanged experienceChanged = new ExperienceChanged(); - experienceChanged.setSkill(Skill.SLAYER); - - when(client.getSkillExperience(Skill.SLAYER)).thenReturn(100); - slayerPlugin.onExperienceChanged(experienceChanged); + StatChanged statChanged = new StatChanged( + Skill.SLAYER, + 100, + 2, + 2 + ); + slayerPlugin.onStatChanged(statChanged); slayerPlugin.setTaskName("TzTok-Jad"); slayerPlugin.setAmount(1); // One bat kill - when(client.getSkillExperience(Skill.SLAYER)).thenReturn(110); - slayerPlugin.onExperienceChanged(experienceChanged); + statChanged = new StatChanged( + Skill.SLAYER, + 110, + 2, + 2 + ); + slayerPlugin.onStatChanged(statChanged); assertEquals(1, slayerPlugin.getAmount()); // One Jad kill - when(client.getSkillExperience(Skill.SLAYER)).thenReturn(25_360); - slayerPlugin.onExperienceChanged(experienceChanged); + statChanged = new StatChanged( + Skill.SLAYER, + 25360, + -1, + -1 + ); + slayerPlugin.onStatChanged(statChanged); assertEquals(0, slayerPlugin.getAmount()); } @@ -504,24 +530,36 @@ public class SlayerPluginTest when(player.getLocalLocation()).thenReturn(new LocalPoint(0, 0)); when(client.getLocalPlayer()).thenReturn(player); - final ExperienceChanged experienceChanged = new ExperienceChanged(); - experienceChanged.setSkill(Skill.SLAYER); - - when(client.getSkillExperience(Skill.SLAYER)).thenReturn(100); - slayerPlugin.onExperienceChanged(experienceChanged); + StatChanged statChanged = new StatChanged( + Skill.SLAYER, + 110, + 2, + 2 + ); + slayerPlugin.onStatChanged(statChanged); slayerPlugin.setTaskName("TzKal-Zuk"); slayerPlugin.setAmount(1); // One bat kill - when(client.getSkillExperience(Skill.SLAYER)).thenReturn(125); - slayerPlugin.onExperienceChanged(experienceChanged); + statChanged = new StatChanged( + Skill.SLAYER, + 125, + 2, + 2 + ); + slayerPlugin.onStatChanged(statChanged); assertEquals(1, slayerPlugin.getAmount()); // One Zuk kill - when(client.getSkillExperience(Skill.SLAYER)).thenReturn(102_015); - slayerPlugin.onExperienceChanged(experienceChanged); + statChanged = new StatChanged( + Skill.SLAYER, + 102_015, + -1, + -1 + ); + slayerPlugin.onStatChanged(statChanged); assertEquals(0, slayerPlugin.getAmount()); } @@ -691,17 +729,24 @@ public class SlayerPluginTest when(player.getLocalLocation()).thenReturn(new LocalPoint(0, 0)); when(client.getLocalPlayer()).thenReturn(player); - final ExperienceChanged experienceChanged = new ExperienceChanged(); - experienceChanged.setSkill(Skill.SLAYER); - slayerPlugin.setTaskName("Bears"); slayerPlugin.setAmount(35); - when(client.getSkillExperience(Skill.SLAYER)).thenReturn(0); - slayerPlugin.onExperienceChanged(experienceChanged); + StatChanged statChanged = new StatChanged( + Skill.SLAYER, + 0, + 1, + 1 + ); + slayerPlugin.onStatChanged(statChanged); - when(client.getSkillExperience(Skill.SLAYER)).thenReturn(27); - slayerPlugin.onExperienceChanged(experienceChanged); + statChanged = new StatChanged( + Skill.SLAYER, + 27, + 1, + 1 + ); + slayerPlugin.onStatChanged(statChanged); assertEquals(34, slayerPlugin.getAmount()); } diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/xptracker/XpTrackerPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/xptracker/XpTrackerPluginTest.java index 5c1724b1e5..ca3375bbf4 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/xptracker/XpTrackerPluginTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/xptracker/XpTrackerPluginTest.java @@ -32,9 +32,9 @@ import net.runelite.api.Client; import net.runelite.api.GameState; import net.runelite.api.Player; import net.runelite.api.Skill; -import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; +import net.runelite.api.events.StatChanged; import net.runelite.client.game.NPCManager; import net.runelite.client.game.SkillIconManager; import net.runelite.client.ui.ClientToolbar; @@ -101,10 +101,13 @@ public class XpTrackerPluginTest xpTrackerPlugin.onGameTick(new GameTick()); // Gain attack xp - when(client.getSkillExperience(Skill.ATTACK)).thenReturn(100); - ExperienceChanged experienceChanged = new ExperienceChanged(); - experienceChanged.setSkill(Skill.ATTACK); - xpTrackerPlugin.onExperienceChanged(experienceChanged); + StatChanged statChanged = new StatChanged( + Skill.ATTACK, + 100, + 2, + 2 + ); + xpTrackerPlugin.onStatChanged(statChanged); // Offline gain when(client.getSkillExperience(Skill.ATTACK)).thenReturn(42000); From b19e4d95124a9d64f3cc0ce2c5b792bbfc94610a Mon Sep 17 00:00:00 2001 From: Hudson Shykowski Date: Mon, 4 Nov 2019 13:50:08 -0700 Subject: [PATCH 5/7] Add Fremennik Exiles monsters to the NPC health list --- runelite-client/src/main/resources/npc_health.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/resources/npc_health.json b/runelite-client/src/main/resources/npc_health.json index a6b92c36a3..123f28c6a9 100644 --- a/runelite-client/src/main/resources/npc_health.json +++ b/runelite-client/src/main/resources/npc_health.json @@ -1161,5 +1161,11 @@ "Alchemical Hydra_426": 1100, "Undead Druid_105": 140, "Temple Spider_75": 70, - "Sarachnis_318": 400 + "Sarachnis_318": 400, + "Basilisk Youngling_57" : 60, + "Monstrous Basilisk_135" : 170, + "Typhor_194" : 280, + "The Jormungand_363" : 600, + "Basilisk Knight_204" : 300, + "Basilisk Sentinel_358" : 520 } From cdcf0cac274b7a4f76b055a6276e5db2606fb9e7 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Sat, 2 Nov 2019 23:25:47 -0600 Subject: [PATCH 6/7] OverlayRenderer: Update bounds before render --- .../java/net/runelite/client/ui/overlay/OverlayRenderer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java index 81b405fe83..ce634cc491 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java @@ -490,6 +490,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener } graphics.translate(point.x, point.y); + overlay.getBounds().setLocation(point); final Dimension overlayDimension; try @@ -503,7 +504,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener } final Dimension dimension = MoreObjects.firstNonNull(overlayDimension, new Dimension()); - overlay.setBounds(new Rectangle(point, dimension)); + overlay.getBounds().setSize(dimension); } private boolean shouldInvalidateBounds() From a7e88713932c6e037340ada7b8a0eb9376fd60df Mon Sep 17 00:00:00 2001 From: Zeid Al-Ameedi Date: Tue, 5 Nov 2019 05:44:46 -0800 Subject: [PATCH 7/7] Add untradeable item values for long/curved bones, tattered pages and shells (#10202) --- .../client/game/UntradeableItemMapping.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/game/UntradeableItemMapping.java b/runelite-client/src/main/java/net/runelite/client/game/UntradeableItemMapping.java index 2fd63f1fc0..5dd393acb1 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/UntradeableItemMapping.java +++ b/runelite-client/src/main/java/net/runelite/client/game/UntradeableItemMapping.java @@ -53,7 +53,18 @@ public enum UntradeableItemMapping CRYSTAL_LEGS(ItemID.CRYSTAL_LEGS, 2, ItemID.CRYSTAL_ARMOUR_SEED), CRYSTAL_LEGS_INACTIVE(ItemID.CRYSTAL_LEGS_INACTIVE, 2, ItemID.CRYSTAL_ARMOUR_SEED), CRYSTAL_BODY(ItemID.CRYSTAL_BODY, 3, ItemID.CRYSTAL_ARMOUR_SEED), - CRYSTAL_BODY_INACTIVE(ItemID.CRYSTAL_BODY_INACTIVE, 3, ItemID.CRYSTAL_ARMOUR_SEED); + CRYSTAL_BODY_INACTIVE(ItemID.CRYSTAL_BODY_INACTIVE, 3, ItemID.CRYSTAL_ARMOUR_SEED), + + TATTERED_MOON_PAGE(ItemID.TATTERED_MOON_PAGE, 1000, ItemID.COINS_995), + TATTERED_SUN_PAGE(ItemID.TATTERED_SUN_PAGE, 1000, ItemID.COINS_995), + TATTERED_TEMPLE_PAGE(ItemID.TATTERED_TEMPLE_PAGE, 1000, ItemID.COINS_995), + + LONG_BONE(ItemID.LONG_BONE, 1000, ItemID.COINS_995), + CURVED_BONE(ItemID.CURVED_BONE, 2000, ItemID.COINS_995), + PERFECT_SHELL(ItemID.PERFECT_SHELL, 600, ItemID.COINS_995), + PERFECT_SNAIL_SHELL(ItemID.PERFECT_SNAIL_SHELL, 600, ItemID.COINS_995), + SNAIL_SHELL(ItemID.SNAIL_SHELL, 600, ItemID.COINS_995), + TORTOISE_SHELL(ItemID.TORTOISE_SHELL, 250, ItemID.COINS_995); private static final ImmutableMap UNTRADEABLE_RECLAIM_MAP;