From 8c72f10b650eb35e5bc3651fe3eefea647a13dd9 Mon Sep 17 00:00:00 2001 From: zeruth Date: Thu, 4 Feb 2021 02:13:44 -0500 Subject: [PATCH] externals: update plugin list after install --- .../client/plugins/ExternalPluginManager.java | 11 +++++++---- .../main/java/net/runelite/client/RuneLite.java | 2 +- .../runelite/client/plugins/PluginManager.java | 17 +++++++++++++++-- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/runelite-client/src/main/java/com/openosrs/client/plugins/ExternalPluginManager.java b/runelite-client/src/main/java/com/openosrs/client/plugins/ExternalPluginManager.java index add932f725..5b965f37b9 100644 --- a/runelite-client/src/main/java/com/openosrs/client/plugins/ExternalPluginManager.java +++ b/runelite-client/src/main/java/com/openosrs/client/plugins/ExternalPluginManager.java @@ -75,6 +75,7 @@ import net.runelite.client.config.ConfigManager; import net.runelite.client.config.RuneLiteConfig; import net.runelite.client.eventbus.EventBus; import net.runelite.client.events.ConfigChanged; +import net.runelite.client.events.ExternalPluginsChanged; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginInstantiationException; import net.runelite.client.plugins.PluginManager; @@ -421,9 +422,9 @@ public class ExternalPluginManager .directed() .build(); - for (Plugin plugin : plugins) + for (net.runelite.client.plugins.Plugin plugin : plugins) { - Class clazz = plugin.getClass(); + Class clazz = plugin.getClass(); PluginDescriptor pluginDescriptor = clazz.getAnnotation(PluginDescriptor.class); try @@ -820,6 +821,8 @@ public class ExternalPluginManager groups.broadcastSring("STARTEXTERNAL;" + pluginId); scanAndInstantiate(loadPlugin(pluginId), true, false); + ExternalPluginsChanged event = new ExternalPluginsChanged(null); + eventBus.post(event); return true; } @@ -853,9 +856,9 @@ public class ExternalPluginManager } updateManager.installPlugin(pluginId, null); - scanAndInstantiate(loadPlugin(pluginId), true, true); - + ExternalPluginsChanged event = new ExternalPluginsChanged(null); + eventBus.post(event); groups.broadcastSring("STARTEXTERNAL;" + pluginId); } catch (DependencyResolver.DependenciesNotFoundException ex) 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 f2b4a9ac8d..aa7c7aa45e 100644 --- a/runelite-client/src/main/java/net/runelite/client/RuneLite.java +++ b/runelite-client/src/main/java/net/runelite/client/RuneLite.java @@ -95,7 +95,7 @@ public class RuneLite { public static final File RUNELITE_DIR = new File(System.getProperty("user.home"), ".openosrs"); public static final File CACHE_DIR = new File(RUNELITE_DIR, "cache"); - public static final File PLUGINS_DIR = new File(RUNELITE_DIR, "plugins"); + public static final File PLUGINS_DIR = new File(RUNELITE_DIR, "plugins-hub"); public static final File PROFILES_DIR = new File(RUNELITE_DIR, "profiles"); public static final File SCREENSHOT_DIR = new File(RUNELITE_DIR, "screenshots"); public static final File LOGS_DIR = new File(RUNELITE_DIR, "logs"); 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 b4d5934f2f..01c2d9ba7d 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 @@ -164,8 +164,21 @@ public class PluginManager { try { - final Injector injector = plugin.getInjector(); - + Injector injector = plugin.getInjector(); + if (injector == null) + { + // Create injector for the module + Module pluginModule = (Binder binder) -> + { + // Since the plugin itself is a module, it won't bind itself, so we'll bind it here + binder.bind((Class) plugin.getClass()).toInstance(plugin); + binder.install(plugin); + }; + Injector pluginInjector = RuneLite.getInjector().createChildInjector(pluginModule); + pluginInjector.injectMembers(plugin); + plugin.injector = pluginInjector; + injector = pluginInjector; + } for (Key key : injector.getBindings().keySet()) { Class type = key.getTypeLiteral().getRawType();