diff --git a/Dalamud/Plugin/DalamudPluginInterface.cs b/Dalamud/Plugin/DalamudPluginInterface.cs index 2a1e3227d..4d32b62a8 100644 --- a/Dalamud/Plugin/DalamudPluginInterface.cs +++ b/Dalamud/Plugin/DalamudPluginInterface.cs @@ -18,6 +18,7 @@ using Dalamud.Game.Text.SeStringHandling.Payloads; using Dalamud.Interface; using Dalamud.Interface.Internal; using Dalamud.Plugin.Internal; +using Dalamud.Plugin.Internal.Types; using Dalamud.Plugin.Ipc; using Dalamud.Plugin.Ipc.Exceptions; using Dalamud.Plugin.Ipc.Internal; @@ -41,7 +42,8 @@ public sealed class DalamudPluginInterface : IDisposable /// Location of the assembly. /// The reason the plugin was loaded. /// A value indicating whether this is a dev plugin. - internal DalamudPluginInterface(string pluginName, FileInfo assemblyLocation, PluginLoadReason reason, bool isDev) + /// The repository from which the plugin is installed. + internal DalamudPluginInterface(string pluginName, FileInfo assemblyLocation, PluginLoadReason reason, bool isDev, string sourceRepository) { var configuration = Service.Get(); var dataManager = Service.Get(); @@ -54,6 +56,7 @@ public sealed class DalamudPluginInterface : IDisposable this.configs = Service.Get().PluginConfigs; this.Reason = reason; this.IsDev = isDev; + this.SourceRepository = isDev ? LocalPluginManifest.FlagDevPlugin : sourceRepository; this.LoadTime = DateTime.Now; this.LoadTimeUTC = DateTime.UtcNow; @@ -92,6 +95,11 @@ public sealed class DalamudPluginInterface : IDisposable /// Gets the reason this plugin was loaded. /// public PluginLoadReason Reason { get; } + + /// + /// Gets the custom repository from which this plugin is installed, , or . + /// + public string SourceRepository { get; } /// /// Gets a value indicating whether this is a dev plugin. diff --git a/Dalamud/Plugin/Internal/Types/LocalPlugin.cs b/Dalamud/Plugin/Internal/Types/LocalPlugin.cs index 4cfff9b9e..5292b2236 100644 --- a/Dalamud/Plugin/Internal/Types/LocalPlugin.cs +++ b/Dalamud/Plugin/Internal/Types/LocalPlugin.cs @@ -401,7 +401,7 @@ internal class LocalPlugin : IDisposable new PluginPatchData(this.DllFile); this.DalamudInterface = - new DalamudPluginInterface(this.pluginAssembly.GetName().Name!, this.DllFile, reason, this.IsDev); + new DalamudPluginInterface(this.pluginAssembly.GetName().Name!, this.DllFile, reason, this.IsDev, this.Manifest.InstalledFromUrl ); if (this.Manifest.LoadSync && this.Manifest.LoadRequiredState is 0 or 1) { diff --git a/Dalamud/Plugin/Internal/Types/LocalPluginManifest.cs b/Dalamud/Plugin/Internal/Types/LocalPluginManifest.cs index b4f8e3e91..3e164665f 100644 --- a/Dalamud/Plugin/Internal/Types/LocalPluginManifest.cs +++ b/Dalamud/Plugin/Internal/Types/LocalPluginManifest.cs @@ -17,6 +17,10 @@ internal record LocalPluginManifest : PluginManifest /// [JsonIgnore] public const string FlagMainRepo = "OFFICIAL"; + + /// "DEVPLUGIN" + [JsonIgnore] + public const string FlagDevPlugin = "DEVPLUGIN"; /// /// Gets or sets a value indicating whether the plugin is disabled and should not be loaded.