Merge pull request #1890 from Owain94/0611-merge
project: Merge upstream
This commit is contained in:
@@ -1,51 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Adam <Adam@sigterm.info>
|
||||
* 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 net.runelite.api.Skill;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* An event where a players skill level has been temporarily modified.
|
||||
* <p>
|
||||
* Examples of when this event may trigger include:
|
||||
* <ul>
|
||||
* <li>Prayer points draining or being restored at an altar or restoration pool</li>
|
||||
* <li>Positive and negative effects gained from potions (ie. Saradomin brew)</li>
|
||||
* <li>Earning skill points towards a skill</li>
|
||||
* <li>Levelling up a skill</li>
|
||||
* </ul>
|
||||
* <p>
|
||||
* Use {@link net.runelite.api.Client#getBoostedSkillLevel(Skill)} in order to
|
||||
* retrieve the newly boosted skill level.
|
||||
*/
|
||||
@Data
|
||||
public class BoostedLevelChanged implements Event
|
||||
{
|
||||
/**
|
||||
* The skill that has had its level modified.
|
||||
*/
|
||||
private Skill skill;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
* Copyright (c) 2017-2019, Adam <Adam@sigterm.info>
|
||||
* 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.Value;
|
||||
import net.runelite.api.Skill;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 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 implements Event
|
||||
@Value
|
||||
public class StatChanged implements Event
|
||||
{
|
||||
/**
|
||||
* The modified skill.
|
||||
*/
|
||||
private Skill skill;
|
||||
private final Skill skill;
|
||||
private final int xp;
|
||||
private final int level;
|
||||
private final int boostedLevel;
|
||||
}
|
||||
@@ -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<Integer, UntradeableItemMapping> UNTRADEABLE_RECLAIM_MAP;
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import net.runelite.api.Client;
|
||||
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.eventbus.EventBus;
|
||||
|
||||
@Singleton
|
||||
@@ -34,7 +34,7 @@ public class XpDropManager
|
||||
this.client = client;
|
||||
this.eventBus = eventBus;
|
||||
eventBus.subscribe(GameStateChanged.class, this, this::onGameStateChanged);
|
||||
eventBus.subscribe(ExperienceChanged.class, this, this::onExperienceChanged);
|
||||
eventBus.subscribe(StatChanged.class, this, this::onStatChanged);
|
||||
}
|
||||
|
||||
private void onGameStateChanged(GameStateChanged event)
|
||||
@@ -43,7 +43,7 @@ public class XpDropManager
|
||||
tickShow = 0;
|
||||
}
|
||||
|
||||
private void onExperienceChanged(ExperienceChanged event)
|
||||
private void onStatChanged(StatChanged event)
|
||||
{
|
||||
final Skill skill = event.getSkill();
|
||||
final int xp = client.getSkillExperience(skill);
|
||||
|
||||
@@ -50,12 +50,10 @@ import net.runelite.api.TileItem;
|
||||
import net.runelite.api.TileObject;
|
||||
import net.runelite.api.coords.WorldPoint;
|
||||
import net.runelite.api.events.BeforeRender;
|
||||
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;
|
||||
@@ -67,6 +65,7 @@ import net.runelite.api.events.GroundObjectSpawned;
|
||||
import net.runelite.api.events.ItemDespawned;
|
||||
import net.runelite.api.events.ItemSpawned;
|
||||
import net.runelite.api.events.MenuOpened;
|
||||
import net.runelite.api.events.StatChanged;
|
||||
import net.runelite.api.events.WallObjectChanged;
|
||||
import net.runelite.api.events.WallObjectDespawned;
|
||||
import net.runelite.api.events.WallObjectSpawned;
|
||||
@@ -201,8 +200,7 @@ public class AgilityPlugin extends Plugin
|
||||
{
|
||||
eventBus.subscribe(ConfigChanged.class, this, this::onConfigChanged);
|
||||
eventBus.subscribe(GameStateChanged.class, this, this::onGameStateChanged);
|
||||
eventBus.subscribe(ExperienceChanged.class, this, this::onExperienceChanged);
|
||||
eventBus.subscribe(BoostedLevelChanged.class, this, this::onBoostedLevelChanged);
|
||||
eventBus.subscribe(StatChanged .class, this, this::onStatChanged);
|
||||
eventBus.subscribe(ItemSpawned.class, this, this::onItemSpawned);
|
||||
eventBus.subscribe(ItemDespawned.class, this, this::onItemDespawned);
|
||||
eventBus.subscribe(GameTick.class, this, this::onGameTick);
|
||||
@@ -295,9 +293,16 @@ public class AgilityPlugin extends Plugin
|
||||
this.showAgilityArenaTimer = config.showAgilityArenaTimer();
|
||||
}
|
||||
|
||||
private void onExperienceChanged(ExperienceChanged event)
|
||||
public void onStatChanged(StatChanged statChanged)
|
||||
{
|
||||
if (event.getSkill() != AGILITY || !this.showLapCount)
|
||||
if (statChanged.getSkill() != AGILITY)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
agilityLevel = statChanged.getBoostedLevel();
|
||||
|
||||
if (!this.showLapCount)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -330,15 +335,6 @@ public class AgilityPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
private void onBoostedLevelChanged(BoostedLevelChanged boostedLevelChanged)
|
||||
{
|
||||
Skill skill = boostedLevelChanged.getSkill();
|
||||
if (skill == AGILITY)
|
||||
{
|
||||
agilityLevel = client.getBoostedSkillLevel(skill);
|
||||
}
|
||||
}
|
||||
|
||||
private void onItemSpawned(ItemSpawned itemSpawned)
|
||||
{
|
||||
if (obstacles.isEmpty())
|
||||
|
||||
@@ -39,10 +39,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.EventBus;
|
||||
@@ -174,7 +174,7 @@ public class BoostsPlugin extends Plugin
|
||||
{
|
||||
eventBus.subscribe(ConfigChanged.class, this, this::onConfigChanged);
|
||||
eventBus.subscribe(GameStateChanged.class, this, this::onGameStateChanged);
|
||||
eventBus.subscribe(BoostedLevelChanged.class, this, this::onBoostedLevelChanged);
|
||||
eventBus.subscribe(StatChanged.class, this, this::onStatChanged);
|
||||
eventBus.subscribe(GameTick.class, this, this::onGameTick);
|
||||
}
|
||||
|
||||
@@ -211,9 +211,9 @@ public class BoostsPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
private void onBoostedLevelChanged(BoostedLevelChanged boostedLevelChanged)
|
||||
private void onStatChanged(StatChanged statChanged)
|
||||
{
|
||||
Skill skill = boostedLevelChanged.getSkill();
|
||||
Skill skill = statChanged.getSkill();
|
||||
|
||||
if (!BOOSTABLE_COMBAT_SKILLS.contains(skill) && !BOOSTABLE_NON_COMBAT_SKILLS.contains(skill))
|
||||
{
|
||||
|
||||
@@ -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.")
|
||||
|
||||
@@ -42,11 +42,10 @@ import net.runelite.api.Player;
|
||||
import net.runelite.api.Skill;
|
||||
import net.runelite.api.coords.WorldPoint;
|
||||
import net.runelite.api.events.AreaSoundEffectPlayed;
|
||||
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.SoundEffectPlayed;
|
||||
import net.runelite.api.events.StatChanged;
|
||||
import net.runelite.api.events.VarbitChanged;
|
||||
import net.runelite.api.kit.KitType;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
@@ -301,9 +300,13 @@ public class DevToolsPlugin extends Plugin
|
||||
|
||||
client.queueChangedSkill(skill);
|
||||
|
||||
ExperienceChanged experienceChanged = new ExperienceChanged();
|
||||
experienceChanged.setSkill(skill);
|
||||
eventBus.post(ExperienceChanged.class, experienceChanged);
|
||||
StatChanged statChanged = new StatChanged(
|
||||
skill,
|
||||
totalXp,
|
||||
level,
|
||||
level
|
||||
);
|
||||
eventBus.post(StatChanged.class, statChanged);
|
||||
break;
|
||||
}
|
||||
case "setstat":
|
||||
@@ -320,13 +323,13 @@ public class DevToolsPlugin extends Plugin
|
||||
|
||||
client.queueChangedSkill(skill);
|
||||
|
||||
ExperienceChanged experienceChanged = new ExperienceChanged();
|
||||
experienceChanged.setSkill(skill);
|
||||
eventBus.post(ExperienceChanged.class, experienceChanged);
|
||||
|
||||
BoostedLevelChanged boostedLevelChanged = new BoostedLevelChanged();
|
||||
boostedLevelChanged.setSkill(skill);
|
||||
eventBus.post(BoostedLevelChanged.class, boostedLevelChanged);
|
||||
StatChanged statChanged = new StatChanged(
|
||||
skill,
|
||||
xp,
|
||||
level,
|
||||
level
|
||||
);
|
||||
eventBus.post(StatChanged.class, statChanged);
|
||||
break;
|
||||
}
|
||||
case "anim":
|
||||
|
||||
@@ -47,8 +47,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;
|
||||
@@ -175,7 +175,7 @@ public class DiscordPlugin extends Plugin
|
||||
{
|
||||
eventBus.subscribe(ConfigChanged.class, this, this::onConfigChanged);
|
||||
eventBus.subscribe(GameStateChanged.class, this, this::onGameStateChanged);
|
||||
eventBus.subscribe(ExperienceChanged.class, this, this::onExperienceChanged);
|
||||
eventBus.subscribe(StatChanged.class, this, this::onStatChanged);
|
||||
eventBus.subscribe(VarbitChanged.class, this, this::onVarbitChanged);
|
||||
eventBus.subscribe(DiscordReady.class, this, this::onDiscordReady);
|
||||
eventBus.subscribe(DiscordJoinRequest.class, this, this::onDiscordJoinRequest);
|
||||
@@ -222,17 +222,18 @@ public class DiscordPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
private void onExperienceChanged(ExperienceChanged event)
|
||||
private 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 && this.showSkillingActivity)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -42,11 +42,11 @@ import net.runelite.api.NPC;
|
||||
import net.runelite.api.Skill;
|
||||
import net.runelite.api.WorldType;
|
||||
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.HitsplatApplied;
|
||||
import net.runelite.api.events.ScriptCallbackEvent;
|
||||
import net.runelite.api.events.StatChanged;
|
||||
import net.runelite.client.chat.ChatColorType;
|
||||
import net.runelite.client.chat.ChatMessageBuilder;
|
||||
import net.runelite.client.chat.ChatMessageManager;
|
||||
@@ -165,7 +165,7 @@ public class PerformanceStatsPlugin extends Plugin
|
||||
eventBus.subscribe(ConfigChanged.class, this, this::onConfigChanged);
|
||||
eventBus.subscribe(GameStateChanged.class, this, this::onGameStateChanged);
|
||||
eventBus.subscribe(HitsplatApplied.class, this, this::onHitsplatApplied);
|
||||
eventBus.subscribe(ExperienceChanged.class, this, this::onExperienceChanged);
|
||||
eventBus.subscribe(StatChanged.class, this, this::onStatChanged);
|
||||
eventBus.subscribe(ScriptCallbackEvent.class, this, this::onScriptCallbackEvent);
|
||||
eventBus.subscribe(GameTick.class, this, this::onGameTick);
|
||||
eventBus.subscribe(OverlayMenuClicked.class, this, this::onOverlayMenuClicked);
|
||||
@@ -207,7 +207,7 @@ public class PerformanceStatsPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
private void onExperienceChanged(ExperienceChanged c)
|
||||
private void onStatChanged(StatChanged c)
|
||||
{
|
||||
if (isPaused() || hopping)
|
||||
{
|
||||
|
||||
@@ -66,7 +66,6 @@ import net.runelite.api.WorldType;
|
||||
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.InteractingChanged;
|
||||
@@ -74,6 +73,7 @@ import net.runelite.api.events.NpcDefinitionChanged;
|
||||
import net.runelite.api.events.NpcDespawned;
|
||||
import net.runelite.api.events.NpcSpawned;
|
||||
import net.runelite.api.events.VarbitChanged;
|
||||
import net.runelite.api.events.StatChanged;
|
||||
import net.runelite.api.vars.SlayerUnlock;
|
||||
import net.runelite.api.widgets.Widget;
|
||||
import net.runelite.api.widgets.WidgetInfo;
|
||||
@@ -368,7 +368,7 @@ public class SlayerPlugin extends Plugin
|
||||
eventBus.subscribe(VarbitChanged.class, this, this::onVarbitChanged);
|
||||
eventBus.subscribe(GameTick.class, this, this::onGameTick);
|
||||
eventBus.subscribe(ChatMessage.class, this, this::onChatMessage);
|
||||
eventBus.subscribe(ExperienceChanged.class, this, this::onExperienceChanged);
|
||||
eventBus.subscribe(StatChanged.class, this, this::onStatChanged);
|
||||
eventBus.subscribe(InteractingChanged.class, this, this::onInteractingChanged);
|
||||
}
|
||||
|
||||
@@ -730,14 +730,14 @@ public class SlayerPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
@@ -54,7 +54,6 @@ import net.runelite.api.Varbits;
|
||||
import net.runelite.api.WorldType;
|
||||
import net.runelite.api.coords.WorldPoint;
|
||||
import net.runelite.api.events.AnimationChanged;
|
||||
import net.runelite.api.events.BoostedLevelChanged;
|
||||
import net.runelite.api.events.ChatMessage;
|
||||
import net.runelite.api.events.ConfigChanged;
|
||||
import net.runelite.api.events.GameStateChanged;
|
||||
@@ -64,6 +63,7 @@ import net.runelite.api.events.LocalPlayerDeath;
|
||||
import net.runelite.api.events.MenuOptionClicked;
|
||||
import net.runelite.api.events.NpcDespawned;
|
||||
import net.runelite.api.events.SpotAnimationChanged;
|
||||
import net.runelite.api.events.StatChanged;
|
||||
import net.runelite.api.events.VarbitChanged;
|
||||
import net.runelite.api.events.WidgetHiddenChanged;
|
||||
import net.runelite.api.widgets.Widget;
|
||||
@@ -221,7 +221,7 @@ public class TimersPlugin extends Plugin
|
||||
eventBus.subscribe(ItemContainerChanged.class, this, this::onItemContainerChanged);
|
||||
eventBus.subscribe(NpcDespawned.class, this, this::onNpcDespawned);
|
||||
eventBus.subscribe(LocalPlayerDeath.class, this, this::onLocalPlayerDeath);
|
||||
eventBus.subscribe(BoostedLevelChanged.class, this, this::onBoostedLevelChanged);
|
||||
eventBus.subscribe(StatChanged.class, this, this::onStatChanged);
|
||||
}
|
||||
|
||||
private void onVarbitChanged(VarbitChanged event)
|
||||
@@ -942,7 +942,7 @@ public class TimersPlugin extends Plugin
|
||||
infoBoxManager.removeIf(t -> t instanceof TimerTimer && ((TimerTimer) t).getTimer().isRemovedOnDeath());
|
||||
}
|
||||
|
||||
private void onBoostedLevelChanged(BoostedLevelChanged event)
|
||||
private void onStatChanged(StatChanged event)
|
||||
{
|
||||
Skill skill = event.getSkill();
|
||||
|
||||
|
||||
@@ -31,13 +31,12 @@ import java.awt.image.BufferedImage;
|
||||
import java.util.Arrays;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
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;
|
||||
@@ -189,7 +188,7 @@ public class WorldMapPlugin extends Plugin
|
||||
private void addSubscriptions()
|
||||
{
|
||||
eventBus.subscribe(ConfigChanged.class, this, this::onConfigChanged);
|
||||
eventBus.subscribe(ExperienceChanged.class, this, this::onExperienceChanged);
|
||||
eventBus.subscribe(StatChanged.class, this, this::onStatChanged);
|
||||
eventBus.subscribe(WidgetLoaded.class, this, this::onWidgetLoaded);
|
||||
}
|
||||
|
||||
@@ -204,25 +203,29 @@ public class WorldMapPlugin extends Plugin
|
||||
updateShownIcons();
|
||||
}
|
||||
|
||||
private void onExperienceChanged(ExperienceChanged event)
|
||||
private 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,8 +39,8 @@ import net.runelite.api.Client;
|
||||
import net.runelite.api.Experience;
|
||||
import net.runelite.api.Skill;
|
||||
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.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
@@ -133,15 +133,15 @@ public class XpGlobesPlugin extends Plugin
|
||||
private void addSubscriptions()
|
||||
{
|
||||
eventBus.subscribe(ConfigChanged.class, this, this::onConfigChanged);
|
||||
eventBus.subscribe(ExperienceChanged.class, this, this::onExperienceChanged);
|
||||
eventBus.subscribe(StatChanged.class, this, this::onStatChanged);
|
||||
eventBus.subscribe(GameStateChanged.class, this, this::onGameStateChanged);
|
||||
}
|
||||
|
||||
private void onExperienceChanged(ExperienceChanged event)
|
||||
private 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];
|
||||
|
||||
|
||||
@@ -53,12 +53,12 @@ import net.runelite.api.Skill;
|
||||
import net.runelite.api.VarPlayer;
|
||||
import net.runelite.api.WorldType;
|
||||
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.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;
|
||||
@@ -195,7 +195,7 @@ public class XpTrackerPlugin extends Plugin
|
||||
{
|
||||
eventBus.subscribe(ConfigChanged.class, this, this::onConfigChanged);
|
||||
eventBus.subscribe(GameStateChanged.class, this, this::onGameStateChanged);
|
||||
eventBus.subscribe(ExperienceChanged.class, this, this::onExperienceChanged);
|
||||
eventBus.subscribe(StatChanged.class, this, this::onStatChanged);
|
||||
eventBus.subscribe(NpcDespawned.class, this, this::onNpcDespawned);
|
||||
eventBus.subscribe(GameTick.class, this, this::onGameTick);
|
||||
eventBus.subscribe(MenuEntryAdded.class, this, this::onMenuEntryAdded);
|
||||
@@ -371,11 +371,11 @@ public class XpTrackerPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
void onExperienceChanged(ExperienceChanged event)
|
||||
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;
|
||||
|
||||
@@ -502,6 +502,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
|
||||
}
|
||||
|
||||
graphics.translate(point.x, point.y);
|
||||
overlay.getBounds().setLocation(point);
|
||||
|
||||
final Dimension overlayDimension;
|
||||
try
|
||||
@@ -515,7 +516,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()
|
||||
|
||||
@@ -40,10 +40,10 @@ import net.runelite.api.Skill;
|
||||
import net.runelite.api.Varbits;
|
||||
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.VarbitChanged;
|
||||
import net.runelite.api.events.StatChanged;
|
||||
import net.runelite.api.widgets.Widget;
|
||||
import net.runelite.api.widgets.WidgetInfo;
|
||||
import net.runelite.client.Notifier;
|
||||
@@ -368,9 +368,6 @@ public class SlayerPluginTest
|
||||
slayerPlugin.getCurrentTask().setTaskName("cows");
|
||||
slayerPlugin.getCurrentTask().setAmount(42);
|
||||
|
||||
final ExperienceChanged experienceChanged = new ExperienceChanged();
|
||||
experienceChanged.setSkill(Skill.SLAYER);
|
||||
|
||||
ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_COMPLETE, null, 0);
|
||||
slayerPlugin.onChatMessage(chatMessageEvent);
|
||||
|
||||
@@ -462,16 +459,23 @@ 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.setTask("Dagannoth", 143, 143, true, 0);
|
||||
|
||||
when(client.getSkillExperience(Skill.SLAYER)).thenReturn(110);
|
||||
slayerPlugin.onExperienceChanged(experienceChanged);
|
||||
statChanged = new StatChanged(
|
||||
Skill.SLAYER,
|
||||
110,
|
||||
2,
|
||||
2
|
||||
);
|
||||
slayerPlugin.onStatChanged(statChanged);
|
||||
|
||||
assertEquals(142, slayerPlugin.getCurrentTask().getAmount());
|
||||
}
|
||||
@@ -483,17 +487,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.setTask("Monster", 98, 98, true, 0);
|
||||
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.getCurrentTask().getAmount());
|
||||
}
|
||||
@@ -505,23 +516,35 @@ 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.setTask("TzTok-Jad", 1, 1, true, 0);
|
||||
|
||||
// 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.getCurrentTask().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.getCurrentTask().getAmount());
|
||||
}
|
||||
@@ -533,23 +556,35 @@ 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.setTask("TzKal-Zuk", 1, 1, true, 0);
|
||||
|
||||
// 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.getCurrentTask().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.getCurrentTask().getAmount());
|
||||
}
|
||||
@@ -561,16 +596,23 @@ 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.setTask("Bears", 35, 35, true, 0);
|
||||
|
||||
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.getCurrentTask().getAmount());
|
||||
}
|
||||
|
||||
@@ -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(GameTick.INSTANCE);
|
||||
|
||||
// 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);
|
||||
|
||||
@@ -77,13 +77,11 @@ import net.runelite.api.WidgetNode;
|
||||
import net.runelite.api.WorldType;
|
||||
import net.runelite.api.coords.LocalPoint;
|
||||
import net.runelite.api.coords.WorldPoint;
|
||||
import net.runelite.api.events.BoostedLevelChanged;
|
||||
import net.runelite.api.events.CanvasSizeChanged;
|
||||
import net.runelite.api.events.ChatMessage;
|
||||
import net.runelite.api.events.ClanChanged;
|
||||
import net.runelite.api.events.ClientTick;
|
||||
import net.runelite.api.events.DraggingWidgetChanged;
|
||||
import net.runelite.api.events.ExperienceChanged;
|
||||
import net.runelite.api.events.GameStateChanged;
|
||||
import net.runelite.api.events.GrandExchangeOfferChanged;
|
||||
import net.runelite.api.events.Menu;
|
||||
@@ -96,6 +94,7 @@ import net.runelite.api.events.PlayerDespawned;
|
||||
import net.runelite.api.events.PlayerMenuOptionsChanged;
|
||||
import net.runelite.api.events.PlayerSpawned;
|
||||
import net.runelite.api.events.ResizeableChanged;
|
||||
import net.runelite.api.events.StatChanged;
|
||||
import net.runelite.api.events.UsernameChanged;
|
||||
import net.runelite.api.events.VarbitChanged;
|
||||
import net.runelite.api.events.VolumeChanged;
|
||||
@@ -1039,15 +1038,19 @@ public abstract class RSClientMixin implements RSClient
|
||||
@Inject
|
||||
public static void experiencedChanged(int idx)
|
||||
{
|
||||
ExperienceChanged experienceChanged = new ExperienceChanged();
|
||||
Skill[] possibleSkills = Skill.values();
|
||||
|
||||
// We subtract one here because 'Overall' isn't considered a skill that's updated.
|
||||
if (idx < possibleSkills.length - 1)
|
||||
{
|
||||
Skill updatedSkill = possibleSkills[idx];
|
||||
experienceChanged.setSkill(updatedSkill);
|
||||
client.getCallbacks().post(ExperienceChanged.class, experienceChanged);
|
||||
StatChanged statChanged = new StatChanged(
|
||||
updatedSkill,
|
||||
client.getSkillExperience(updatedSkill),
|
||||
client.getRealSkillLevel(updatedSkill),
|
||||
client.getBoostedSkillLevel(updatedSkill)
|
||||
);
|
||||
client.getCallbacks().post(StatChanged.class, statChanged);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1060,9 +1063,13 @@ public abstract class RSClientMixin implements RSClient
|
||||
if (idx >= 0 && idx < skills.length - 1)
|
||||
{
|
||||
Skill updatedSkill = skills[idx];
|
||||
BoostedLevelChanged boostedLevelChanged = new BoostedLevelChanged();
|
||||
boostedLevelChanged.setSkill(updatedSkill);
|
||||
client.getCallbacks().post(BoostedLevelChanged.class, boostedLevelChanged);
|
||||
StatChanged statChanged = new StatChanged(
|
||||
updatedSkill,
|
||||
client.getSkillExperience(updatedSkill),
|
||||
client.getRealSkillLevel(updatedSkill),
|
||||
client.getBoostedSkillLevel(updatedSkill)
|
||||
);
|
||||
client.getCallbacks().post(StatChanged.class, statChanged);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user