fix: include version jar in classpath for Forge/NeoForge module resolution
The Minecraft client jar (version jar) contains all MC classes including PreparableReloadListener. Forges
This commit is contained in:
+9
-15
@@ -544,25 +544,19 @@ public class LaunchCommandBuilder {
|
||||
}
|
||||
|
||||
System.out.println(ZAnsi.cyan(" buildClasspathFromManifest: " + paths.size() + " libraries in classpath"));
|
||||
if (isForgeLike) {
|
||||
System.out.println(ZAnsi.cyan(" Version ID: " + getVersionId() + " (MC: " + instance.getMinecraftVersion() + ")"));
|
||||
System.out.println(ZAnsi.cyan(" Paths dir: " + instance.getPath().resolve("versions")));
|
||||
}
|
||||
|
||||
Path versionJar = findVersionJar();
|
||||
if (versionJar != null) {
|
||||
// For Forge/NeoForge: do NOT add version jar to classpath.
|
||||
// Forge loads Minecraft classes through its own module system
|
||||
// (securejarhandler + BootstrapLauncher module layer). Having the
|
||||
// version jar on the classpath creates an automatic module (e.g.
|
||||
// _1._20._1) that conflicts with Forge's "minecraft" module,
|
||||
// causing ResolutionException split-package errors.
|
||||
if (isForgeLike) {
|
||||
System.out.println(ZAnsi.cyan(" Skipping version jar for Forge/NeoForge (loaded via module system): " + versionJar.getFileName()));
|
||||
if (isValidJar(versionJar)) {
|
||||
paths.add(0, versionJar.toAbsolutePath().toString());
|
||||
System.out.println(ZAnsi.green(" Added version jar: " + versionJar.getFileName()));
|
||||
} else {
|
||||
if (isValidJar(versionJar)) {
|
||||
paths.add(0, versionJar.toAbsolutePath().toString());
|
||||
System.out.println(ZAnsi.green(" Added version jar: " + versionJar.getFileName()));
|
||||
} else {
|
||||
System.out.println(ZAnsi.yellow(" Corrupt version jar, deleting: " + versionJar.getFileName()));
|
||||
Files.delete(versionJar);
|
||||
}
|
||||
System.out.println(ZAnsi.yellow(" Corrupt version jar, deleting: " + versionJar.getFileName()));
|
||||
Files.delete(versionJar);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user