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 ac7b5cb791..f33163eb23 100644 --- a/runelite-client/src/main/java/net/runelite/client/RuneLite.java +++ b/runelite-client/src/main/java/net/runelite/client/RuneLite.java @@ -228,6 +228,7 @@ public class RuneLite // Register event listeners eventBus.register(clientUI); eventBus.register(overlayRenderer); + eventBus.register(overlayManager); eventBus.register(drawManager); eventBus.register(menuManager); eventBus.register(chatMessageManager); diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayManager.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayManager.java index 1ee29f6e41..9dd419573c 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayManager.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayManager.java @@ -25,6 +25,7 @@ package net.runelite.client.ui.overlay; import com.google.common.annotations.VisibleForTesting; +import com.google.common.eventbus.Subscribe; import java.awt.Dimension; import java.awt.Point; import java.util.ArrayList; @@ -41,6 +42,7 @@ import lombok.Getter; import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigManager; import net.runelite.client.config.RuneLiteConfig; +import net.runelite.client.events.PluginChanged; /** * Manages state of all game overlays @@ -90,6 +92,13 @@ public class OverlayManager this.configManager = configManager; } + @Subscribe + public void onPluginChanged(final PluginChanged event) + { + overlays.forEach(this::loadOverlay); + rebuildOverlayLayers(); + } + /** * Gets all of the overlays on a layer * @@ -116,12 +125,7 @@ public class OverlayManager // Add is always true overlays.add(overlay); - final Point location = loadOverlayLocation(overlay); - overlay.setPreferredLocation(location); - final Dimension size = loadOverlaySize(overlay); - overlay.setPreferredSize(size); - final OverlayPosition position = loadOverlayPosition(overlay); - overlay.setPreferredPosition(position); + loadOverlay(overlay); rebuildOverlayLayers(); return true; } @@ -226,6 +230,16 @@ public class OverlayManager overlayLayers.forEach((layer, value) -> overlayLayers.put(layer, Collections.unmodifiableList(value))); } + private void loadOverlay(final Overlay overlay) + { + final Point location = loadOverlayLocation(overlay); + overlay.setPreferredLocation(location); + final Dimension size = loadOverlaySize(overlay); + overlay.setPreferredSize(size); + final OverlayPosition position = loadOverlayPosition(overlay); + overlay.setPreferredPosition(position); + } + private void saveOverlayLocation(final Overlay overlay) { final String key = overlay.getName() + OVERLAY_CONFIG_PREFERRED_LOCATION;