diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-06-19 02:12:18 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-06-19 02:12:18 -0400 |
commit | 640a523eb4a63aa078db15b63ac6e01c6c15d53c (patch) | |
tree | 9ddcbb7ae2b784031fd5318ed48a33c0abbdb356 | |
parent | 565aa2c67b2619e478e2e7c1e212926ca1ba2369 (diff) | |
download | SMAPI-640a523eb4a63aa078db15b63ac6e01c6c15d53c.tar.gz SMAPI-640a523eb4a63aa078db15b63ac6e01c6c15d53c.tar.bz2 SMAPI-640a523eb4a63aa078db15b63ac6e01c6c15d53c.zip |
when the ObjectInformation.xnb file is broken, print one error instead of a warning flood
-rw-r--r-- | release-notes.md | 1 | ||||
-rw-r--r-- | src/StardewModdingAPI/Program.cs | 22 |
2 files changed, 16 insertions, 7 deletions
diff --git a/release-notes.md b/release-notes.md index 67de304a..f0e08e3a 100644 --- a/release-notes.md +++ b/release-notes.md @@ -16,6 +16,7 @@ See [log](https://github.com/Pathoschild/SMAPI/compare/1.14...1.15). For players: * SMAPI will no longer load mods known to be obsolete or unneeded. +* When the `ObjectInformation.xnb` is broken, SMAPI will now print one error to the console instead of a warning flood. (The individual issues are still listed in the log file if needed.) For modders: * You can now specify minimum dependency versions in `manifest.json`. diff --git a/src/StardewModdingAPI/Program.cs b/src/StardewModdingAPI/Program.cs index 71f09f5c..da0c5bca 100644 --- a/src/StardewModdingAPI/Program.cs +++ b/src/StardewModdingAPI/Program.cs @@ -355,7 +355,7 @@ namespace StardewModdingAPI // validate XNB integrity if (!this.ValidateContentIntegrity()) - this.Monitor.Log("SMAPI found problems in the game's XNB files which may cause errors or crashes while you're playing. Consider uninstalling XNB mods or reinstalling the game.", LogLevel.Warn); + this.Monitor.Log("SMAPI found problems in your game's content files which are likely to cause errors or crashes. Consider uninstalling XNB mods or reinstalling the game.", LogLevel.Error); // load mods int modsLoaded; @@ -486,17 +486,18 @@ namespace StardewModdingAPI this.Monitor.Log("Detecting common issues..."); bool issuesFound = false; - - // object format (commonly broken by outdated files) + // object format (commonly broken by outdated mods) { - void LogIssue(int id, string issue) => this.Monitor.Log($"Detected issue: item #{id} in Content\\Data\\ObjectInformation is invalid ({issue}).", LogLevel.Warn); + // detect issues + bool hasObjectIssues = false; + void LogIssue(int id, string issue) => this.Monitor.Log($@"Detected issue: item #{id} in Content\Data\ObjectInformation.xnb is invalid ({issue}).", LogLevel.Trace); foreach (KeyValuePair<int, string> entry in Game1.objectInformation) { // must not be empty if (string.IsNullOrWhiteSpace(entry.Value)) { LogIssue(entry.Key, "entry is empty"); - issuesFound = true; + hasObjectIssues = true; continue; } @@ -505,7 +506,7 @@ namespace StardewModdingAPI if (fields.Length < SObject.objectInfoDescriptionIndex + 1) { LogIssue(entry.Key, "too few fields for an object"); - issuesFound = true; + hasObjectIssues = true; continue; } @@ -516,11 +517,18 @@ namespace StardewModdingAPI if (fields.Length < SObject.objectInfoBuffDurationIndex + 1) { LogIssue(entry.Key, "too few fields for a cooking item"); - issuesFound = true; + hasObjectIssues = true; } break; } } + + // log error + if (hasObjectIssues) + { + issuesFound = true; + this.Monitor.Log(@"Your Content\Data\ObjectInformation.xnb file seems to be broken or outdated.", LogLevel.Warn); + } } return !issuesFound; |