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]; + } }