@@ -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