diff --git a/src/main/java/me/itzg/helpers/curseforge/CurseForgeInstaller.java b/src/main/java/me/itzg/helpers/curseforge/CurseForgeInstaller.java index 2c4a53bb..74d9fa0b 100644 --- a/src/main/java/me/itzg/helpers/curseforge/CurseForgeInstaller.java +++ b/src/main/java/me/itzg/helpers/curseforge/CurseForgeInstaller.java @@ -142,6 +142,9 @@ public class CurseForgeInstaller { @Getter @Setter Duration fileDownloadRetryMinDelay = Duration.ofSeconds(5); + @Getter @Setter + private String customModLoaderVersion; + /** */ public void installFromModpackZip(Path modpackZip, String slug) { @@ -972,7 +975,13 @@ private void prepareModLoader(String id, String minecraftVersion) { } final String provider = parts[0]; - final String loaderVersion = parts.length == 2 ? parts[1] : parts[2]; + String loaderVersion = parts.length == 2 ? parts[1] : parts[2]; + + // Override with custom versions if provided + if (customModLoaderVersion != null) { + log.info("Overriding mod loader version from {} to {}", loaderVersion, customModLoaderVersion); + loaderVersion = customModLoaderVersion; + } try (SharedFetch sharedFetch = Fetch.sharedFetch("install-curseforge", sharedFetchOptions)) { diff --git a/src/main/java/me/itzg/helpers/curseforge/InstallCurseForgeCommand.java b/src/main/java/me/itzg/helpers/curseforge/InstallCurseForgeCommand.java index e469e6fd..52b3e55e 100644 --- a/src/main/java/me/itzg/helpers/curseforge/InstallCurseForgeCommand.java +++ b/src/main/java/me/itzg/helpers/curseforge/InstallCurseForgeCommand.java @@ -89,6 +89,11 @@ public class InstallCurseForgeCommand implements Callable { ) String apiKey; + @Option(names = "--mod-loader-version", paramLabel = "VERSION", + description = "Override the mod loader version specified in the modpack" + ) + String modLoaderVersion; + @ArgGroup(exclusive = false) ExcludeIncludeArgs excludeIncludeArgs = new ExcludeIncludeArgs(); @@ -233,7 +238,8 @@ public Integer call() throws Exception { .setForgeUrlArgs(forgeUrlArgs) .setMaxConcurrentDownloads(maxConcurrentDownloads) .setFileDownloadRetries(fileDownloadRetries) - .setFileDownloadRetryMinDelay(fileDownloadRetryMinDelay); + .setFileDownloadRetryMinDelay(fileDownloadRetryMinDelay) + .setCustomModLoaderVersion(modLoaderVersion); if (apiBaseUrl != null) { installer.setApiBaseUrl(apiBaseUrl);