Forge 1.17+ support (not tested)

This commit is contained in:
Duy Tran Khanh 2021-10-17 16:33:34 +07:00 committed by GitHub
parent f30b4a23e0
commit 0fb6f28047
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -123,7 +123,7 @@ public final class Tools {
else gamedirPath = Tools.DIR_GAME_NEW; else gamedirPath = Tools.DIR_GAME_NEW;
if(pvcConfig != null && pvcConfig.jvmArgs != null && !pvcConfig.jvmArgs.isEmpty()) LauncherPreferences.PREF_CUSTOM_JAVA_ARGS = pvcConfig.jvmArgs; if(pvcConfig != null && pvcConfig.jvmArgs != null && !pvcConfig.jvmArgs.isEmpty()) LauncherPreferences.PREF_CUSTOM_JAVA_ARGS = pvcConfig.jvmArgs;
PojavLoginActivity.disableSplash(gamedirPath); PojavLoginActivity.disableSplash(gamedirPath);
String[] launchArgs = getMinecraftArgs(profile, versionInfo, gamedirPath); String[] launchArgs = getMinecraftClientArgs(profile, versionInfo, gamedirPath);
// ctx.appendlnToLog("Minecraft Args: " + Arrays.toString(launchArgs)); // ctx.appendlnToLog("Minecraft Args: " + Arrays.toString(launchArgs));
@ -149,6 +149,7 @@ public final class Tools {
} }
*/ */
javaArgList.addAll(Arrays.asList(getMinecraftJVMArgs(versionInfo, gamedirPath)));
javaArgList.add("-cp"); javaArgList.add("-cp");
javaArgList.add(getLWJGL3ClassPath() + ":" + launchClassPath); javaArgList.add(getLWJGL3ClassPath() + ":" + launchClassPath);
@ -182,7 +183,45 @@ public final class Tools {
javaArgList.add(cacioClasspath.toString()); javaArgList.add(cacioClasspath.toString());
} }
public static String[] getMinecraftArgs(MinecraftAccount profile, JMinecraftVersionList.Version versionInfo, String strGameDir) { public static String[] getMinecraftJVMArgs(JMinecraftVersionList.Version versionInfo, String strGameDir) {
// Parse Forge 1.17+ additional JVM Arguments
if (versionInfo.inheritsFrom == null || versionInfo.arguments == null || versionInfo.arguments.jvm == null) {
return;
}
Map<String, String> varArgMap = new ArrayMap<>();
varArgMap.put("classpath_separator", ":");
varArgMap.put("library_directory", strGameDir + "/libraries");
List<String> minecraftArgs = new ArrayList<String>();
if (versionInfo.arguments != null) {
for (Object arg : versionInfo.arguments.jvm) {
if (arg instanceof String) {
minecraftArgs.add((String) arg);
} else {
/*
JMinecraftVersionList.Arguments.ArgValue argv = (JMinecraftVersionList.Arguments.ArgValue) arg;
if (argv.values != null) {
minecraftArgs.add(argv.values[0]);
} else {
for (JMinecraftVersionList.Arguments.ArgValue.ArgRules rule : arg.rules) {
// rule.action = allow
// TODO implement this
}
}
*/
}
}
}
String[] argsFromJson = JSONUtils.insertJSONValueList(splitAndFilterEmpty(minecraftArgs.toArray(new String[0])), varArgMap);
// Tools.dialogOnUiThread(this, "Result args", Arrays.asList(argsFromJson).toString());
return argsFromJson;
}
public static String[] getMinecraftClientArgs(MinecraftAccount profile, JMinecraftVersionList.Version versionInfo, String strGameDir) {
String username = profile.username; String username = profile.username;
String versionName = versionInfo.id; String versionName = versionInfo.id;
if (versionInfo.inheritsFrom != null) { if (versionInfo.inheritsFrom != null) {