From cbd38b3b73bb1e428c183025b5e1d9e785b6c040 Mon Sep 17 00:00:00 2001 From: comp500 Date: Wed, 31 May 2023 16:08:10 +0100 Subject: [PATCH] CF: Treat versions with no loader as equal in loader comparison --- curseforge/curseforge.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/curseforge/curseforge.go b/curseforge/curseforge.go index c3958cb..120f9ff 100644 --- a/curseforge/curseforge.go +++ b/curseforge/curseforge.go @@ -305,8 +305,13 @@ func findLatestFile(modInfoData modInfo, mcVersions []string, packLoaders []stri // Compare first by Minecraft version (prefer higher indexes of mcVersions) compare := int32(mcVerIdx - bestMcVer) if compare == 0 { - // Prefer higher loader indexes - compare = int32(loaderIdx) - int32(bestLoaderType) + // Treat unmarked versions as neutral (i.e. same as others) + if bestLoaderType == modloaderTypeAny || loaderIdx == modloaderTypeAny { + compare = 0 + } else { + // Prefer higher loader indexes + compare = int32(loaderIdx) - int32(bestLoaderType) + } } if compare == 0 { // Other comparisons are equal, compare by ID instead @@ -332,8 +337,13 @@ func findLatestFile(modInfoData modInfo, mcVersions []string, packLoaders []stri // Compare first by Minecraft version (prefer higher indexes of mcVersions) compare := int32(mcVerIdx - bestMcVer) if compare == 0 { - // Prefer higher loader indexes - compare = int32(loaderIdx) - int32(bestLoaderType) + // Treat unmarked versions as neutral (i.e. same as others) + if bestLoaderType == modloaderTypeAny || loaderIdx == modloaderTypeAny { + compare = 0 + } else { + // Prefer higher loader indexes + compare = int32(loaderIdx) - int32(bestLoaderType) + } } if compare == 0 { // Other comparisons are equal, compare by ID instead