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"));
|
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();
|
Path versionJar = findVersionJar();
|
||||||
if (versionJar != null) {
|
if (versionJar != null) {
|
||||||
// For Forge/NeoForge: do NOT add version jar to classpath.
|
if (isValidJar(versionJar)) {
|
||||||
// Forge loads Minecraft classes through its own module system
|
paths.add(0, versionJar.toAbsolutePath().toString());
|
||||||
// (securejarhandler + BootstrapLauncher module layer). Having the
|
System.out.println(ZAnsi.green(" Added version jar: " + versionJar.getFileName()));
|
||||||
// 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()));
|
|
||||||
} else {
|
} else {
|
||||||
if (isValidJar(versionJar)) {
|
System.out.println(ZAnsi.yellow(" Corrupt version jar, deleting: " + versionJar.getFileName()));
|
||||||
paths.add(0, versionJar.toAbsolutePath().toString());
|
Files.delete(versionJar);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user