diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java b/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java index 4fd7ee18ef..bd6a7076fe 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java @@ -60,6 +60,7 @@ import javax.inject.Named; import javax.inject.Provider; import javax.inject.Singleton; import javax.swing.SwingUtilities; +import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import net.runelite.client.RuneLite; @@ -71,6 +72,7 @@ import net.runelite.client.eventbus.EventBus; import net.runelite.client.events.PluginChanged; import net.runelite.client.events.SessionClose; import net.runelite.client.events.SessionOpen; +import net.runelite.client.plugins.config.PluginConfigurationDescriptor; import net.runelite.client.task.ScheduledMethod; import net.runelite.client.task.Scheduler; import net.runelite.client.ui.RuneLiteSplashScreen; @@ -92,6 +94,8 @@ public class PluginManager private final Provider sceneTileManager; private final List plugins = new CopyOnWriteArrayList<>(); private final List activePlugins = new CopyOnWriteArrayList<>(); + @Getter + private final List fakePlugins = new ArrayList<>(); private final String runeliteGroupName = RuneLiteConfig.class .getAnnotation(ConfigGroup.class).value(); @@ -232,6 +236,30 @@ public class PluginManager } } + public void loadFakePluginConfiguration() + { + try + { + for (Object config : fakePlugins.stream().map(PluginConfigurationDescriptor::getConfig).toArray()) + { + if (config == null) + { + continue; + } + + configManager.setDefaultConfiguration(config, false); + } + } + catch (ThreadDeath e) + { + throw e; + } + catch (Throwable ex) + { + log.warn("Unable to reset plugin configuration", ex); + } + } + public void loadExternalPlugins() { externalPluginLoader.scanAndLoad(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListPanel.java index ec5a0b94b7..8b8cc465e8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListPanel.java @@ -110,7 +110,6 @@ public class PluginListPanel extends PluginPanel private final PluginManager pluginManager; private final Provider configPanelProvider; private final OpenOSRSConfig openOSRSConfig; - private final List fakePlugins = new ArrayList<>(); @Getter private final MultiplexingPluginPanel muxer; @@ -245,7 +244,7 @@ public class PluginListPanel extends PluginPanel // populate pluginList with all non-hidden plugins pluginList = Stream.concat( - fakePlugins.stream(), + pluginManager.getFakePlugins().stream(), pluginManager.getPlugins().stream() .filter(plugin -> !plugin.getClass().getAnnotation(PluginDescriptor.class).hidden()) .map(plugin -> @@ -279,7 +278,8 @@ public class PluginListPanel extends PluginPanel void addFakePlugin(PluginConfigurationDescriptor... descriptor) { - Collections.addAll(fakePlugins, descriptor); + Collections.addAll(pluginManager.getFakePlugins(), descriptor); + pluginManager.loadFakePluginConfiguration(); } void refresh() @@ -367,7 +367,7 @@ public class PluginListPanel extends PluginPanel if (text.isEmpty()) { - if (openOSRSConfig.pluginSortMode() == net.runelite.client.config.OpenOSRSConfig.SortStyle.ALPHABETICALLY || !openOSRSConfig.enableCategories()) + if (openOSRSConfig.pluginSortMode() == OpenOSRSConfig.SortStyle.ALPHABETICALLY || !openOSRSConfig.enableCategories()) { pluginList.stream().filter(item -> pinned == item.isPinned()).forEach(mainPanel::add); } @@ -383,7 +383,7 @@ public class PluginListPanel extends PluginPanel { if (pinned == listItem.isPinned() && listItem.matchesSearchTerms(searchTerms)) { - if (openOSRSConfig.pluginSortMode() == net.runelite.client.config.OpenOSRSConfig.SortStyle.ALPHABETICALLY || !openOSRSConfig.enableCategories()) + if (openOSRSConfig.pluginSortMode() == OpenOSRSConfig.SortStyle.ALPHABETICALLY || !openOSRSConfig.enableCategories()) { mainPanel.add(listItem); } @@ -395,7 +395,7 @@ public class PluginListPanel extends PluginPanel }); } - if (openOSRSConfig.pluginSortMode() == net.runelite.client.config.OpenOSRSConfig.SortStyle.CATEGORY && openOSRSConfig.enableCategories()) + if (openOSRSConfig.pluginSortMode() == OpenOSRSConfig.SortStyle.CATEGORY && openOSRSConfig.enableCategories()) { generatePluginList(plugins); } @@ -639,7 +639,7 @@ public class PluginListPanel extends PluginPanel return; } - if (openOSRSConfig.pluginSortMode() == net.runelite.client.config.OpenOSRSConfig.SortStyle.CATEGORY) + if (openOSRSConfig.pluginSortMode() == OpenOSRSConfig.SortStyle.CATEGORY) { pluginList.sort(categoryComparator.thenComparing(ev -> ev.getPluginConfig().getName())); }