ИНТЕРФЕЙС ФИКСЕСССС БЛЯЯЯ а так же фикс CLI
This commit is contained in:
@@ -354,7 +354,7 @@ public class Bootstrap {
|
||||
}
|
||||
|
||||
private static void launchJFX() throws Exception {
|
||||
Path javaBin = findJava();
|
||||
Path javaBin = findJava(false); // false = use javaw for GUI mode
|
||||
Path jarPath = getLauncherJar();
|
||||
|
||||
log("Запуск JFX режима...");
|
||||
@@ -393,8 +393,6 @@ public class Bootstrap {
|
||||
|
||||
ProcessBuilder pb = new ProcessBuilder(cmd);
|
||||
pb.directory(baseDir.toFile());
|
||||
|
||||
// inheritIO позволяет лаунчеру закрываться при закрытии консоли
|
||||
pb.inheritIO();
|
||||
|
||||
Process p = pb.start();
|
||||
@@ -404,8 +402,8 @@ public class Bootstrap {
|
||||
}
|
||||
|
||||
private static void launchCLI() throws Exception {
|
||||
Path javaBin = findJava();
|
||||
Path jarPath = getLauncherJar();
|
||||
Path javaBin = findJava(true);
|
||||
Path jarPath = getLauncherJar(); // <-- added this line
|
||||
|
||||
log("Запуск CLI режима...");
|
||||
log("Java: " + javaBin);
|
||||
@@ -428,17 +426,23 @@ public class Bootstrap {
|
||||
|
||||
ProcessBuilder pb = new ProcessBuilder(cmd);
|
||||
pb.directory(baseDir.toFile());
|
||||
pb.inheritIO();
|
||||
Process p = pb.start();
|
||||
pb.redirectErrorStream(true);
|
||||
|
||||
Process p = pb.inheritIO().start();
|
||||
int code = p.waitFor();
|
||||
log("Завершено с кодом: " + code);
|
||||
System.exit(code);
|
||||
}
|
||||
|
||||
private static Path findJava() {
|
||||
private static Path findJava(boolean needConsole) {
|
||||
String os = System.getProperty("os.name").toLowerCase();
|
||||
// Используем javaw для скрытия консоли в JFX режиме
|
||||
String javaExe = os.contains("windows") ? "javaw.exe" : "java";
|
||||
String javaExe;
|
||||
|
||||
if (needConsole || !os.contains("windows")) {
|
||||
javaExe = "java";
|
||||
} else {
|
||||
javaExe = "javaw.exe";
|
||||
}
|
||||
|
||||
// Сначала ищем jre21/bin/java рядом с лаунчером
|
||||
Path javaBin = baseDir.resolve("jre21").resolve("bin").resolve(javaExe);
|
||||
|
||||
@@ -84,6 +84,8 @@ public class Main {
|
||||
System.out.println(ZAnsi.brightGreen("Добро пожаловать обратно, " + sessionInfo.getUsername() + "!"));
|
||||
}
|
||||
|
||||
System.out.println(ZAnsi.cyan("Запуск CLI режима..."));
|
||||
|
||||
// === ГЛАВНЫЙ ЦИКЛ ===
|
||||
try {
|
||||
mainLoop();
|
||||
|
||||
@@ -13,6 +13,7 @@ import me.sashegdev.zernmc.launcher.api.launch.LaunchService;
|
||||
import me.sashegdev.zernmc.launcher.auth.AuthManager;
|
||||
import me.sashegdev.zernmc.launcher.minecraft.Instance;
|
||||
import me.sashegdev.zernmc.launcher.minecraft.InstanceManager;
|
||||
import me.sashegdev.zernmc.launcher.minecraft.MinecraftLib;
|
||||
import me.sashegdev.zernmc.launcher.minecraft.launch.LaunchCommandBuilder;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
@@ -427,8 +428,9 @@ public class JFXLauncher extends Application {
|
||||
String name = body.get("name");
|
||||
String version = body.get("version");
|
||||
String loader = body.get("loader");
|
||||
String loaderVersion = body.get("loaderVersion");
|
||||
|
||||
log("Установка: " + name + " " + version + " " + loader);
|
||||
log("Установка: " + name + " " + version + " " + loader + (loaderVersion != null ? " " + loaderVersion : ""));
|
||||
|
||||
var createResult = api.instances().createInstance(name);
|
||||
if (!createResult.isSuccess()) {
|
||||
@@ -440,11 +442,30 @@ public class JFXLauncher extends Application {
|
||||
if (instance != null) {
|
||||
instance.setMinecraftVersion(version);
|
||||
instance.setLoaderType(loader);
|
||||
if (loaderVersion != null) {
|
||||
instance.setLoaderVersion(loaderVersion);
|
||||
}
|
||||
|
||||
MinecraftLib lib = new MinecraftLib(instance);
|
||||
|
||||
boolean success = false;
|
||||
if ("vanilla".equalsIgnoreCase(loader)) {
|
||||
success = lib.installMinecraft(version);
|
||||
} else {
|
||||
success = lib.installPack(name, version, loader, loaderVersion != null ? loaderVersion : "");
|
||||
}
|
||||
|
||||
if (success) {
|
||||
log("Установлено: " + name);
|
||||
sendJson(exchange, Map.of("success", true, "data", true));
|
||||
} else {
|
||||
sendJson(exchange, Map.of("success", false, "error", "Ошибка установки"));
|
||||
}
|
||||
} else {
|
||||
sendJson(exchange, Map.of("success", false, "error", "Instance not found"));
|
||||
}
|
||||
|
||||
sendJson(exchange, Map.of("success", true, "data", true));
|
||||
log("Установлено: " + name);
|
||||
} catch (Exception e) {
|
||||
log("Ошибка установки: " + e.getMessage());
|
||||
sendJson(exchange, Map.of("success", false, "error", e.getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -683,6 +683,11 @@ class LauncherApp {
|
||||
entry.className = 'log-entry ' + type;
|
||||
entry.textContent = '[' + new Date().toLocaleTimeString() + '] ' + message;
|
||||
container.appendChild(entry);
|
||||
|
||||
while (container.children.length > 500) {
|
||||
container.removeChild(container.firstChild);
|
||||
}
|
||||
|
||||
container.scrollTop = container.scrollHeight;
|
||||
}
|
||||
|
||||
|
||||
@@ -500,6 +500,7 @@ body {
|
||||
flex-direction: column;
|
||||
padding: 20px;
|
||||
background: var(--bg-primary);
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.logs-section {
|
||||
@@ -510,6 +511,7 @@ body {
|
||||
border-radius: var(--radius-md);
|
||||
border: 1px solid var(--border-color);
|
||||
overflow: hidden;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.logs-header {
|
||||
|
||||
Reference in New Issue
Block a user