@@ -7,7 +7,7 @@ namespace CurseForge.Minecraft.Serverpack.Launcher
77{
88 partial class Program
99 {
10- private static async Task InstallForgeAsync ( string installPath , string javaArgs , bool startServer )
10+ private static async Task InstallForgeAsync ( string installPath , string minecraftVersion , string modloaderVersion , string javaArgs )
1111 {
1212 var forgeInstaller = Directory . EnumerateFiles ( installPath ) . FirstOrDefault ( f => f . Contains ( "forge-" ) && f . Contains ( "-installer.jar" ) && f . EndsWith ( ".jar" ) ) ;
1313 if ( forgeInstaller == null )
@@ -20,7 +20,13 @@ private static async Task InstallForgeAsync(string installPath, string javaArgs,
2020 "--installServer"
2121 } ;
2222
23- await RunProcessAsync ( installPath , GetJavaExecutable ( ) , false , arguments ) ;
23+ var mcVersion = new Version ( minecraftVersion ) ;
24+
25+ var javaPath = mcVersion . Minor <= 16 ? GetJavaExecutable ( ) : Path . Combine ( installPath , "runtime" , "bin" , GetJavaExecutable ( ) ) ;
26+
27+ await RunProcessAsync ( installPath , javaPath , false , arguments ) ;
28+
29+ var runFile = Path . Combine ( installPath , OperatingSystem . IsWindows ( ) ? "run.bat" : "run.sh" ) ;
2430
2531 var forgeLoader = Directory . EnumerateFiles ( installPath , "*.jar" , SearchOption . AllDirectories ) . FirstOrDefault ( f => f . Contains ( "forge-" ) && ! f . Contains ( "-installer.jar" ) && f . EndsWith ( ".jar" ) ) ;
2632
@@ -29,9 +35,18 @@ private static async Task InstallForgeAsync(string installPath, string javaArgs,
2935 Console . WriteLine ( "Could not find the loader, please launch server manually" ) ;
3036 }
3137
32- var javaPath = Path . Combine ( installPath , "runtime" , "bin" , GetJavaExecutable ( ) ) ;
33-
34- CreateLaunchScriptIfMissing ( installPath , javaPath , javaArgs , forgeLoader ) ;
38+ // This is if Forge started using their new run-files, instead of putting the jar in the folder
39+ if ( File . Exists ( runFile ) )
40+ {
41+ var newForgePath = Path . Combine ( installPath , "libraries" , "net" , "minecraftforge" , "forge" ) ;
42+ var forgeVersion = Directory . EnumerateDirectories ( newForgePath ) . FirstOrDefault ( ) ;
43+ var configFile = Path . Combine ( forgeVersion , OperatingSystem . IsWindows ( ) ? "win_args.txt" : "unix_args.txt" ) ;
44+ CreateSpecialLaunchScriptIfMissing ( installPath , javaPath , javaArgs , $ "@{ configFile } ") ;
45+ }
46+ else
47+ {
48+ CreateLaunchScriptIfMissing ( installPath , javaPath , javaArgs , forgeLoader ) ;
49+ }
3550 }
3651 }
3752}
0 commit comments