From 380d4faba70935b43c0c19942aa6cf270706308d Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Wed, 14 Mar 2018 17:48:25 +0100 Subject: [PATCH] Fix NPEs on startup from PlayerIndicators - Change the PlayerIndicators model to use injection - Create new set from overlays when getOverlays is called Signed-off-by: Tomas Slusny --- .../PlayerIndicatorsMinimapOverlay.java | 6 ++++- .../PlayerIndicatorsOverlay.java | 6 ++++- .../PlayerIndicatorsPlugin.java | 22 +++---------------- .../PlayerIndicatorsService.java | 6 ++++- 4 files changed, 18 insertions(+), 22 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsMinimapOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsMinimapOverlay.java index 0dc7ffc046..29c8dfc76e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsMinimapOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsMinimapOverlay.java @@ -28,6 +28,8 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Point; +import javax.inject.Inject; +import javax.inject.Singleton; import net.runelite.api.Player; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayLayer; @@ -35,12 +37,14 @@ import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPriority; import net.runelite.client.ui.overlay.OverlayUtil; +@Singleton public class PlayerIndicatorsMinimapOverlay extends Overlay { private final PlayerIndicatorsService playerIndicatorsService; private final PlayerIndicatorsConfig config; - PlayerIndicatorsMinimapOverlay(PlayerIndicatorsConfig config, PlayerIndicatorsService playerIndicatorsService) + @Inject + private PlayerIndicatorsMinimapOverlay(PlayerIndicatorsConfig config, PlayerIndicatorsService playerIndicatorsService) { this.config = config; this.playerIndicatorsService = playerIndicatorsService; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsOverlay.java index 352939a1f7..09eabf6c16 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsOverlay.java @@ -29,18 +29,22 @@ import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Polygon; +import javax.inject.Inject; +import javax.inject.Singleton; import net.runelite.api.Player; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPriority; import net.runelite.client.ui.overlay.OverlayUtil; +@Singleton public class PlayerIndicatorsOverlay extends Overlay { private final PlayerIndicatorsService playerIndicatorsService; private final PlayerIndicatorsConfig config; - PlayerIndicatorsOverlay(PlayerIndicatorsConfig config, PlayerIndicatorsService playerIndicatorsService) + @Inject + private PlayerIndicatorsOverlay(PlayerIndicatorsConfig config, PlayerIndicatorsService playerIndicatorsService) { this.config = config; this.playerIndicatorsService = playerIndicatorsService; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsPlugin.java index ed761b2392..914eaf431d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsPlugin.java @@ -28,7 +28,6 @@ import com.google.common.collect.Sets; import com.google.inject.Provides; import java.util.Collection; import javax.inject.Inject; -import net.runelite.api.Client; import net.runelite.client.config.ConfigManager; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; @@ -40,12 +39,10 @@ import net.runelite.client.ui.overlay.Overlay; public class PlayerIndicatorsPlugin extends Plugin { @Inject - private Client client; + private PlayerIndicatorsOverlay playerIndicatorsOverlay; @Inject - private PlayerIndicatorsConfig config; - - private Collection overlays; + private PlayerIndicatorsMinimapOverlay playerIndicatorsMinimapOverlay; @Provides PlayerIndicatorsConfig provideConfig(ConfigManager configManager) @@ -53,22 +50,9 @@ public class PlayerIndicatorsPlugin extends Plugin return configManager.getConfig(PlayerIndicatorsConfig.class); } - @Override - protected void startUp() throws Exception - { - final PlayerIndicatorsService playerIndicatorsService = - new PlayerIndicatorsService(client, config); - final PlayerIndicatorsOverlay playerIndicatorsOverlay = - new PlayerIndicatorsOverlay(config, playerIndicatorsService); - final PlayerIndicatorsMinimapOverlay playerIndicatorsMinimapOverlay = - new PlayerIndicatorsMinimapOverlay(config, playerIndicatorsService); - - overlays = Sets.newHashSet(playerIndicatorsOverlay, playerIndicatorsMinimapOverlay); - } - @Override public Collection getOverlays() { - return overlays; + return Sets.newHashSet(playerIndicatorsOverlay, playerIndicatorsMinimapOverlay); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsService.java b/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsService.java index 6746839eaa..b04c702444 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsService.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsService.java @@ -26,15 +26,19 @@ package net.runelite.client.plugins.playerindicators; import java.awt.Color; import java.util.function.BiConsumer; +import javax.inject.Inject; +import javax.inject.Singleton; import net.runelite.api.Client; import net.runelite.api.Player; +@Singleton public class PlayerIndicatorsService { private final Client client; private final PlayerIndicatorsConfig config; - PlayerIndicatorsService(Client client, PlayerIndicatorsConfig config) + @Inject + private PlayerIndicatorsService(Client client, PlayerIndicatorsConfig config) { this.config = config; this.client = client;