From 5256b738b486aa1591c6b25b41410973f1feaf46 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Mon, 2 Aug 2021 21:14:22 -0400 Subject: use more reliable method to get save folder name SMAPI now tracks the actual folder name being loaded to avoid edge cases where the folder name doesn't match the save ID. --- src/SMAPI/Framework/SCore.cs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/SMAPI/Framework') diff --git a/src/SMAPI/Framework/SCore.cs b/src/SMAPI/Framework/SCore.cs index a34b3eff..b826789d 100644 --- a/src/SMAPI/Framework/SCore.cs +++ b/src/SMAPI/Framework/SCore.cs @@ -257,6 +257,7 @@ namespace StardewModdingAPI.Framework MiniMonoModHotfix.Apply(); HarmonyPatcher.Apply("SMAPI", this.Monitor, new Game1Patcher(this.Reflection, this.OnLoadStageChanged), + new SaveGamePatcher(this.OnSaveFileReading), new TitleMenuPatcher(this.OnLoadStageChanged) ); @@ -1101,6 +1102,13 @@ namespace StardewModdingAPI.Framework this.EventManager.ReturnedToTitle.RaiseEmpty(); } + /// Raised before the game begins reading a save file. + /// The save folder name. + internal void OnSaveFileReading(string fileName) + { + Constants.LastRawSaveFileName = fileName; + } + /// Apply fixes to the save after it's loaded. private void ApplySaveFixes() { -- cgit From cf261ff36ee0c96acd0a8b0b233517991740b8cf Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Tue, 3 Aug 2021 12:00:15 -0400 Subject: increase software conflict message to warning level to simplify troubleshooting --- docs/release-notes.md | 5 +++-- src/SMAPI/Framework/SCore.cs | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'src/SMAPI/Framework') diff --git a/docs/release-notes.md b/docs/release-notes.md index 460b64fb..8e354585 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -3,13 +3,14 @@ # Release notes ## Upcoming release * For players: + * The software conflict message added in SMAPI 3.11.0 now appears as a warning to simplify troubleshooting. * Updated compatibility list. * For mod authors: - * Fixed save constants not set correctly in edge cases where the folder name doesn't match the save ID. + * Fixed `Constants.Save*` fields incorrect if the save's folder name and ID don't match. ## 3.12.0 -01 August 2021 for Stardew Valley 1.5.4 or later. See [release highlights](https://www.patreon.com/posts/54388616). +Released 01 August 2021 for Stardew Valley 1.5.4 or later. See [release highlights](https://www.patreon.com/posts/54388616). * For players: * Added save recovery when content mods leave null objects in the save (in _Error Handler_). diff --git a/src/SMAPI/Framework/SCore.cs b/src/SMAPI/Framework/SCore.cs index b826789d..3f97bd4e 100644 --- a/src/SMAPI/Framework/SCore.cs +++ b/src/SMAPI/Framework/SCore.cs @@ -1323,7 +1323,7 @@ namespace StardewModdingAPI.Framework .ToArray(); if (installedNames.Any()) - this.Monitor.Log($" Found {string.Join(" and ", installedNames)} installed, which can conflict with SMAPI. If you experience errors or crashes, try disabling that software or adding an exception for SMAPI / Stardew Valley."); + this.Monitor.Log($"Found {string.Join(" and ", installedNames)} installed, which may conflict with SMAPI. If you experience errors or crashes, try disabling that software or adding an exception for SMAPI and Stardew Valley.", LogLevel.Warn); else this.Monitor.Log(" None found!"); } -- cgit From 6b0d13be7c8383785cc3152d502959b15468b234 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Tue, 3 Aug 2021 19:03:51 -0400 Subject: fix Mono.Cecil failing to resolve references to SMAPI in some edge cases --- docs/release-notes.md | 1 + src/SMAPI/Framework/ModLoading/AssemblyLoader.cs | 1 + 2 files changed, 2 insertions(+) (limited to 'src/SMAPI/Framework') diff --git a/docs/release-notes.md b/docs/release-notes.md index 8e354585..22eecc3a 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -4,6 +4,7 @@ ## Upcoming release * For players: * The software conflict message added in SMAPI 3.11.0 now appears as a warning to simplify troubleshooting. + * Fixed error loading older Harmony mods for some players who launch the unofficial 64-bit Stardew Valley through Steam. * Updated compatibility list. * For mod authors: diff --git a/src/SMAPI/Framework/ModLoading/AssemblyLoader.cs b/src/SMAPI/Framework/ModLoading/AssemblyLoader.cs index 3606eb66..2b71038a 100644 --- a/src/SMAPI/Framework/ModLoading/AssemblyLoader.cs +++ b/src/SMAPI/Framework/ModLoading/AssemblyLoader.cs @@ -61,6 +61,7 @@ namespace StardewModdingAPI.Framework.ModLoading this.AssemblyDefinitionResolver = this.TrackForDisposal(new AssemblyDefinitionResolver()); this.AssemblyDefinitionResolver.AddSearchDirectory(Constants.ExecutionPath); this.AssemblyDefinitionResolver.AddSearchDirectory(Constants.InternalFilesPath); + this.AssemblyDefinitionResolver.Add(AssemblyDefinition.ReadAssembly(typeof(SGame).Assembly.Location)); // for some reason Mono.Cecil can't resolve SMAPI in very specific cases involving unofficial 64-bit Stardew Valley when launched through Steam (for some players only) // generate type => assembly lookup for types which should be rewritten this.TypeAssemblies = new Dictionary(); -- cgit