/// <summary> /// Called when the plugin manager is unloading a plugin that was loaded by this plugin loader /// </summary> /// <param name="plugin_base"></param> public override void Unloading(Plugin plugin_base) { var plugin = plugin_base as CSharpPlugin; LoadedPlugins.Remove(plugin.Name); // Unload plugins which require this plugin first foreach (var compilable_plugin in plugins.Values) { if (compilable_plugin.Requires.Contains(plugin.Name)) { Interface.Oxide.UnloadPlugin(compilable_plugin.Name); } } }
private void LoadPlugin(IPlugin plugin) { var savePlugin = $"{plugin.Name}_{plugin.Author}"; if (LoadedPlugins.Contains(plugin)) { LoadedPlugins.Remove(plugin); Options.Values.LoadedPlugins.Remove(savePlugin); Options.Values.Save(); plugin.Unload(); return; } LoadedPlugins.Add(plugin); Options.Values.LoadedPlugins.Add(savePlugin); Options.Values.Save(); plugin.Load(); }
/// <summary> /// See interface docs. /// </summary> public void RegisterImplementations() { var log = Factory.ResolveSingleton <ILog>(); foreach (var plugin in LoadedPlugins.ToArray()) { var snapshot = Provider.ClassFactoryTakeSnapshot(); try { plugin.RegisterImplementations(Factory.Singleton); } catch (Exception ex) { Provider.ClassFactoryRestoreSnapshot(snapshot); var dllFileName = _PluginIDToFileNameMap[plugin.Id]; _PluginIDToFileNameMap.Remove(plugin.Id); LoadedPlugins.Remove(plugin); IgnoredPlugins.Add(dllFileName, String.Format(Strings.PluginCannotBeLoaded, ex.Message)); log.WriteLine("Caught exception loading plugin {0}: {1}", dllFileName, FormatException(ex)); } } }
/// <summary> /// Called when the plugin manager is unloading a plugin that was loaded by this plugin loader /// </summary> /// <param name="pluginBase"></param> public override void Unloading(Plugin pluginBase) { CSharpPlugin plugin = pluginBase as CSharpPlugin; if (plugin == null) { return; } LoadedPlugins.Remove(plugin.Name); // Unload plugins which require this plugin first foreach (CompilablePlugin compilablePlugin in plugins.Values) { if (compilablePlugin.Requires.Contains(plugin.Name)) { Interface.Oxide.UnloadPlugin(compilablePlugin.Name); } } }
public void RemovePlugin(Plugin plugin) { LoadedPlugins.Remove(plugin.Name()); OrderedAppliedPluginsList.Remove(plugin); }