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:
SashegDev
2026-07-13 14:02:20 +00:00
parent 5c8e93fd95
commit 546652f44c
@@ -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);
}
} }
} }