From f8adfda0220279c343904f6cc339f2b2e1e00f13 Mon Sep 17 00:00:00 2001 From: froehlichA Date: Wed, 27 Jul 2022 17:24:52 +0200 Subject: [PATCH] fix issue with quilt mods being selected for forge modpacks --- src/api/cfcore.nim | 4 ++-- src/modpack/version.nim | 2 +- tests/modpack/tinstall.nim | 13 ++++++++++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/api/cfcore.nim b/src/api/cfcore.nim index 111ac68..c994e51 100644 --- a/src/api/cfcore.nim +++ b/src/api/cfcore.nim @@ -127,9 +127,9 @@ proc isFabricCompatible*(file: CfAddonFile): bool = proc isForgeCompatible*(file: CfAddonFile): bool = ## returns true if `file` is compatible with the forge loader. - if file.name.toLower.match(re".*\Wfabric\W.*"): + if file.name.toLower.match(re".*\Wquilt\W.*") or file.name.toLower.match(re".*\Wfabric\W.*"): return false - if not ("Fabric".Version in file.gameVersions and not ("Forge".Version in file.gameVersions)): + if "Forge".Version in file.gameVersions or not ("Fabric".Version in file.gameVersions or "Quilt".Version in file.gameVersions): return true if file.name.toLower.match(re".*\Wforge\W.*"): return true diff --git a/src/modpack/version.nim b/src/modpack/version.nim index abc078f..b2b949f 100644 --- a/src/modpack/version.nim +++ b/src/modpack/version.nim @@ -50,4 +50,4 @@ proc `<=`*(v1: Version, v2: Version): bool = v1 < v2 or v1 == v2 proc proper*(v: seq[Version]): seq[Version] = ## filter out "Forge" and "Fabric" values - return v.filter((x) => x != "Forge".Version and x != "Fabric".Version) \ No newline at end of file + return v.filter((x) => x != "Forge".Version and x != "Fabric".Version and x != "Quilt".Version) \ No newline at end of file diff --git a/tests/modpack/tinstall.nim b/tests/modpack/tinstall.nim index e62552b..5cebf22 100644 --- a/tests/modpack/tinstall.nim +++ b/tests/modpack/tinstall.nim @@ -235,4 +235,15 @@ block: # select out of mixed mods mcVersion = "1.16.2".Version doAssert mods.selectAddonFile(loader, mcVersion, InstallStrategy.Stable) == mods[0] doAssert mods.selectAddonFile(loader, mcVersion, InstallStrategy.Recommended) == mods[0] - doAssert mods.selectAddonFile(loader, mcVersion, InstallStrategy.Newest) == mods[0] \ No newline at end of file + doAssert mods.selectAddonFile(loader, mcVersion, InstallStrategy.Newest) == mods[0] + +block: # prevent quilt mods from being selected for forge + let loader = Loader.Forge + let mcVersion = "1.16.1".Version + let mods = @[ + initCfAddonFile(801, "abc-1.3.2.jar", @["Quilt", "1.16.1", "1.16.2"], CfAddonFileReleaseType.Release), + initCfAddonFile(701, "abc-1.3.2.jar", @["Fabric", "1.16.1", "1.16.2"], CfAddonFileReleaseType.Release), + initCfAddonFile(601, "abc-1.2.2.jar", @["Forge", "1.16", "1.16.1"], CfAddonFileReleaseType.Alpha), + ] + + doAssert mods.selectAddonFile(loader, mcVersion, InstallStrategy.Stable) == mods[2] \ No newline at end of file