summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2022-08-24 17:49:12 -0400
committerJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2022-08-24 17:49:12 -0400
commit1d5017f1197862d0d9c9f7aa4e13216cad3746d6 (patch)
treecfd8c56f635c997f906c84af6c95ec7ecd312a8f
parenta1bc96d365dc40275f198668d3f4c09bd7a92613 (diff)
downloadSMAPI-1d5017f1197862d0d9c9f7aa4e13216cad3746d6.tar.gz
SMAPI-1d5017f1197862d0d9c9f7aa4e13216cad3746d6.tar.bz2
SMAPI-1d5017f1197862d0d9c9f7aa4e13216cad3746d6.zip
fix broken mods with no ID listed as duplicate
-rw-r--r--docs/release-notes.md3
-rw-r--r--src/SMAPI/Framework/ModLoading/ModResolver.cs4
2 files changed, 5 insertions, 2 deletions
diff --git a/docs/release-notes.md b/docs/release-notes.md
index ca7d6e6e..68dc7874 100644
--- a/docs/release-notes.md
+++ b/docs/release-notes.md
@@ -7,6 +7,9 @@
_If needed, you can update to SMAPI 3.16.0 first and then install the latest version._
-->
+## Upcoming release
+* Fixed broken mods sometimes incorrectly listed as duplicate.
+
## 3.16.0
Released 22 August 2022 for Stardew Valley 1.5.6 or later. See [release highlights](https://www.patreon.com/posts/70797008).
diff --git a/src/SMAPI/Framework/ModLoading/ModResolver.cs b/src/SMAPI/Framework/ModLoading/ModResolver.cs
index c5648c74..5f1fbe4b 100644
--- a/src/SMAPI/Framework/ModLoading/ModResolver.cs
+++ b/src/SMAPI/Framework/ModLoading/ModResolver.cs
@@ -218,12 +218,12 @@ namespace StardewModdingAPI.Framework.ModLoading
{
var duplicatesByID = mods
.GroupBy(mod => mod.Manifest?.UniqueID?.Trim(), mod => mod, StringComparer.OrdinalIgnoreCase)
- .Where(p => p.Count() > 1);
+ .Where(p => !string.IsNullOrEmpty(p.Key) && p.Count() > 1);
foreach (var group in duplicatesByID)
{
foreach (IModMetadata mod in group)
{
- if (mod.Status == ModMetadataStatus.Failed && mod.FailReason != ModFailReason.InvalidManifest)
+ if (mod.Status == ModMetadataStatus.Failed && mod.FailReason is not (ModFailReason.InvalidManifest or ModFailReason.LoadFailed or ModFailReason.MissingDependencies))
continue;
string folderList = string.Join(", ", group.Select(p => p.GetRelativePathWithRoot()).OrderBy(p => p));