diff --git a/Dalamud/Configuration/Internal/DalamudConfiguration.cs b/Dalamud/Configuration/Internal/DalamudConfiguration.cs index 678a68e78..2188b553e 100644 --- a/Dalamud/Configuration/Internal/DalamudConfiguration.cs +++ b/Dalamud/Configuration/Internal/DalamudConfiguration.cs @@ -164,6 +164,11 @@ namespace Dalamud.Configuration.Internal /// public string DalamudBetaKind { get; set; } + /// + /// Gets or sets a value indicating whether or not all plugins, regardless of API level, should be loaded. + /// + public bool LoadAllApiLevels { get; set; } + /// /// Load a configuration from the provided path. /// diff --git a/Dalamud/Interface/Internal/DalamudInterface.cs b/Dalamud/Interface/Internal/DalamudInterface.cs index 16203edec..e7993914d 100644 --- a/Dalamud/Interface/Internal/DalamudInterface.cs +++ b/Dalamud/Interface/Internal/DalamudInterface.cs @@ -464,6 +464,14 @@ namespace Dalamud.Interface.Internal this.dalamud.PluginManager.ScanDevPlugins(); } + ImGui.Separator(); + + if (ImGui.MenuItem("Load all API levels", null, this.dalamud.Configuration.LoadAllApiLevels)) + { + this.dalamud.Configuration.LoadAllApiLevels = !this.dalamud.Configuration.LoadAllApiLevels; + this.dalamud.Configuration.Save(); + } + ImGui.Separator(); ImGui.MenuItem("API Level:" + PluginManager.DalamudApiLevel, false); ImGui.MenuItem("Loaded plugins:" + this.dalamud.PluginManager?.InstalledPlugins.Count, false); diff --git a/Dalamud/Plugin/Internal/LocalPlugin.cs b/Dalamud/Plugin/Internal/LocalPlugin.cs index 45fbb144f..e14153fc6 100644 --- a/Dalamud/Plugin/Internal/LocalPlugin.cs +++ b/Dalamud/Plugin/Internal/LocalPlugin.cs @@ -207,7 +207,7 @@ namespace Dalamud.Plugin.Internal if (this.Manifest.ApplicableVersion < this.dalamud.StartInfo.GameVersion) throw new InvalidPluginOperationException($"Unable to load {this.Name}, no applicable version"); - if (this.Manifest.DalamudApiLevel < PluginManager.DalamudApiLevel) + if (this.Manifest.DalamudApiLevel < PluginManager.DalamudApiLevel && !this.dalamud.Configuration.LoadAllApiLevels) throw new InvalidPluginOperationException($"Unable to load {this.Name}, incompatible API level"); if (this.Manifest.Disabled) diff --git a/Dalamud/Plugin/Internal/PluginManager.cs b/Dalamud/Plugin/Internal/PluginManager.cs index 2d57c4e2b..4003ae02d 100644 --- a/Dalamud/Plugin/Internal/PluginManager.cs +++ b/Dalamud/Plugin/Internal/PluginManager.cs @@ -765,7 +765,7 @@ namespace Dalamud.Plugin.Internal return false; // API level - if (manifest.DalamudApiLevel < DalamudApiLevel) + if (manifest.DalamudApiLevel < DalamudApiLevel && !this.dalamud.Configuration.LoadAllApiLevels) return false; // Banned