diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/OPRSExternalPluginManager.java b/runelite-client/src/main/java/net/runelite/client/plugins/OPRSExternalPluginManager.java index 81c63f272d..a4e7a1879b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/OPRSExternalPluginManager.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/OPRSExternalPluginManager.java @@ -48,6 +48,7 @@ import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -693,14 +694,14 @@ public class OPRSExternalPluginManager if (groups.getInstanceCount() > 1) { - for (String pluginId : getDisabledPlugins()) + for (String pluginId : getDisabledPluginIds()) { groups.sendString("STOPEXTERNAL;" + pluginId); } } else { - for (String pluginId : getDisabledPlugins()) + for (String pluginId : getDisabledPluginIds()) { externalPluginManager.enablePlugin(pluginId); externalPluginManager.deletePlugin(pluginId); @@ -809,7 +810,7 @@ public class OPRSExternalPluginManager public boolean install(String pluginId) { - if (getDisabledPlugins().contains(pluginId)) + if (getDisabledPluginIds().contains(pluginId)) { externalPluginManager.enablePlugin(pluginId); externalPluginManager.startPlugin(pluginId); @@ -984,11 +985,18 @@ public class OPRSExternalPluginManager return deps; } - public List getDisabledPlugins() + public List getDisabledPlugins() { return externalPluginManager.getResolvedPlugins() .stream() .filter(not(externalPluginManager.getStartedPlugins()::contains)) + .collect(Collectors.toList()); + } + + public List getDisabledPluginIds() + { + return getDisabledPlugins() + .stream() .map(PluginWrapper::getPluginId) .collect(Collectors.toList()); } @@ -1004,18 +1012,21 @@ public class OPRSExternalPluginManager externalPluginManager.startPlugin(pluginId); List startedPlugins = List.copyOf(getStartedPlugins()); + List disabledPlugins = List.copyOf(getDisabledPlugins()); + List combinedList = Stream.of(startedPlugins, disabledPlugins).flatMap(Collection::stream).collect(Collectors.toList()); List scannedPlugins = new ArrayList<>(); - for (PluginWrapper pluginWrapper : startedPlugins) + for (PluginWrapper pluginWrapper : combinedList) { if (!pluginId.equals(pluginWrapper.getDescriptor().getPluginId())) { continue; } - checkDepsAndStart(startedPlugins, scannedPlugins, pluginWrapper); + checkDepsAndStart(combinedList, scannedPlugins, pluginWrapper); } + scanAndInstantiate(scannedPlugins, true, false); groups.broadcastSring("STARTEXTERNAL;" + pluginId); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/openosrs/externals/PluginsPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/openosrs/externals/PluginsPanel.java index 2d27d08173..151a06df61 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/openosrs/externals/PluginsPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/openosrs/externals/PluginsPanel.java @@ -244,7 +244,7 @@ public class PluginsPanel extends JPanel { List availablePlugins = null; List plugins = null; - List disabledPlugins = externalPluginManager.getDisabledPlugins(); + List disabledPlugins = externalPluginManager.getDisabledPluginIds(); try {