From dff0ce007d362033e1354e930a18ec793a3eed2b Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Sat, 31 Mar 2018 20:56:31 +0200 Subject: [PATCH] Invalidate item manager cache on hopping and login Invalidate item manager composition cache when person is hopping or goes to login screen to prevent issues with changing from p2p to f2p worlds. Signed-off-by: Tomas Slusny --- .../src/main/java/net/runelite/client/RuneLite.java | 5 +++++ .../java/net/runelite/client/game/ItemManager.java | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/RuneLite.java b/runelite-client/src/main/java/net/runelite/client/RuneLite.java index 1a7fb66b70..ba1a951baf 100644 --- a/runelite-client/src/main/java/net/runelite/client/RuneLite.java +++ b/runelite-client/src/main/java/net/runelite/client/RuneLite.java @@ -43,6 +43,7 @@ import net.runelite.client.account.SessionManager; import net.runelite.client.chat.ChatMessageManager; import net.runelite.client.config.ConfigManager; import net.runelite.client.discord.DiscordService; +import net.runelite.client.game.ItemManager; import net.runelite.client.menus.MenuManager; import net.runelite.client.plugins.PluginManager; import net.runelite.client.ui.ClientUI; @@ -97,6 +98,9 @@ public class RuneLite @Inject private TitleToolbar titleToolbar; + @Inject + private ItemManager itemManager; + Client client; public static void main(String[] args) throws Exception @@ -156,6 +160,7 @@ public class RuneLite eventBus.register(menuManager); eventBus.register(chatMessageManager); eventBus.register(pluginManager); + eventBus.register(itemManager); // Load user configuration configManager.load(); diff --git a/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java b/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java index edffbf23b2..6526a226bf 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java @@ -27,6 +27,7 @@ package net.runelite.client.game; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; +import com.google.common.eventbus.Subscribe; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.ArrayList; @@ -43,8 +44,10 @@ import lombok.Value; import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; import static net.runelite.api.Constants.CLIENT_DEFAULT_ZOOM; +import net.runelite.api.GameState; import net.runelite.api.ItemComposition; import net.runelite.api.SpritePixels; +import net.runelite.api.events.GameStateChanged; import net.runelite.http.api.item.ItemClient; import net.runelite.http.api.item.ItemPrice; import net.runelite.http.api.item.SearchResult; @@ -128,6 +131,15 @@ public class ItemManager }); } + @Subscribe + public void onGameStateChanged(final GameStateChanged event) + { + if (event.getGameState() == GameState.HOPPING || event.getGameState() == GameState.LOGIN_SCREEN) + { + itemCompositions.invalidateAll(); + } + } + /** * Look up an item's price asynchronously. *