update compatibility workaround for the recent PyTK update

This commit is contained in:
Jesse Plamondon-Willard 2022-08-29 18:00:41 -04:00
parent c2f474bf88
commit 2bb8e8353b
No known key found for this signature in database
GPG Key ID: CF8B1456B3E29F49
5 changed files with 10 additions and 8 deletions

View File

@ -8,7 +8,9 @@
--> -->
## Upcoming release ## Upcoming release
* Fixed broken mods sometimes incorrectly listed as duplicate. * For players:
* Updated compatibility workaround for the recent PyTK update.
* Fixed broken mods sometimes incorrectly listed as duplicate.
## 3.16.0 ## 3.16.0
Released 22 August 2022 for Stardew Valley 1.5.6 or later. See [release highlights](https://www.patreon.com/posts/70797008). Released 22 August 2022 for Stardew Valley 1.5.6 or later. See [release highlights](https://www.patreon.com/posts/70797008).

View File

@ -10,7 +10,7 @@ using StardewModdingAPI.Internal;
using StardewModdingAPI.Internal.Patching; using StardewModdingAPI.Internal.Patching;
// //
// This is part of a three-part fix for PyTK 1.23.0 and earlier. When removing this, search // This is part of a three-part fix for PyTK 1.23.* and earlier. When removing this, search
// 'Platonymous.Toolkit' to find the other part in SMAPI and Content Patcher. // 'Platonymous.Toolkit' to find the other part in SMAPI and Content Patcher.
// //
@ -38,7 +38,7 @@ namespace StardewModdingAPI.Mods.ErrorHandler.ModPatches
public PyTkPatcher(IModRegistry modRegistry) public PyTkPatcher(IModRegistry modRegistry)
{ {
IModMetadata? pyTk = (IModMetadata?)modRegistry.Get(@"Platonymous.Toolkit"); IModMetadata? pyTk = (IModMetadata?)modRegistry.Get(@"Platonymous.Toolkit");
if (pyTk is not null && !pyTk.Manifest.Version.IsNewerThan("1.23.0")) if (pyTk is not null && pyTk.Manifest.Version.IsOlderThan("1.24.0"))
PyTkPatcher.PyTk = pyTk; PyTkPatcher.PyTk = pyTk;
} }

View File

@ -17,7 +17,7 @@
LogModInfo[] outdatedMods = log?.Mods.Where(mod => mod.HasUpdate).ToArray() ?? Array.Empty<LogModInfo>(); LogModInfo[] outdatedMods = log?.Mods.Where(mod => mod.HasUpdate).ToArray() ?? Array.Empty<LogModInfo>();
LogModInfo? errorHandler = log?.Mods.FirstOrDefault(p => p.IsCodeMod && p.Name == "Error Handler"); LogModInfo? errorHandler = log?.Mods.FirstOrDefault(p => p.IsCodeMod && p.Name == "Error Handler");
bool hasOlderErrorHandler = errorHandler?.GetParsedVersion() is not null && log?.ApiVersionParsed is not null && log.ApiVersionParsed.IsNewerThan(errorHandler.GetParsedVersion()); bool hasOlderErrorHandler = errorHandler?.GetParsedVersion() is not null && log?.ApiVersionParsed is not null && log.ApiVersionParsed.IsNewerThan(errorHandler.GetParsedVersion());
bool isPyTkCompatibilityMode = log?.ApiVersionParsed?.IsOlderThan("3.15.0") is false && log.Mods.Any(p => p.IsCodeMod && p.Name == "PyTK" && p.GetParsedVersion()?.IsOlderThan("1.23.1") is true); bool isPyTkCompatibilityMode = log?.ApiVersionParsed?.IsOlderThan("3.15.0") is false && log.Mods.Any(p => p.IsCodeMod && p.Name == "PyTK" && p.GetParsedVersion()?.IsOlderThan("1.24.0") is true);
// get filters // get filters
IDictionary<string, bool> defaultFilters = Enum IDictionary<string, bool> defaultFilters = Enum
@ -257,7 +257,7 @@ else if (log?.IsValid == true)
} }
@if (isPyTkCompatibilityMode) @if (isPyTkCompatibilityMode)
{ {
<li>PyTK 1.23.0 or earlier isn't compatible with newer SMAPI performance optimizations. This may increase loading times or in-game lag.</li> <li>PyTK 1.23.* or earlier isn't compatible with newer SMAPI performance optimizations. This may increase loading times or in-game lag.</li>
} }
@if (outdatedMods.Any()) @if (outdatedMods.Any())
{ {

View File

@ -212,7 +212,7 @@ namespace StardewModdingAPI.Framework.ContentManagers
// current file has a '.pytk.json' rescale file though, since PyTK may still // current file has a '.pytk.json' rescale file though, since PyTK may still
// rescale it if the original asset or another edit gets rescaled. // rescale it if the original asset or another edit gets rescaled.
asRawData = false; asRawData = false;
this.Monitor.LogOnce("Enabled compatibility mode for PyTK 1.23.0 or earlier. This won't cause any issues, but may impact performance.", LogLevel.Warn); this.Monitor.LogOnce("Enabled compatibility mode for PyTK 1.23.* or earlier. This won't cause any issues, but may impact performance.", LogLevel.Warn);
} }
} }

View File

@ -1673,11 +1673,11 @@ namespace StardewModdingAPI.Framework
this.ReloadTranslations(loaded); this.ReloadTranslations(loaded);
// set temporary PyTK compatibility mode // set temporary PyTK compatibility mode
// This is part of a three-part fix for PyTK 1.23.0 and earlier. When removing this, // This is part of a three-part fix for PyTK 1.23.* and earlier. When removing this,
// search 'Platonymous.Toolkit' to find the other part in SMAPI and Content Patcher. // search 'Platonymous.Toolkit' to find the other part in SMAPI and Content Patcher.
{ {
IModInfo? pyTk = this.ModRegistry.Get("Platonymous.Toolkit"); IModInfo? pyTk = this.ModRegistry.Get("Platonymous.Toolkit");
ModContentManager.EnablePyTkLegacyMode = pyTk is not null && pyTk.Manifest.Version.IsOlderThan("1.23.1"); ModContentManager.EnablePyTkLegacyMode = pyTk is not null && pyTk.Manifest.Version.IsOlderThan("1.24.0");
} }
// initialize loaded non-content-pack mods // initialize loaded non-content-pack mods