Skip to content

Commit a465077

Browse files
committed
fix: Incorrect parsing of jvm args from JSON
This just ignored all JSONs that didn't inheritsFrom. It was assumed to be vanilla if it wasn't inheriting, the problem is that LWJGL3ify and others exist which don't have an inheritsFrom field yet contain jvm args that are needed for launch. This simply removes the known problematic vanilla arguments from being added to the launch rather than nuking the whole thing.
1 parent 8bdd702 commit a465077

1 file changed

Lines changed: 29 additions & 6 deletions

File tree

  • app_pojavlauncher/src/main/java/net/kdt/pojavlaunch

app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -735,21 +735,44 @@ public static void getCacioJavaArgs(List<String> javaArgList, boolean isJava8, A
735735

736736
public static String[] getMinecraftJVMArgs(String versionName, File gameDir) {
737737
JMinecraftVersionList.Version versionInfo = Tools.getVersionInfo(versionName, true);
738-
// Parse Forge 1.17+ additional JVM Arguments
739-
if (versionInfo.inheritsFrom == null || versionInfo.arguments == null || versionInfo.arguments.jvm == null) {
740-
return new String[0];
741-
}
742738

743739
Map<String, String> varArgMap = new ArrayMap<>();
744740
varArgMap.put("classpath_separator", ":");
745741
varArgMap.put("library_directory", DIR_HOME_LIBRARY);
746742
varArgMap.put("version_name", versionInfo.id);
747-
varArgMap.put("natives_directory", Tools.NATIVE_LIB_DIR);
743+
varArgMap.put("natives_directory", Tools.DIR_CACHE.getAbsolutePath());
748744

749745
List<String> minecraftArgs = new ArrayList<>();
750-
if (versionInfo.arguments != null) {
746+
if (versionInfo.arguments.jvm != null) {
751747
for (Object arg : versionInfo.arguments.jvm) {
752748
if (arg instanceof String) {
749+
// These are defined later on
750+
if (((String) arg).contains("java.library.path")) {
751+
continue;
752+
}
753+
if (arg.equals("-cp")) {
754+
continue;
755+
}
756+
if (arg.equals("${classpath}")){
757+
continue;
758+
}
759+
// Should fix Forge 1.17.1-37.0.12 and older from crashing
760+
// Fixed in forge on https://github.com/MinecraftForge/MinecraftForge/pull/7919
761+
// Released as Forge 1.17.1-37.0.13 in https://maven.minecraftforge.net/net/minecraftforge/forge/1.17.1-37.0.13/forge-1.17.1-37.0.13-changelog.txt
762+
// yes this duplicates it, it's fine.
763+
// FIXME: Workaround old bootstraplauncher <0.1.17 buggy behaviour. See FCL workaround
764+
// https://github.com/FCL-Team/FoldCraftLauncher/blob/00e96bcf8ddc8a550e9aba6091a73d5bee973b54/FCLCore/src/main/java/com/tungsten/fclcore/download/MaintainTask.java#L198-L200
765+
if (((String) arg).startsWith("-DignoreList=")){
766+
minecraftArgs.add(arg+",${version_name}.jar");
767+
continue;
768+
}
769+
770+
// TODO: Implement adding launcher brand and version
771+
if (((String) arg).contains("minecraft.launcher.brand") ||
772+
((String) arg).contains("minecraft.launcher.version")) {
773+
continue;
774+
}
775+
753776
minecraftArgs.add((String) arg);
754777
} //TODO: implement (?maybe?)
755778
}

0 commit comments

Comments
 (0)