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
* 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
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;
//
// 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.
//
@ -38,7 +38,7 @@ namespace StardewModdingAPI.Mods.ErrorHandler.ModPatches
public PyTkPatcher(IModRegistry modRegistry)
{
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;
}

View File

@ -17,7 +17,7 @@
LogModInfo[] outdatedMods = log?.Mods.Where(mod => mod.HasUpdate).ToArray() ?? Array.Empty<LogModInfo>();
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 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
IDictionary<string, bool> defaultFilters = Enum
@ -257,7 +257,7 @@ else if (log?.IsValid == true)
}
@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())
{

View File

@ -212,7 +212,7 @@ namespace StardewModdingAPI.Framework.ContentManagers
// current file has a '.pytk.json' rescale file though, since PyTK may still
// rescale it if the original asset or another edit gets rescaled.
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);
// 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.
{
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