From fc4f18136405b4fd603161c41357e22e7d21a42c Mon Sep 17 00:00:00 2001 From: Max Weber Date: Mon, 3 Jan 2022 17:42:01 -0700 Subject: [PATCH 01/17] rl-client: keep plugin hub jars around for longer if you started 2 clients with different configs at the same time one client could delete files out from under the other while it was trying to load them, causing them to fail to load --- .../client/externalplugins/ExternalPluginManager.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/externalplugins/ExternalPluginManager.java b/runelite-client/src/main/java/net/runelite/client/externalplugins/ExternalPluginManager.java index 91f13d66f1..d5adf70d08 100644 --- a/runelite-client/src/main/java/net/runelite/client/externalplugins/ExternalPluginManager.java +++ b/runelite-client/src/main/java/net/runelite/client/externalplugins/ExternalPluginManager.java @@ -35,6 +35,8 @@ import java.io.File; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.net.URL; +import java.time.Instant; +import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; @@ -167,6 +169,9 @@ public class ExternalPluginManager SplashScreen.init(); } + Instant now = Instant.now(); + Instant keepAfter = now.minus(3, ChronoUnit.DAYS); + SplashScreen.stage(splashStart, null, "Downloading external plugins"); Set externalPlugins = new HashSet<>(); @@ -189,6 +194,7 @@ public class ExternalPluginManager { externalPlugins.add(manifest); + manifest.getJarFile().setLastModified(now.toEpochMilli()); if (!manifest.isValid()) { needsDownload.add(manifest); @@ -206,7 +212,7 @@ public class ExternalPluginManager { for (File fi : files) { - if (!keep.contains(fi)) + if (!keep.contains(fi) && fi.lastModified() < keepAfter.toEpochMilli()) { fi.delete(); } From 198724bb03c4916a2538ad63fd9b56183075aeb0 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 4 Jan 2022 16:49:58 -0500 Subject: [PATCH 02/17] api: add new head icons --- .../main/java/net/runelite/api/HeadIcon.java | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/runelite-api/src/main/java/net/runelite/api/HeadIcon.java b/runelite-api/src/main/java/net/runelite/api/HeadIcon.java index ad8f00cc08..08fe44b5bd 100644 --- a/runelite-api/src/main/java/net/runelite/api/HeadIcon.java +++ b/runelite-api/src/main/java/net/runelite/api/HeadIcon.java @@ -56,5 +56,37 @@ public enum HeadIcon /** * Protect from range and mage. (ie. used by Kalphite Queen) */ - RANGE_MAGE + RANGE_MAGE, + /** + * Protect from range and melee + */ + RANGE_MELEE, + /** + * Protect from mage and melee + */ + MAGE_MELEE, + /** + * Protect from range, mage, and melee + */ + RANGE_MAGE_MELEE, + /** + * Wrath curse + */ + WRATH, + /** + * Soult split curse + */ + SOUL_SPLIT, + /** + * Deflect melee curse + */ + DEFLECT_MELEE, + /** + * Deflect range curse + */ + DEFLECT_RANGE, + /** + * Deflect magic curse + */ + DEFLECT_MAGE; } From b0234eb01315b42b83a9ad04e2f831ad12e26e27 Mon Sep 17 00:00:00 2001 From: testing-ongithub <96100526+testing-ongithub@users.noreply.github.com> Date: Mon, 3 Jan 2022 15:08:27 -0600 Subject: [PATCH 03/17] Don't force focus on tray icon click on macOS when already focused --- .../src/main/java/net/runelite/client/util/SwingUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/util/SwingUtil.java b/runelite-client/src/main/java/net/runelite/client/util/SwingUtil.java index 08bd9613a4..2f42b94e64 100644 --- a/runelite-client/src/main/java/net/runelite/client/util/SwingUtil.java +++ b/runelite-client/src/main/java/net/runelite/client/util/SwingUtil.java @@ -184,7 +184,7 @@ public class SwingUtil @Override public void mouseClicked(MouseEvent e) { - if (OSType.getOSType() == OSType.MacOS) + if (OSType.getOSType() == OSType.MacOS && !frame.isFocused()) { // On macOS, frame.setVisible(true) only restores focus when the visibility was previously false. // The frame's visibility is not set to false when the window loses focus, so we set it manually. From 2c599768d75769191e8b092dcc5c8023ea9db098 Mon Sep 17 00:00:00 2001 From: Henry Darnell Date: Tue, 4 Jan 2022 17:51:31 -0600 Subject: [PATCH 04/17] login screen: Add random override option (#14341) --- .../plugins/loginscreen/LoginScreenOverride.java | 3 ++- .../client/plugins/loginscreen/LoginScreenPlugin.java | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenOverride.java b/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenOverride.java index ca433573f6..e083db40b0 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenOverride.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenOverride.java @@ -44,7 +44,8 @@ public enum LoginScreenOverride PRIFDDINAS("prifddinas.jpg"), THEATRE_OF_BLOOD("tob.jpg"), A_KINGDOM_DIVIDED("akd.jpg"), - CUSTOM; + CUSTOM, + RANDOM; @Getter private final String fileName; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java index a4ede4f9dc..25ca2bb80d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java @@ -33,6 +33,8 @@ import java.awt.event.KeyEvent; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; +import java.util.Arrays; +import java.util.Random; import javax.imageio.ImageIO; import javax.inject.Inject; import lombok.extern.slf4j.Slf4j; @@ -287,6 +289,14 @@ public class LoginScreenPlugin extends Plugin implements KeyListener } } } + else if (config.loginScreen() == LoginScreenOverride.RANDOM) + { + LoginScreenOverride[] filtered = Arrays.stream(LoginScreenOverride.values()) + .filter(screen -> screen.getFileName() != null) + .toArray(LoginScreenOverride[]::new); + LoginScreenOverride randomScreen = filtered[new Random().nextInt(filtered.length)]; + pixels = getFileSpritePixels(randomScreen.getFileName()); + } else { pixels = getFileSpritePixels(config.loginScreen().getFileName()); From 409a4ab4e92a74946beb1cea1920f40de3ac2419 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 4 Jan 2022 19:13:27 -0500 Subject: [PATCH 05/17] slayer plugin: support fake xpdrops --- .../client/plugins/slayer/SlayerPlugin.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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 3b35670873..0a2333ae2e 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 @@ -63,6 +63,7 @@ import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.ActorDeath; import net.runelite.api.events.ChatMessage; import net.runelite.api.events.CommandExecuted; +import net.runelite.api.events.FakeXpDrop; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; import net.runelite.api.events.HitsplatApplied; @@ -550,6 +551,21 @@ public class SlayerPlugin extends Plugin final int delta = slayerExp - cachedXp; cachedXp = slayerExp; + xpChanged(delta); + } + + @Subscribe + public void onFakeXpDrop(FakeXpDrop fakeXpDrop) + { + if (fakeXpDrop.getSkill() == SLAYER) + { + int delta = fakeXpDrop.getXp(); + xpChanged(delta); + } + } + + private void xpChanged(int delta) + { log.debug("Slayer xp change delta: {}, killed npcs: {}", delta, taggedNpcsDiedPrevTick); final Task task = Task.getTask(taskName); From ce56056e2f89372d69a9af0683cb4266c4ebaa5c Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 4 Jan 2022 18:37:50 -0500 Subject: [PATCH 06/17] ge plugin: disable fuzzy search if search event is consumed This allows other plugins which replace the search results, such as the bank tags plugin, to not get overwritten by the fuzzy search. --- .../plugins/grandexchange/GrandExchangePlugin.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangePlugin.java index 63f2c84669..18129f5870 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangePlugin.java @@ -623,14 +623,19 @@ public class GrandExchangePlugin extends Plugin } } - @Subscribe + @Subscribe( + // run after the bank tags plugin, and potentially anything + // else which wants to consume the event and override + // the search behavior + priority = -100 + ) public void onGrandExchangeSearched(GrandExchangeSearched event) { wasFuzzySearch = false; GrandExchangeSearchMode searchMode = config.geSearchMode(); final String input = client.getVar(VarClientStr.INPUT_TEXT); - if (searchMode == GrandExchangeSearchMode.DEFAULT || input.isEmpty()) + if (searchMode == GrandExchangeSearchMode.DEFAULT || input.isEmpty() || event.isConsumed()) { return; } From 1a88fcc57b64214e47610a113445baef5f05ecf0 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 5 Jan 2022 13:26:02 -0500 Subject: [PATCH 07/17] loot manager: add nex --- .../net/runelite/client/game/LootManager.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/game/LootManager.java b/runelite-client/src/main/java/net/runelite/client/game/LootManager.java index 124f7f8e94..8550aa9320 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/LootManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/LootManager.java @@ -353,6 +353,7 @@ public class LootManager case NpcID.VORKATH_8059: case NpcID.VORKATH_8060: case NpcID.VORKATH_8061: + { int x = worldLocation.getX() + 3; int y = worldLocation.getY() + 3; if (playerLocationLastTick.getX() < x) @@ -373,6 +374,27 @@ public class LootManager } worldLocation = new WorldPoint(x, y, worldLocation.getPlane()); break; + } + case NpcID.NEX: + case NpcID.NEX_11279: + case NpcID.NEX_11280: + case NpcID.NEX_11281: + case NpcID.NEX_11282: + { + // Nex loot is under the player, or under nex + LocalPoint localPoint = LocalPoint.fromWorld(client, playerLocationLastTick); + if (localPoint != null) + { + int x = localPoint.getSceneX(); + int y = localPoint.getSceneY(); + final int packed = x << 8 | y; + if (itemSpawns.containsKey(packed)) + { + return playerLocationLastTick; + } + } + break; + } } return worldLocation; From 0abe84602881ab83de43dbf79b8afca31842fd71 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 5 Jan 2022 15:46:48 -0500 Subject: [PATCH 08/17] xp updater: add seasonal worlds to wom --- .../runelite/client/plugins/xpupdater/XpUpdaterPlugin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/xpupdater/XpUpdaterPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/xpupdater/XpUpdaterPlugin.java index 4595a9f722..4a823d0727 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/xpupdater/XpUpdaterPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/xpupdater/XpUpdaterPlugin.java @@ -192,13 +192,13 @@ public class XpUpdaterPlugin extends Plugin private void updateWom(String username, EnumSet worldTypes) { if (config.wiseoldman() - && !worldTypes.contains(WorldType.SEASONAL) && !worldTypes.contains(WorldType.DEADMAN) && !worldTypes.contains(WorldType.NOSAVE_MODE)) { + String host = worldTypes.contains(WorldType.SEASONAL) ? "seasonal.wiseoldman.net" : "wiseoldman.net"; HttpUrl url = new HttpUrl.Builder() .scheme("https") - .host("wiseoldman.net") + .host(host) .addPathSegment("api") .addPathSegment("players") .addPathSegment("track") From 238b35e8f8964c5a4403da2125614e86911c4fff Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 5 Jan 2022 15:57:00 -0500 Subject: [PATCH 09/17] Use leagues hiscores for seasonal worlds --- .../client/hiscore/HiscoreEndpoint.java | 19 +++++++++++++++++++ .../chatcommands/ChatCommandsPlugin.java | 11 +++++++---- .../client/plugins/hiscore/HiscorePlugin.java | 15 ++------------- .../loottracker/LootTrackerPlugin.java | 2 +- .../opponentinfo/OpponentInfoPlugin.java | 18 ++---------------- 5 files changed, 31 insertions(+), 34 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/hiscore/HiscoreEndpoint.java b/runelite-client/src/main/java/net/runelite/client/hiscore/HiscoreEndpoint.java index 6f1c7e8b8b..0bf3e6e4e5 100644 --- a/runelite-client/src/main/java/net/runelite/client/hiscore/HiscoreEndpoint.java +++ b/runelite-client/src/main/java/net/runelite/client/hiscore/HiscoreEndpoint.java @@ -25,7 +25,9 @@ */ package net.runelite.client.hiscore; +import java.util.Set; import lombok.Getter; +import net.runelite.api.WorldType; import okhttp3.HttpUrl; @Getter @@ -47,4 +49,21 @@ public enum HiscoreEndpoint this.name = name; this.hiscoreURL = HttpUrl.get(hiscoreURL); } + + public static HiscoreEndpoint fromWorldTypes(Set worldTypes) + { + if (worldTypes.contains(WorldType.SEASONAL)) + { + // this changes between LEAGUE and TOURNAMENT + return HiscoreEndpoint.LEAGUE; + } + else if (worldTypes.contains(WorldType.DEADMAN)) + { + return HiscoreEndpoint.DEADMAN; + } + else + { + return HiscoreEndpoint.NORMAL; + } + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java index 4973401812..61da99f6fd 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java @@ -1740,9 +1740,10 @@ public class ChatCommandsPlugin extends Plugin if (chatMessage.getType() == ChatMessageType.PUBLICCHAT || chatMessage.getType() == ChatMessageType.MODCHAT) { // Public chat on a seasonal world is always seasonal or tournament hiscores, regardless of icon - if (client.getWorldType().contains(WorldType.SEASONAL)) + HiscoreEndpoint endpoint = HiscoreEndpoint.fromWorldTypes(client.getWorldType()); + if (endpoint != HiscoreEndpoint.NORMAL) { - return new HiscoreLookup(player, HiscoreEndpoint.TOURNAMENT); + return new HiscoreLookup(player, endpoint); } } @@ -1788,9 +1789,11 @@ public class ChatCommandsPlugin extends Plugin private HiscoreEndpoint getLocalHiscoreEndpointType() { EnumSet worldType = client.getWorldType(); - if (worldType.contains(WorldType.SEASONAL)) + HiscoreEndpoint endpoint = HiscoreEndpoint.fromWorldTypes(worldType); + if (endpoint != HiscoreEndpoint.NORMAL) { - return HiscoreEndpoint.TOURNAMENT; + // leagues/dmmt or dmm + return endpoint; } return toEndPoint(client.getAccountType()); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java index 8e567d37d7..693412bcb3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java @@ -26,7 +26,6 @@ package net.runelite.client.plugins.hiscore; import com.google.inject.Provides; import java.awt.image.BufferedImage; -import java.util.EnumSet; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.annotation.Nullable; @@ -39,7 +38,6 @@ import net.runelite.api.Client; import net.runelite.api.IconID; import net.runelite.api.MenuAction; import net.runelite.api.Player; -import net.runelite.api.WorldType; import net.runelite.api.events.ChatMessage; import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.MenuOptionClicked; @@ -49,6 +47,7 @@ import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.events.ConfigChanged; +import net.runelite.client.hiscore.HiscoreEndpoint; import net.runelite.client.menus.MenuManager; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; @@ -56,7 +55,6 @@ import net.runelite.client.ui.ClientToolbar; import net.runelite.client.ui.NavigationButton; import net.runelite.client.util.ImageUtil; import net.runelite.client.util.Text; -import net.runelite.client.hiscore.HiscoreEndpoint; @PluginDescriptor( name = "HiScore", @@ -240,16 +238,7 @@ public class HiscorePlugin extends Plugin { if (client != null) { - EnumSet wTypes = client.getWorldType(); - - if (wTypes.contains(WorldType.SEASONAL)) - { - return HiscoreEndpoint.TOURNAMENT; - } - else if (wTypes.contains(WorldType.DEADMAN)) - { - return HiscoreEndpoint.DEADMAN; - } + return HiscoreEndpoint.fromWorldTypes(client.getWorldType()); } return HiscoreEndpoint.NORMAL; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java index 056022045c..e407644d89 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java @@ -487,7 +487,7 @@ public class LootTrackerPlugin extends Plugin private Integer getLootWorldId() { - // For the wiki to determine drop rates based on dmm brackets + // For the wiki to determine drop rates based on dmm brackets / identify leagues drops return client.getWorldType().contains(WorldType.SEASONAL) ? client.getWorld() : null; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfoPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfoPlugin.java index 855ac8953c..17c2bf39b7 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfoPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfoPlugin.java @@ -29,7 +29,6 @@ import com.google.common.annotations.VisibleForTesting; import com.google.inject.Provides; import java.time.Duration; import java.time.Instant; -import java.util.EnumSet; import javax.inject.Inject; import lombok.AccessLevel; import lombok.Getter; @@ -39,17 +38,16 @@ import net.runelite.api.GameState; import net.runelite.api.MenuAction; import net.runelite.api.MenuEntry; import net.runelite.api.NPC; -import net.runelite.api.WorldType; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; import net.runelite.api.events.InteractingChanged; import net.runelite.api.events.MenuEntryAdded; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; +import net.runelite.client.hiscore.HiscoreEndpoint; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.ui.overlay.OverlayManager; -import net.runelite.client.hiscore.HiscoreEndpoint; @PluginDescriptor( name = "Opponent Information", @@ -115,19 +113,7 @@ public class OpponentInfoPlugin extends Plugin return; } - final EnumSet worldType = client.getWorldType(); - if (worldType.contains(WorldType.SEASONAL)) - { - hiscoreEndpoint = HiscoreEndpoint.TOURNAMENT; - } - else if (worldType.contains(WorldType.DEADMAN)) - { - hiscoreEndpoint = HiscoreEndpoint.DEADMAN; - } - else - { - hiscoreEndpoint = HiscoreEndpoint.NORMAL; - } + hiscoreEndpoint = HiscoreEndpoint.fromWorldTypes(client.getWorldType()); } @Subscribe From c19beea8cd6f3795cf2b79ed758ba86697752ff5 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 5 Jan 2022 17:06:44 -0500 Subject: [PATCH 10/17] discord: add nex boss area --- .../runelite/client/plugins/discord/DiscordGameEventType.java | 1 + 1 file changed, 1 insertion(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java index 5359796536..a7674a28b1 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java @@ -81,6 +81,7 @@ enum DiscordGameEventType BOSS_KRAKEN("Kraken", DiscordAreaType.BOSSES, 9116), BOSS_KREEARRA("Kree'arra", DiscordAreaType.BOSSES, 11346), BOSS_KRIL_TSUTSAROTH("K'ril Tsutsaroth", DiscordAreaType.BOSSES, 11603), + BOSS_NEX("Nex", DiscordAreaType.BOSSES, 11601), BOSS_NIGHTMARE("Nightmare of Ashihama", DiscordAreaType.BOSSES, 15515), BOSS_SARACHNIS("Sarachnis", DiscordAreaType.BOSSES, 7322), BOSS_SKOTIZO("Skotizo", DiscordAreaType.BOSSES, 6810), From ffd6652826cd188fad5db2ca786f89bda6e6962d Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 5 Jan 2022 17:06:50 -0500 Subject: [PATCH 11/17] ground items: add nex instance area --- .../runelite/client/plugins/grounditems/GroundItemsOverlay.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java index 8fb08840af..221094b01f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java @@ -84,6 +84,7 @@ public class GroundItemsOverlay extends Overlay private static final int GRAARDOR_REGION = 11347; private static final int KRIL_TSUTSAROTH_REGION = 11603; private static final int KREEARRA_REGION = 11346; + private static final int NEX_REGION = 11601; private static final int NIGHTMARE_REGION = 15515; private static final int TEMPOROSS_REGION = 12078; @@ -457,6 +458,7 @@ public class GroundItemsOverlay extends Overlay } else if (playerRegionID == ZILYANA_REGION || playerRegionID == GRAARDOR_REGION || playerRegionID == KRIL_TSUTSAROTH_REGION || playerRegionID == KREEARRA_REGION || + playerRegionID == NEX_REGION || playerRegionID == NIGHTMARE_REGION || playerRegionID == TEMPOROSS_REGION || playerRegionID == CLAN_HALL_REGION) { From 15665aa431ee7adbc0a66c0784d381d1680595f1 Mon Sep 17 00:00:00 2001 From: Illya Myshakov <35241874+IllyaMyshakov@users.noreply.github.com> Date: Wed, 5 Jan 2022 17:08:22 -0500 Subject: [PATCH 12/17] chat commands: add Nexling pet Co-authored-by: Illya Myshakov --- .../java/net/runelite/client/plugins/chatcommands/Pet.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/Pet.java b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/Pet.java index 9c84c17fda..2583be2d22 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/Pet.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/Pet.java @@ -79,7 +79,8 @@ enum Pet YOUNGLLEF("Youngllef", ItemID.YOUNGLLEF), LITTLE_NIGHTMARE("Little nightmare", ItemID.LITTLE_NIGHTMARE), LIL_CREATOR("Lil' creator", ItemID.LIL_CREATOR), - TINY_TEMPOR("Tiny tempor", ItemID.TINY_TEMPOR); + TINY_TEMPOR("Tiny tempor", ItemID.TINY_TEMPOR), + NEXLING("Nexling", ItemID.NEXLING); private final String name; private final Integer iconID; From 2ad48a8322967d7ea4228db492911c6150c1d3c0 Mon Sep 17 00:00:00 2001 From: Runelite auto updater Date: Wed, 5 Jan 2022 22:26:16 +0000 Subject: [PATCH 13/17] Release 1.8.9 --- cache-client/pom.xml | 2 +- cache-updater/pom.xml | 2 +- cache/pom.xml | 2 +- pom.xml | 4 ++-- runelite-api/pom.xml | 2 +- runelite-client/pom.xml | 2 +- runelite-jshell/pom.xml | 2 +- runelite-script-assembler-plugin/pom.xml | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cache-client/pom.xml b/cache-client/pom.xml index 3d03f7f633..4f396c7a0e 100644 --- a/cache-client/pom.xml +++ b/cache-client/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.8.9-SNAPSHOT + 1.8.9 cache-client diff --git a/cache-updater/pom.xml b/cache-updater/pom.xml index e6be17e8fe..56c9dacf99 100644 --- a/cache-updater/pom.xml +++ b/cache-updater/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.8.9-SNAPSHOT + 1.8.9 Cache Updater diff --git a/cache/pom.xml b/cache/pom.xml index a0a550829f..c9f5481a13 100644 --- a/cache/pom.xml +++ b/cache/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.8.9-SNAPSHOT + 1.8.9 cache diff --git a/pom.xml b/pom.xml index b1c83af9b6..7ac0ef7b86 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.8.9-SNAPSHOT + 1.8.9 pom RuneLite @@ -63,7 +63,7 @@ https://github.com/runelite/runelite scm:git:git://github.com/runelite/runelite scm:git:git@github.com:runelite/runelite - HEAD + runelite-parent-1.8.9 diff --git a/runelite-api/pom.xml b/runelite-api/pom.xml index 69e9fb736b..e58caf8304 100644 --- a/runelite-api/pom.xml +++ b/runelite-api/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.8.9-SNAPSHOT + 1.8.9 runelite-api diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml index 1f59ac20b6..226fde3d8d 100644 --- a/runelite-client/pom.xml +++ b/runelite-client/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.8.9-SNAPSHOT + 1.8.9 client diff --git a/runelite-jshell/pom.xml b/runelite-jshell/pom.xml index 93a6cf78aa..8b7733094e 100644 --- a/runelite-jshell/pom.xml +++ b/runelite-jshell/pom.xml @@ -30,7 +30,7 @@ net.runelite runelite-parent - 1.8.9-SNAPSHOT + 1.8.9 jshell diff --git a/runelite-script-assembler-plugin/pom.xml b/runelite-script-assembler-plugin/pom.xml index 3e2594f3da..31dde7e234 100644 --- a/runelite-script-assembler-plugin/pom.xml +++ b/runelite-script-assembler-plugin/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.8.9-SNAPSHOT + 1.8.9 script-assembler-plugin From ab082fc8b83547fe4f180542e41f1555e9b49d1f Mon Sep 17 00:00:00 2001 From: Runelite auto updater Date: Wed, 5 Jan 2022 22:26:19 +0000 Subject: [PATCH 14/17] Bump for 1.8.10-SNAPSHOT --- cache-client/pom.xml | 2 +- cache-updater/pom.xml | 2 +- cache/pom.xml | 2 +- pom.xml | 4 ++-- runelite-api/pom.xml | 2 +- runelite-client/pom.xml | 2 +- runelite-jshell/pom.xml | 2 +- runelite-script-assembler-plugin/pom.xml | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cache-client/pom.xml b/cache-client/pom.xml index 4f396c7a0e..a1316deb29 100644 --- a/cache-client/pom.xml +++ b/cache-client/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.8.9 + 1.8.10-SNAPSHOT cache-client diff --git a/cache-updater/pom.xml b/cache-updater/pom.xml index 56c9dacf99..0d9dd92647 100644 --- a/cache-updater/pom.xml +++ b/cache-updater/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.8.9 + 1.8.10-SNAPSHOT Cache Updater diff --git a/cache/pom.xml b/cache/pom.xml index c9f5481a13..999d5a0a5c 100644 --- a/cache/pom.xml +++ b/cache/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.8.9 + 1.8.10-SNAPSHOT cache diff --git a/pom.xml b/pom.xml index 7ac0ef7b86..0bd2938b26 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.8.9 + 1.8.10-SNAPSHOT pom RuneLite @@ -63,7 +63,7 @@ https://github.com/runelite/runelite scm:git:git://github.com/runelite/runelite scm:git:git@github.com:runelite/runelite - runelite-parent-1.8.9 + HEAD diff --git a/runelite-api/pom.xml b/runelite-api/pom.xml index e58caf8304..9f0d692fe8 100644 --- a/runelite-api/pom.xml +++ b/runelite-api/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.8.9 + 1.8.10-SNAPSHOT runelite-api diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml index 226fde3d8d..f4fd5bd7ea 100644 --- a/runelite-client/pom.xml +++ b/runelite-client/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.8.9 + 1.8.10-SNAPSHOT client diff --git a/runelite-jshell/pom.xml b/runelite-jshell/pom.xml index 8b7733094e..e502e4ac61 100644 --- a/runelite-jshell/pom.xml +++ b/runelite-jshell/pom.xml @@ -30,7 +30,7 @@ net.runelite runelite-parent - 1.8.9 + 1.8.10-SNAPSHOT jshell diff --git a/runelite-script-assembler-plugin/pom.xml b/runelite-script-assembler-plugin/pom.xml index 31dde7e234..232d065b8b 100644 --- a/runelite-script-assembler-plugin/pom.xml +++ b/runelite-script-assembler-plugin/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.8.9 + 1.8.10-SNAPSHOT script-assembler-plugin From c780009a99cf087c77f2cac3f549a137f52b47eb Mon Sep 17 00:00:00 2001 From: Owain van Brakel Date: Thu, 6 Jan 2022 00:04:53 +0100 Subject: [PATCH 15/17] project: Bump RL version --- buildSrc/src/main/kotlin/Dependencies.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt index 0443812cbf..10768fe324 100644 --- a/buildSrc/src/main/kotlin/Dependencies.kt +++ b/buildSrc/src/main/kotlin/Dependencies.kt @@ -25,7 +25,7 @@ object ProjectVersions { const val launcherVersion = "2.2.0" - const val rlVersion = "1.8.8" + const val rlVersion = "1.8.9" const val openosrsVersion = "4.17.2" From bdbcfbe4163bbfaf7c90a8adc75c365f0888b6ca Mon Sep 17 00:00:00 2001 From: Owain van Brakel Date: Thu, 6 Jan 2022 00:52:57 +0100 Subject: [PATCH 16/17] project: Mixins --- .../runelite/mixins/RSGameObjectMixin.java | 2 +- .../mixins/RSNPCCompositionMixin.java | 34 ++++++++++---- .../net/runelite/mixins/RSPlayerMixin.java | 47 ++++++++++++++++--- .../runelite/rs/api/RSFloorDecoration.java | 4 ++ .../net/runelite/rs/api/RSGameObject.java | 3 +- .../net/runelite/rs/api/RSScriptEvent.java | 3 ++ .../net/runelite/rs/api/RSWallDecoration.java | 4 ++ 7 files changed, 81 insertions(+), 16 deletions(-) diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSGameObjectMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSGameObjectMixin.java index 320682dc7d..ff35b491ba 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSGameObjectMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSGameObjectMixin.java @@ -121,7 +121,7 @@ public abstract class RSGameObjectMixin implements RSGameObject public Angle getOrientation() { int orientation = getModelOrientation(); - int rotation = (getFlags() >> 6) & 3; + int rotation = (getConfig() >> 6) & 3; return new Angle(rotation * 512 + orientation); } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSNPCCompositionMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSNPCCompositionMixin.java index 264f0a5b4f..69c6a04bd2 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSNPCCompositionMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSNPCCompositionMixin.java @@ -1,10 +1,6 @@ package net.runelite.mixins; import net.runelite.api.HeadIcon; -import static net.runelite.api.HeadIcon.MAGIC; -import static net.runelite.api.HeadIcon.MELEE; -import static net.runelite.api.HeadIcon.RANGED; -import static net.runelite.api.HeadIcon.RANGE_MAGE; import net.runelite.api.events.NpcActionChanged; import net.runelite.api.mixins.FieldHook; import net.runelite.api.mixins.Inject; @@ -26,13 +22,35 @@ public abstract class RSNPCCompositionMixin implements RSNPCComposition switch (getRsOverheadIcon()) { case 0: - return MELEE; + return HeadIcon.MELEE; case 1: - return RANGED; + return HeadIcon.RANGED; case 2: - return MAGIC; + return HeadIcon.MAGIC; + case 3: + return HeadIcon.RETRIBUTION; + case 4: + return HeadIcon.SMITE; + case 5: + return HeadIcon.REDEMPTION; case 6: - return RANGE_MAGE; + return HeadIcon.RANGE_MAGE; + case 7: + return HeadIcon.RANGE_MELEE; + case 8: + return HeadIcon.MAGE_MELEE; + case 9: + return HeadIcon.RANGE_MAGE_MELEE; + case 10: + return HeadIcon.WRATH; + case 11: + return HeadIcon.SOUL_SPLIT; + case 12: + return HeadIcon.DEFLECT_MELEE; + case 13: + return HeadIcon.DEFLECT_RANGE; + case 14: + return HeadIcon.DEFLECT_MAGE; default: return null; } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSPlayerMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSPlayerMixin.java index 661f076b0c..982650c026 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSPlayerMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSPlayerMixin.java @@ -31,7 +31,13 @@ import net.runelite.api.HeadIcon; import net.runelite.api.Model; import net.runelite.api.Perspective; import net.runelite.api.SkullIcon; -import static net.runelite.api.SkullIcon.*; +import static net.runelite.api.SkullIcon.DEAD_MAN_FIVE; +import static net.runelite.api.SkullIcon.DEAD_MAN_FOUR; +import static net.runelite.api.SkullIcon.DEAD_MAN_ONE; +import static net.runelite.api.SkullIcon.DEAD_MAN_THREE; +import static net.runelite.api.SkullIcon.DEAD_MAN_TWO; +import static net.runelite.api.SkullIcon.SKULL; +import static net.runelite.api.SkullIcon.SKULL_FIGHT_PIT; import net.runelite.api.coords.LocalPoint; import net.runelite.api.events.OverheadPrayerChanged; import net.runelite.api.events.PlayerChanged; @@ -129,12 +135,41 @@ public abstract class RSPlayerMixin implements RSPlayer @Inject private HeadIcon getHeadIcon(int overheadIcon) { - if (overheadIcon == -1) + switch (overheadIcon) { - return null; + case 0: + return HeadIcon.MELEE; + case 1: + return HeadIcon.RANGED; + case 2: + return HeadIcon.MAGIC; + case 3: + return HeadIcon.RETRIBUTION; + case 4: + return HeadIcon.SMITE; + case 5: + return HeadIcon.REDEMPTION; + case 6: + return HeadIcon.RANGE_MAGE; + case 7: + return HeadIcon.RANGE_MELEE; + case 8: + return HeadIcon.MAGE_MELEE; + case 9: + return HeadIcon.RANGE_MAGE_MELEE; + case 10: + return HeadIcon.WRATH; + case 11: + return HeadIcon.SOUL_SPLIT; + case 12: + return HeadIcon.DEFLECT_MELEE; + case 13: + return HeadIcon.DEFLECT_RANGE; + case 14: + return HeadIcon.DEFLECT_MAGE; + default: + return null; } - - return HeadIcon.values()[overheadIcon]; } @Inject @@ -269,7 +304,7 @@ public abstract class RSPlayerMixin implements RSPlayer { client.getCallbacks().post(new PlayerChanged(this)); } - + @Copy("read") @Replace("read") @SuppressWarnings("InfiniteRecursion") diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSFloorDecoration.java b/runescape-api/src/main/java/net/runelite/rs/api/RSFloorDecoration.java index 30e5380b5f..59de7fa351 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSFloorDecoration.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSFloorDecoration.java @@ -20,4 +20,8 @@ public interface RSFloorDecoration extends GroundObject RSRenderable getRenderable(); void setPlane(int plane); + + @Import("flags") + @Override + int getConfig(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSGameObject.java b/runescape-api/src/main/java/net/runelite/rs/api/RSGameObject.java index 616eabb9be..b2e9c19475 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSGameObject.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSGameObject.java @@ -39,7 +39,8 @@ public interface RSGameObject extends GameObject long getHash(); @Import("flags") - int getFlags(); + @Override + int getConfig(); int getPlane(); diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java b/runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java index 7c2dfc8e00..929256f9e3 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java @@ -55,6 +55,9 @@ public interface RSScriptEvent extends ScriptEvent @Import("mouseX") int getMouseX(); + @Import("mouseY") + int getMouseY(); + @Import("keyTyped") // shit name int getTypedKeyCode(); diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSWallDecoration.java b/runescape-api/src/main/java/net/runelite/rs/api/RSWallDecoration.java index bfceac72a4..fabfc5e608 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSWallDecoration.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSWallDecoration.java @@ -33,4 +33,8 @@ public interface RSWallDecoration extends DecorativeObject RSRenderable getRenderable2(); void setPlane(int plane); + + @Import("flags") + @Override + int getConfig(); } From e9e33e7a95d8bbc3f16ca40695195a59b1ee3140 Mon Sep 17 00:00:00 2001 From: Owain van Brakel Date: Thu, 6 Jan 2022 00:53:30 +0100 Subject: [PATCH 17/17] project: Bump OpenOSRS version --- buildSrc/src/main/kotlin/Dependencies.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt index 10768fe324..b093966918 100644 --- a/buildSrc/src/main/kotlin/Dependencies.kt +++ b/buildSrc/src/main/kotlin/Dependencies.kt @@ -27,7 +27,7 @@ object ProjectVersions { const val launcherVersion = "2.2.0" const val rlVersion = "1.8.9" - const val openosrsVersion = "4.17.2" + const val openosrsVersion = "4.18.0" const val rsversion = 202 const val cacheversion = 165