From c2f474bf88a43e293d28851785a57a9ca1e60f2e Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Wed, 24 Aug 2022 17:49:17 -0400 Subject: [PATCH] distinguish empty/XNB folders from invalid manifest for error-tracking --- src/SMAPI/Framework/ModLoading/ModFailReason.cs | 8 +++++++- src/SMAPI/Framework/ModLoading/ModResolver.cs | 11 ++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/SMAPI/Framework/ModLoading/ModFailReason.cs b/src/SMAPI/Framework/ModLoading/ModFailReason.cs index cd4623e7..cfb76a33 100644 --- a/src/SMAPI/Framework/ModLoading/ModFailReason.cs +++ b/src/SMAPI/Framework/ModLoading/ModFailReason.cs @@ -9,6 +9,9 @@ namespace StardewModdingAPI.Framework.ModLoading /// Multiple copies of the mod are installed. Duplicate, + /// The folder is empty or contains only ignored files. + EmptyFolder, + /// The mod has incompatible code instructions, needs a newer SMAPI version, or is marked 'assume broken' in the SMAPI metadata list. Incompatible, @@ -22,6 +25,9 @@ namespace StardewModdingAPI.Framework.ModLoading MissingDependencies, /// The mod is marked obsolete in the SMAPI metadata list. - Obsolete + Obsolete, + + /// The folder is an XNB mod, which can't be loaded through SMAPI. + XnbMod } } diff --git a/src/SMAPI/Framework/ModLoading/ModResolver.cs b/src/SMAPI/Framework/ModLoading/ModResolver.cs index 5f1fbe4b..fe56f4d2 100644 --- a/src/SMAPI/Framework/ModLoading/ModResolver.cs +++ b/src/SMAPI/Framework/ModLoading/ModResolver.cs @@ -48,7 +48,16 @@ namespace StardewModdingAPI.Framework.ModLoading if (shouldIgnore) metadata.SetStatus(status, ModFailReason.DisabledByDotConvention, "disabled by dot convention"); else if (status == ModMetadataStatus.Failed) - metadata.SetStatus(status, ModFailReason.InvalidManifest, folder.ManifestParseErrorText); + { + ModFailReason reason = folder.ManifestParseError switch + { + ModParseError.EmptyFolder or ModParseError.EmptyVortexFolder => ModFailReason.EmptyFolder, + ModParseError.XnbMod => ModFailReason.XnbMod, + _ => ModFailReason.InvalidManifest + }; + + metadata.SetStatus(status, reason, folder.ManifestParseErrorText); + } yield return metadata; }