From 5e31537a0ca04ce0144350fbe1019984e3123c0c Mon Sep 17 00:00:00 2001 From: goat <16760685+goaaats@users.noreply.github.com> Date: Fri, 15 Jul 2022 19:05:30 +0200 Subject: [PATCH] fix: only load latest version of a plugin, don't automatically re-enable plugins --- Dalamud/Plugin/Internal/PluginManager.cs | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/Dalamud/Plugin/Internal/PluginManager.cs b/Dalamud/Plugin/Internal/PluginManager.cs index 4569a1d07..f44c4ff9d 100644 --- a/Dalamud/Plugin/Internal/PluginManager.cs +++ b/Dalamud/Plugin/Internal/PluginManager.cs @@ -307,6 +307,7 @@ internal partial class PluginManager : IDisposable, IServiceType // Add installed plugins. These are expected to be in a specific format so we can look for exactly that. foreach (var pluginDir in this.pluginDirectory.GetDirectories()) { + var versionsDefs = new List(); foreach (var versionDir in pluginDir.GetDirectories()) { var dllFile = new FileInfo(Path.Combine(versionDir.FullName, $"{pluginDir.Name}.dll")); @@ -317,7 +318,16 @@ internal partial class PluginManager : IDisposable, IServiceType var manifest = LocalPluginManifest.Load(manifestFile); - pluginDefs.Add(new PluginDef(dllFile, manifest, false)); + versionsDefs.Add(new PluginDef(dllFile, manifest, false)); + } + + try + { + pluginDefs.Add(versionsDefs.OrderByDescending(x => x.Manifest!.EffectiveVersion).First()); + } + catch (Exception ex) + { + Log.Error(ex, "Couldn't choose best version for plugin: {Name}", pluginDir.Name); } } @@ -712,10 +722,14 @@ internal partial class PluginManager : IDisposable, IServiceType { try { - if (plugin.IsDisabled) - plugin.Enable(); - - await plugin.LoadAsync(reason); + if (!plugin.IsDisabled) + { + await plugin.LoadAsync(reason); + } + else + { + Log.Verbose($"{name} was disabled"); + } } catch (InvalidPluginException) {