diff --git a/runelite-client/src/main/java/net/runelite/client/game/ChatIconManager.java b/runelite-client/src/main/java/net/runelite/client/game/ChatIconManager.java index 1637f3a3fe..5578578015 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/ChatIconManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/ChatIconManager.java @@ -38,9 +38,7 @@ import net.runelite.api.FriendsChatRank; import net.runelite.api.GameState; import net.runelite.api.IndexedSprite; import net.runelite.api.clan.ClanTitle; -import net.runelite.api.events.GameStateChanged; -import net.runelite.client.eventbus.EventBus; -import net.runelite.client.eventbus.Subscribe; +import net.runelite.client.callback.ClientThread; import net.runelite.client.util.ImageUtil; @Singleton @@ -55,15 +53,23 @@ public class ChatIconManager private BufferedImage[] friendsChatRankImages; private BufferedImage[] clanRankImages; - private int friendsChatOffset; - private int clanOffset; + private int friendsChatOffset = -1; + private int clanOffset = -1; @Inject - private ChatIconManager(Client client, SpriteManager spriteManager, EventBus eventBus) + private ChatIconManager(Client client, SpriteManager spriteManager, ClientThread clientThread) { this.client = client; this.spriteManager = spriteManager; - eventBus.register(this); + clientThread.invokeLater(() -> + { + if (client.getGameState().getState() >= GameState.LOGIN_SCREEN.getState()) + { + loadRankIcons(); + return true; + } + return false; + }); } @Nullable @@ -87,22 +93,13 @@ public class ChatIconManager public int getIconNumber(final FriendsChatRank friendsChatRank) { - return friendsChatOffset + friendsChatRank.ordinal() - 1; + return friendsChatOffset == -1 ? -1 : friendsChatOffset + friendsChatRank.ordinal() - 1; } public int getIconNumber(final ClanTitle clanTitle) { int rank = clanTitle.getId(); - return clanOffset + clanRankToIdx(rank); - } - - @Subscribe - public void onGameStateChanged(GameStateChanged gameStateChanged) - { - if (gameStateChanged.getGameState() == GameState.LOGIN_SCREEN && friendsChatOffset == 0) - { - loadRankIcons(); - } + return clanOffset == -1 ? -1 : clanOffset + clanRankToIdx(rank); } private void loadRankIcons() diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chatchannel/ChatChannelPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/chatchannel/ChatChannelPlugin.java index d1277b981d..7268e6aaf8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/chatchannel/ChatChannelPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/chatchannel/ChatChannelPlugin.java @@ -632,18 +632,21 @@ public class ChatChannelPlugin extends Plugin if (rank != null && rank != FriendsChatRank.UNRANKED) { int iconNumber = chatIconManager.getIconNumber(rank); - final String img = ""; - if (message.getType() == ChatMessageType.FRIENDSCHAT) + if (iconNumber > -1) { - message.getMessageNode() - .setSender(message.getMessageNode().getSender() + " " + img); + final String img = ""; + if (message.getType() == ChatMessageType.FRIENDSCHAT) + { + message.getMessageNode() + .setSender(message.getMessageNode().getSender() + " " + img); + } + else + { + message.getMessageNode() + .setName(img + message.getMessageNode().getName()); + } + client.refreshChat(); } - else - { - message.getMessageNode() - .setName(img + message.getMessageNode().getName()); - } - client.refreshChat(); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/lowmemory/LowMemoryPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/lowmemory/LowMemoryPlugin.java index 4e980af0da..a8c67a0a56 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/lowmemory/LowMemoryPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/lowmemory/LowMemoryPlugin.java @@ -29,7 +29,6 @@ import javax.inject.Inject; import net.runelite.api.Client; import net.runelite.api.GameState; import net.runelite.api.events.BeforeRender; -import net.runelite.api.events.GameStateChanged; import net.runelite.client.callback.ClientThread; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; @@ -57,10 +56,18 @@ public class LowMemoryPlugin extends Plugin @Override protected void startUp() { - if (client.getGameState() == GameState.LOGGED_IN) + clientThread.invoke(() -> { - clientThread.invoke(() -> client.changeMemoryMode(config.lowDetail())); - } + // When the client starts it initializes the texture size based on the memory mode setting. + // Don't set low memory before the login screen is ready to prevent loading the low detail textures, + // which breaks the gpu plugin due to it requiring the 128x128px textures + if (client.getGameState().getState() >= GameState.LOGIN_SCREEN.getState()) + { + client.changeMemoryMode(config.lowDetail()); + return true; + } + return false; + }); } @Override @@ -80,19 +87,13 @@ public class LowMemoryPlugin extends Plugin { if (configChanged.getGroup().equals(LowMemoryConfig.GROUP)) { - clientThread.invoke(() -> client.changeMemoryMode(config.lowDetail())); - } - } - - @Subscribe - public void onGameStateChanged(GameStateChanged event) - { - // When the client starts it initializes the texture size based on the memory mode setting. - // Don't set low memory before the login screen is ready to prevent loading the low detail textures, - // which breaks the gpu plugin due to it requiring the 128x128px textures - if (event.getGameState() == GameState.LOGIN_SCREEN) - { - client.changeMemoryMode(config.lowDetail()); + clientThread.invoke(() -> + { + if (client.getGameState().getState() >= GameState.LOGIN_SCREEN.getState()) + { + client.changeMemoryMode(config.lowDetail()); + } + }); } }