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;
}