Beispiel #1
0
 public void EnablePlugin(Plugin plugin)
 {
     plugin.Info("Enabling plugin " + plugin.Details.name + " " + plugin.Details.version);
     ConfigManager.Manager.RegisterPlugin(plugin);
     plugin.Register();
     plugin.OnEnable();
     enabledPlugins.Add(plugin.Details.id, plugin);
 }
Beispiel #2
0
        public void LoadPluginAssembly(string path)
        {
            Logger.Debug("PLUGIN_LOADER", path);
            Assembly a = Assembly.LoadFrom(path);

            try
            {
                foreach (Type t in a.GetTypes())
                {
                    if (t.IsSubclassOf(typeof(Plugin)) && t != typeof(Plugin))
                    {
                        try
                        {
                            Plugin        plugin  = (Plugin)Activator.CreateInstance(t);
                            PluginDetails details = (PluginDetails)Attribute.GetCustomAttribute(t, typeof(PluginDetails));
                            if (details.id != null)
                            {
                                if (details.SmodMajor != SMOD_MAJOR && details.SmodMinor != SMOD_MINOR)
                                {
                                    Logger.Warn("PLUGIN_LOADER", "Trying to load an outdated plugin " + details.name + " " + details.version);
                                }
                                else
                                {
                                    plugin.Details = details;
                                    plugin.Pipes   = new PluginPipes(plugin);

                                    ConfigManager.Manager.RegisterPlugin(plugin);
                                    LangManager.Manager.RegisterPlugin(plugin);
                                    PipeManager.Manager.RegisterPlugin(plugin);

                                    plugin.Register();

                                    disabledPlugins.Add(details.id, plugin);
                                    Logger.Info("PLUGIN_LOADER", "Plugin loaded: " + plugin.ToString());
                                }
                            }
                            else
                            {
                                Logger.Warn("PLUGIN_LOADER", "Plugin loaded but missing an id: " + t + "[" + path + "]");
                            }
                        }
                        catch (Exception e)
                        {
                            Logger.Error("PLUGIN_LOADER", "Failed to create instance of plugin " + t + "[" + path + "]");
                            Logger.Error("PLUGIN_LOADER", e.GetType().Name + ": " + e.Message);
                            Logger.Error("PLUGIN_LOADER", e.StackTrace);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Error("PLUGIN_LOADER", "Failed to load DLL [" + path + "], is it up to date?");
                Logger.Debug("PLUGIN_LOADER", e.Message);
                Logger.Debug("PLUGIN_LOADER", e.StackTrace);
            }
        }