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 195feefaf4..66270da3ad 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 @@ -26,7 +26,10 @@ package net.runelite.client.plugins.lowmemory; import javax.inject.Inject; import net.runelite.api.Client; +import net.runelite.api.GameState; +import net.runelite.api.events.GameStateChanged; import net.runelite.client.callback.ClientThread; +import net.runelite.client.eventbus.Subscribe; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; @@ -47,7 +50,10 @@ public class LowMemoryPlugin extends Plugin @Override protected void startUp() { - clientThread.invoke(() -> client.changeMemoryMode(true)); + if (client.getGameState() == GameState.LOGGED_IN) + { + clientThread.invoke(() -> client.changeMemoryMode(true)); + } } @Override @@ -55,4 +61,16 @@ public class LowMemoryPlugin extends Plugin { clientThread.invoke(() -> client.changeMemoryMode(false)); } + + @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(true); + } + } }