summaryrefslogtreecommitdiff
path: root/src/StardewModdingAPI/Framework/ModLoading
diff options
context:
space:
mode:
Diffstat (limited to 'src/StardewModdingAPI/Framework/ModLoading')
-rw-r--r--src/StardewModdingAPI/Framework/ModLoading/ModMetadata.cs12
-rw-r--r--src/StardewModdingAPI/Framework/ModLoading/ModResolver.cs30
2 files changed, 21 insertions, 21 deletions
diff --git a/src/StardewModdingAPI/Framework/ModLoading/ModMetadata.cs b/src/StardewModdingAPI/Framework/ModLoading/ModMetadata.cs
index ab590e10..5055da75 100644
--- a/src/StardewModdingAPI/Framework/ModLoading/ModMetadata.cs
+++ b/src/StardewModdingAPI/Framework/ModLoading/ModMetadata.cs
@@ -1,4 +1,4 @@
-using StardewModdingAPI.Framework.Models;
+using StardewModdingAPI.Framework.Models;
namespace StardewModdingAPI.Framework.ModLoading
{
@@ -17,8 +17,8 @@ namespace StardewModdingAPI.Framework.ModLoading
/// <summary>The mod manifest.</summary>
public IManifest Manifest { get; }
- /// <summary>Optional metadata about a mod version that SMAPI should assume is compatible or broken, regardless of whether it detects incompatible code.</summary>
- public ModCompatibility Compatibility { get; }
+ /// <summary>Metadata about the mod from SMAPI's internal data (if any).</summary>
+ public ModDataRecord DataRecord { get; }
/// <summary>The metadata resolution status.</summary>
public ModMetadataStatus Status { get; private set; }
@@ -37,13 +37,13 @@ namespace StardewModdingAPI.Framework.ModLoading
/// <param name="displayName">The mod's display name.</param>
/// <param name="directoryPath">The mod's full directory path.</param>
/// <param name="manifest">The mod manifest.</param>
- /// <param name="compatibility">Optional metadata about a mod version that SMAPI should assume is compatible or broken, regardless of whether it detects incompatible code.</param>
- public ModMetadata(string displayName, string directoryPath, IManifest manifest, ModCompatibility compatibility)
+ /// <param name="dataRecord">Metadata about the mod from SMAPI's internal data (if any).</param>
+ public ModMetadata(string displayName, string directoryPath, IManifest manifest, ModDataRecord dataRecord)
{
this.DisplayName = displayName;
this.DirectoryPath = directoryPath;
this.Manifest = manifest;
- this.Compatibility = compatibility;
+ this.DataRecord = dataRecord;
}
/// <summary>Set the mod status.</summary>
diff --git a/src/StardewModdingAPI/Framework/ModLoading/ModResolver.cs b/src/StardewModdingAPI/Framework/ModLoading/ModResolver.cs
index 02fd85ea..2da10348 100644
--- a/src/StardewModdingAPI/Framework/ModLoading/ModResolver.cs
+++ b/src/StardewModdingAPI/Framework/ModLoading/ModResolver.cs
@@ -17,11 +17,11 @@ namespace StardewModdingAPI.Framework.ModLoading
/// <summary>Get manifest metadata for each folder in the given root path.</summary>
/// <param name="rootPath">The root path to search for mods.</param>
/// <param name="jsonHelper">The JSON helper with which to read manifests.</param>
- /// <param name="compatibilityRecords">Metadata about mods that SMAPI should assume is compatible or broken, regardless of whether it detects incompatible code.</param>
+ /// <param name="dataRecords">Metadata about mods from SMAPI's internal data.</param>
/// <returns>Returns the manifests by relative folder.</returns>
- public IEnumerable<IModMetadata> ReadManifests(string rootPath, JsonHelper jsonHelper, IEnumerable<ModCompatibility> compatibilityRecords)
+ public IEnumerable<IModMetadata> ReadManifests(string rootPath, JsonHelper jsonHelper, IEnumerable<ModDataRecord> dataRecords)
{
- compatibilityRecords = compatibilityRecords.ToArray();
+ dataRecords = dataRecords.ToArray();
foreach (DirectoryInfo modDir in this.GetModFolders(rootPath))
{
@@ -54,15 +54,15 @@ namespace StardewModdingAPI.Framework.ModLoading
}
// validate metadata
- ModCompatibility compatibility = null;
+ ModDataRecord dataRecord = null;
if (manifest != null)
{
// get unique key for lookups
string key = !string.IsNullOrWhiteSpace(manifest.UniqueID) ? manifest.UniqueID : manifest.EntryDll;
- // get compatibility record
- compatibility = (
- from mod in compatibilityRecords
+ // get data record
+ dataRecord = (
+ from mod in dataRecords
where
mod.ID.Any(p => p.Matches(key, manifest))
&& (mod.LowerVersion == null || !manifest.Version.IsOlderThan(mod.LowerVersion))
@@ -79,7 +79,7 @@ namespace StardewModdingAPI.Framework.ModLoading
? ModMetadataStatus.Found
: ModMetadataStatus.Failed;
- yield return new ModMetadata(displayName, modDir.FullName, manifest, compatibility).SetStatus(status, error);
+ yield return new ModMetadata(displayName, modDir.FullName, manifest, dataRecord).SetStatus(status, error);
}
}
@@ -99,22 +99,22 @@ namespace StardewModdingAPI.Framework.ModLoading
// validate compatibility
{
- ModCompatibility compatibility = mod.Compatibility;
- switch (compatibility?.Status)
+ ModDataRecord dataRecord = mod.DataRecord;
+ switch (dataRecord?.Status)
{
case ModStatus.Obsolete:
- mod.SetStatus(ModMetadataStatus.Failed, $"it's obsolete: {compatibility.ReasonPhrase}");
+ mod.SetStatus(ModMetadataStatus.Failed, $"it's obsolete: {dataRecord.ReasonPhrase}");
continue;
case ModStatus.AssumeBroken:
{
- string reasonPhrase = compatibility.ReasonPhrase ?? "it's no longer compatible";
+ string reasonPhrase = dataRecord.ReasonPhrase ?? "it's no longer compatible";
string error = $"{reasonPhrase}. Please check for a ";
- if (mod.Manifest.Version.Equals(compatibility.UpperVersion) && compatibility.UpperVersionLabel == null)
+ if (mod.Manifest.Version.Equals(dataRecord.UpperVersion) && dataRecord.UpperVersionLabel == null)
error += "newer version";
else
- error += $"version newer than {compatibility.UpperVersionLabel ?? compatibility.UpperVersion.ToString()}";
- error += " at " + string.Join(" or ", compatibility.UpdateUrls);
+ error += $"version newer than {dataRecord.UpperVersionLabel ?? dataRecord.UpperVersion.ToString()}";
+ error += " at " + string.Join(" or ", dataRecord.UpdateUrls);
mod.SetStatus(ModMetadataStatus.Failed, error);
continue;