@@ -941,24 +941,28 @@ private boolean isServerMod(CurseForgeFile file) {
941941 private void prepareModLoader (String id , String minecraftVersion ) {
942942 log .debug ("Preparing mod loader given id={} minecraftVersion={}" , id , minecraftVersion );
943943
944- final String [] parts = id .split ("-" , 2 );
945- if (parts .length != 2 ) {
944+ // id could be values like
945+ // neoforge-1.20.1-47.1.99
946+ final String [] parts = id .split ("-" , 3 );
947+ if (parts .length < 2 ) {
946948 throw new GenericException ("Unknown modloader ID: " + id );
947949 }
948950
951+ final String loaderVersion = parts .length == 2 ? parts [1 ] : parts [2 ];
952+
949953 try (SharedFetch sharedFetch = Fetch .sharedFetch ("install-curseforge" , sharedFetchOptions )) {
950954
951955 switch (parts [0 ]) {
952956 case "forge" :
953- prepareForge (sharedFetch , minecraftVersion , parts [ 1 ] );
957+ prepareForge (sharedFetch , minecraftVersion , loaderVersion );
954958 break ;
955959
956960 case "neoforge" :
957- prepareNeoForge (sharedFetch , minecraftVersion , parts [ 1 ] );
961+ prepareNeoForge (sharedFetch , minecraftVersion , loaderVersion );
958962 break ;
959963
960964 case "fabric" :
961- prepareFabric (minecraftVersion , parts [ 1 ] );
965+ prepareFabric (minecraftVersion , loaderVersion );
962966 break ;
963967
964968 default :
0 commit comments