Fix: use vanilla classpath for modloaders (fabric/forge/neoforge), add JS debug logging
This commit is contained in:
+27
-5
@@ -36,15 +36,37 @@ public class LaunchCommandBuilder {
|
|||||||
}
|
}
|
||||||
command.add("-Djava.library.path=" + nativesDir.toAbsolutePath());
|
command.add("-Djava.library.path=" + nativesDir.toAbsolutePath());
|
||||||
|
|
||||||
|
String loaderType = instance.getLoaderType().toLowerCase();
|
||||||
|
boolean isModloader = "fabric".equals(loaderType) || "forge".equals(loaderType) || "neoforge".equals(loaderType);
|
||||||
|
|
||||||
VersionManifest manifest = resolveVersionManifest();
|
VersionManifest manifest = resolveVersionManifest();
|
||||||
if (manifest != null) {
|
|
||||||
|
// For modloaders, always use vanilla classpath with all libraries
|
||||||
|
if (isModloader) {
|
||||||
|
System.out.println(ZAnsi.cyan(" Modloader detected (" + loaderType + "), using vanilla classpath"));
|
||||||
command.add("-cp");
|
command.add("-cp");
|
||||||
command.add(buildClasspathFromManifest(manifest));
|
command.add(buildVanillaClasspath());
|
||||||
|
command.add(getVanillaMainClass());
|
||||||
|
command.addAll(getVanillaGameArguments(options));
|
||||||
|
} else if (manifest != null) {
|
||||||
|
String classpath = buildClasspathFromManifest(manifest);
|
||||||
|
|
||||||
|
// Fallback if classpath is empty
|
||||||
|
if (classpath.isEmpty() || classpath.equals(instance.getPath().resolve("versions").resolve(getVersionId()).resolve(getVersionId() + ".jar").toAbsolutePath().toString())) {
|
||||||
|
System.out.println(ZAnsi.yellow(" manifest classpath пустой, использую vanilla classpath"));
|
||||||
|
command.add("-cp");
|
||||||
|
command.add(buildVanillaClasspath());
|
||||||
|
command.add(getVanillaMainClass());
|
||||||
|
command.addAll(getVanillaGameArguments(options));
|
||||||
|
} else {
|
||||||
|
command.add("-cp");
|
||||||
|
command.add(classpath);
|
||||||
|
|
||||||
String mainClass = resolveMainClass(manifest);
|
String mainClass = resolveMainClass(manifest);
|
||||||
command.add(mainClass);
|
command.add(mainClass);
|
||||||
|
|
||||||
command.addAll(resolveGameArguments(manifest, options));
|
command.addAll(resolveGameArguments(manifest, options));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
command.add("-cp");
|
command.add("-cp");
|
||||||
command.add(buildVanillaClasspath());
|
command.add(buildVanillaClasspath());
|
||||||
|
|||||||
@@ -268,8 +268,10 @@ function startLogPolling() {
|
|||||||
|
|
||||||
// Game logs
|
// Game logs
|
||||||
const gameResult = await apiCall('/game-logs');
|
const gameResult = await apiCall('/game-logs');
|
||||||
|
console.log('[DEBUG] Game logs request:', gameResult.success, 'length:', gameResult.data ? gameResult.data.length : 0);
|
||||||
if (gameResult.success && gameResult.data && gameResult.data.length > lastGameLogLength) {
|
if (gameResult.success && gameResult.data && gameResult.data.length > lastGameLogLength) {
|
||||||
const newLogs = gameResult.data.substring(lastGameLogLength);
|
const newLogs = gameResult.data.substring(lastGameLogLength);
|
||||||
|
console.log('[DEBUG] New game logs:', newLogs.substring(0, 200));
|
||||||
const lines = newLogs.split('\n').filter(l => l.trim());
|
const lines = newLogs.split('\n').filter(l => l.trim());
|
||||||
lines.forEach(line => {
|
lines.forEach(line => {
|
||||||
log('[GAME] ' + line, 'info');
|
log('[GAME] ' + line, 'info');
|
||||||
|
|||||||
Reference in New Issue
Block a user