externals: update plugin list after install

This commit is contained in:
zeruth
2021-02-04 02:13:44 -05:00
parent fd6b8fccea
commit 8c72f10b65
3 changed files with 23 additions and 7 deletions

View File

@@ -75,6 +75,7 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.config.RuneLiteConfig; import net.runelite.client.config.RuneLiteConfig;
import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.EventBus;
import net.runelite.client.events.ConfigChanged; import net.runelite.client.events.ConfigChanged;
import net.runelite.client.events.ExternalPluginsChanged;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.PluginInstantiationException; import net.runelite.client.plugins.PluginInstantiationException;
import net.runelite.client.plugins.PluginManager; import net.runelite.client.plugins.PluginManager;
@@ -421,9 +422,9 @@ public class ExternalPluginManager
.directed() .directed()
.build(); .build();
for (Plugin plugin : plugins) for (net.runelite.client.plugins.Plugin plugin : plugins)
{ {
Class<? extends Plugin> clazz = plugin.getClass(); Class<? extends net.runelite.client.plugins.Plugin> clazz = plugin.getClass();
PluginDescriptor pluginDescriptor = clazz.getAnnotation(PluginDescriptor.class); PluginDescriptor pluginDescriptor = clazz.getAnnotation(PluginDescriptor.class);
try try
@@ -820,6 +821,8 @@ public class ExternalPluginManager
groups.broadcastSring("STARTEXTERNAL;" + pluginId); groups.broadcastSring("STARTEXTERNAL;" + pluginId);
scanAndInstantiate(loadPlugin(pluginId), true, false); scanAndInstantiate(loadPlugin(pluginId), true, false);
ExternalPluginsChanged event = new ExternalPluginsChanged(null);
eventBus.post(event);
return true; return true;
} }
@@ -853,9 +856,9 @@ public class ExternalPluginManager
} }
updateManager.installPlugin(pluginId, null); updateManager.installPlugin(pluginId, null);
scanAndInstantiate(loadPlugin(pluginId), true, true); scanAndInstantiate(loadPlugin(pluginId), true, true);
ExternalPluginsChanged event = new ExternalPluginsChanged(null);
eventBus.post(event);
groups.broadcastSring("STARTEXTERNAL;" + pluginId); groups.broadcastSring("STARTEXTERNAL;" + pluginId);
} }
catch (DependencyResolver.DependenciesNotFoundException ex) catch (DependencyResolver.DependenciesNotFoundException ex)

View File

@@ -95,7 +95,7 @@ public class RuneLite
{ {
public static final File RUNELITE_DIR = new File(System.getProperty("user.home"), ".openosrs"); 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 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 PROFILES_DIR = new File(RUNELITE_DIR, "profiles");
public static final File SCREENSHOT_DIR = new File(RUNELITE_DIR, "screenshots"); public static final File SCREENSHOT_DIR = new File(RUNELITE_DIR, "screenshots");
public static final File LOGS_DIR = new File(RUNELITE_DIR, "logs"); public static final File LOGS_DIR = new File(RUNELITE_DIR, "logs");

View File

@@ -164,8 +164,21 @@ public class PluginManager
{ {
try 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>) 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()) for (Key<?> key : injector.getBindings().keySet())
{ {
Class<?> type = key.getTypeLiteral().getRawType(); Class<?> type = key.getTypeLiteral().getRawType();