From 2ce73ad0326c95e03e4c02fda501e2bbfc5a08cb Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Sun, 26 Jan 2025 09:19:07 +0100 Subject: [PATCH] list only relevant modrinth versions --- ModpackUpdater.Manager/ModpackFactory.cs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/ModpackUpdater.Manager/ModpackFactory.cs b/ModpackUpdater.Manager/ModpackFactory.cs index fbd927f..03150b2 100644 --- a/ModpackUpdater.Manager/ModpackFactory.cs +++ b/ModpackUpdater.Manager/ModpackFactory.cs @@ -82,7 +82,7 @@ public class ModpackFactory } else if (action.SourceType == SourceType.Modrinth) { - var res = await modrinth.Version.GetProjectVersionListAsync(action.SourceName); + var res = await modrinth.Version.GetProjectVersionListAsync(action.SourceName, gameVersions: GetGameVersionForModrinth(gameVersion), loaders: GetModLoaderForModrinth(modLoader)); return res.Select(v => new KeyValuePair($"{v.VersionNumber} {v.ProjectVersionType} {v.Name}", v.Id)).ToArray(); } @@ -103,4 +103,26 @@ public class ModpackFactory _ => null, }; } + + private string[] GetModLoaderForModrinth(ModLoader modLoader) + { + return modLoader switch + { + ModLoader.Any => [], + ModLoader.Forge => ["forge"], + ModLoader.NeoForge => ["neoforge"], + ModLoader.Fabric => ["fabric"], + ModLoader.LiteLoader => ["liteloader"], + ModLoader.Cauldron => ["cauldron"], + ModLoader.Quilt => ["quilt"], + _ => null, + }; + } + + private string[] GetGameVersionForModrinth(string? gameVersion) + { + if (string.IsNullOrWhiteSpace(gameVersion) || gameVersion == "*") + return []; + return [gameVersion]; + } }