From 7fe4c282af77ecf87ec84879b4b5fff3d115f81e Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Thu, 26 Sep 2024 20:42:27 -0500 Subject: [PATCH] auto-cf: support three-part modloader IDs --- .../helpers/curseforge/CurseForgeInstaller.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/itzg/helpers/curseforge/CurseForgeInstaller.java b/src/main/java/me/itzg/helpers/curseforge/CurseForgeInstaller.java index 9490c28a..c981e0ca 100644 --- a/src/main/java/me/itzg/helpers/curseforge/CurseForgeInstaller.java +++ b/src/main/java/me/itzg/helpers/curseforge/CurseForgeInstaller.java @@ -941,24 +941,28 @@ private boolean isServerMod(CurseForgeFile file) { private void prepareModLoader(String id, String minecraftVersion) { log.debug("Preparing mod loader given id={} minecraftVersion={}", id, minecraftVersion); - final String[] parts = id.split("-", 2); - if (parts.length != 2) { + // id could be values like + // neoforge-1.20.1-47.1.99 + final String[] parts = id.split("-", 3); + if (parts.length < 2) { throw new GenericException("Unknown modloader ID: " + id); } + final String loaderVersion = parts.length == 2 ? parts[1] : parts[2]; + try (SharedFetch sharedFetch = Fetch.sharedFetch("install-curseforge", sharedFetchOptions)) { switch (parts[0]) { case "forge": - prepareForge(sharedFetch, minecraftVersion, parts[1]); + prepareForge(sharedFetch, minecraftVersion, loaderVersion); break; case "neoforge": - prepareNeoForge(sharedFetch, minecraftVersion, parts[1]); + prepareNeoForge(sharedFetch, minecraftVersion, loaderVersion); break; case "fabric": - prepareFabric(minecraftVersion, parts[1]); + prepareFabric(minecraftVersion, loaderVersion); break; default: