diff options
author | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2022-11-11 21:43:42 -0500 |
---|---|---|
committer | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2022-11-11 21:43:42 -0500 |
commit | c1e3b25dcaff2406fa1e3a457c1ba9c0f8ecda7f (patch) | |
tree | 954e9fcddbc2f558aaa8c6b39d1f87a958feccb7 /src/SMAPI | |
parent | 9771cefa6a695b9e13737ccf37222810b3de3015 (diff) | |
download | SMAPI-c1e3b25dcaff2406fa1e3a457c1ba9c0f8ecda7f.tar.gz SMAPI-c1e3b25dcaff2406fa1e3a457c1ba9c0f8ecda7f.tar.bz2 SMAPI-c1e3b25dcaff2406fa1e3a457c1ba9c0f8ecda7f.zip |
fix load-early/late mods not correctly sorted relative to others in the same list
Diffstat (limited to 'src/SMAPI')
-rw-r--r-- | src/SMAPI/Framework/ModLoading/ModResolver.cs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/SMAPI/Framework/ModLoading/ModResolver.cs b/src/SMAPI/Framework/ModLoading/ModResolver.cs index 96975e05..cb62e16f 100644 --- a/src/SMAPI/Framework/ModLoading/ModResolver.cs +++ b/src/SMAPI/Framework/ModLoading/ModResolver.cs @@ -174,14 +174,20 @@ namespace StardewModdingAPI.Framework.ModLoading if (!modIdsToLoadEarly.Any() && !modIdsToLoadLate.Any()) return mods; + string[] earlyArray = modIdsToLoadEarly.ToArray(); + string[] lateArray = modIdsToLoadLate.ToArray(); + return mods .OrderBy(mod => { string id = mod.Manifest.UniqueID; - if (modIdsToLoadEarly.Contains(id)) - return -1; - if (modIdsToLoadLate.Contains(id)) - return 1; + + if (modIdsToLoadEarly.TryGetValue(id, out string? actualId)) + return -int.MaxValue + Array.IndexOf(earlyArray, actualId); + + if (modIdsToLoadLate.TryGetValue(id, out actualId)) + return int.MaxValue - Array.IndexOf(lateArray, actualId); + return 0; }) .ToArray(); |