summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/StardewModdingAPI/Framework/Manifest.cs3
-rw-r--r--src/StardewModdingAPI/IManifest.cs3
-rw-r--r--src/StardewModdingAPI/Program.cs19
3 files changed, 25 insertions, 0 deletions
diff --git a/src/StardewModdingAPI/Framework/Manifest.cs b/src/StardewModdingAPI/Framework/Manifest.cs
index 189da9a8..f9c90ff6 100644
--- a/src/StardewModdingAPI/Framework/Manifest.cs
+++ b/src/StardewModdingAPI/Framework/Manifest.cs
@@ -26,6 +26,9 @@ namespace StardewModdingAPI.Framework
/// <summary>The minimum SMAPI version required by this mod, if any.</summary>
public string MinimumApiVersion { get; set; }
+ /// <summary>The minimum game version required by this mod, if any.</summary>
+ public string MinimumGameVersion { get; set; }
+
/// <summary>The name of the DLL in the directory that has the <see cref="Mod.Entry"/> method.</summary>
public string EntryDll { get; set; }
diff --git a/src/StardewModdingAPI/IManifest.cs b/src/StardewModdingAPI/IManifest.cs
index 3e4b7513..f73b0c8f 100644
--- a/src/StardewModdingAPI/IManifest.cs
+++ b/src/StardewModdingAPI/IManifest.cs
@@ -18,6 +18,9 @@
/// <summary>The minimum SMAPI version required by this mod, if any.</summary>
string MinimumApiVersion { get; set; }
+ /// <summary>The minimum game version required by this mod, if any.</summary>
+ string MinimumGameVersion { get; set; }
+
/// <summary>The unique mod ID.</summary>
string UniqueID { get; set; }
diff --git a/src/StardewModdingAPI/Program.cs b/src/StardewModdingAPI/Program.cs
index 00b5709f..678fa90d 100644
--- a/src/StardewModdingAPI/Program.cs
+++ b/src/StardewModdingAPI/Program.cs
@@ -436,6 +436,25 @@ namespace StardewModdingAPI
}
}
+ // validate game version
+ if (!string.IsNullOrWhiteSpace(manifest.MinimumGameVersion))
+ {
+ try
+ {
+ ISemanticVersion minVersion = new SemanticVersion(manifest.MinimumGameVersion);
+ if (minVersion.IsNewerThan(Constants.GameVersion))
+ {
+ this.Monitor.Log($"{skippedPrefix} because it needs Stardew Valley {minVersion} or later. Please update Stardew Valley to the latest version to use this mod.", LogLevel.Error);
+ continue;
+ }
+ }
+ catch (FormatException ex) when (ex.Message.Contains("not a valid semantic version"))
+ {
+ this.Monitor.Log($"{skippedPrefix} because it has an invalid minimum game version '{manifest.MinimumApiVersion}'. This should be a semantic version number like {Constants.GameVersion}.", LogLevel.Error);
+ continue;
+ }
+ }
+
// create per-save directory
if (manifest.PerSaveConfigs)
{