diff --git a/launcher/launcher/src/main/java/sashegdev/zernmc/launcher/minecraft/installer/FabricInstaller.java b/launcher/launcher/src/main/java/sashegdev/zernmc/launcher/minecraft/installer/FabricInstaller.java index 0c39d49..e5781f3 100644 --- a/launcher/launcher/src/main/java/sashegdev/zernmc/launcher/minecraft/installer/FabricInstaller.java +++ b/launcher/launcher/src/main/java/sashegdev/zernmc/launcher/minecraft/installer/FabricInstaller.java @@ -6,20 +6,13 @@ import me.sashegdev.zernmc.launcher.utils.ZAnsi; import me.sashegdev.zernmc.launcher.utils.ZHttpClient; import java.io.IOException; -import java.net.URI; -import java.net.http.HttpClient; -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; import java.nio.file.Files; import java.nio.file.Path; -import java.time.Duration; +import java.util.concurrent.TimeUnit; public class FabricInstaller { private final Instance instance; - private final HttpClient httpClient = HttpClient.newBuilder() - .connectTimeout(Duration.ofSeconds(15)) - .build(); public FabricInstaller(Instance instance) { this.instance = instance; @@ -68,7 +61,13 @@ public class FabricInstaller { pb.redirectError(ProcessBuilder.Redirect.INHERIT); Process process = pb.start(); - int exitCode = process.waitFor(); + boolean finished = process.waitFor(10, TimeUnit.MINUTES); + if (!finished) { + process.destroyForcibly(); + System.out.println(ZAnsi.brightRed("Fabric Installer timed out after 10 minutes")); + return false; + } + int exitCode = process.exitValue(); if (exitCode != 0) { System.out.println(ZAnsi.brightRed("Fabric Installer failed (code " + exitCode + ")")); @@ -166,48 +165,11 @@ public class FabricInstaller { } } - // under refactor - keep private String downloadString(String url) throws Exception { - Exception lastException = null; - - for (int attempt = 1; attempt <= 3; attempt++) { - try { - HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create(url)) - .timeout(Duration.ofSeconds(30 * attempt)) - .header("User-Agent", "ZernMC-Launcher/1.0") - .GET() - .build(); - - HttpResponse resp = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); - if (resp.statusCode() == 200) { - return resp.body(); - } - throw new IOException("HTTP " + resp.statusCode()); - } catch (Exception e) { - lastException = e; - System.out.println(ZAnsi.yellow("Attempt " + attempt + " failed: " + e.getMessage())); - if (attempt < 3) { - Thread.sleep(1000 * attempt); - } - } - } - - throw lastException; + return ZHttpClient.getWithSmartProxy(url); } private void downloadFile(String url, Path target) throws Exception { - HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create(url)) - .timeout(Duration.ofSeconds(60)) - .GET() - .build(); - - HttpResponse response = httpClient.send(request, - HttpResponse.BodyHandlers.ofFile(target)); - - if (response.statusCode() != 200) { - throw new IOException("HTTP " + response.statusCode() + " when downloading " + url); - } + ZHttpClient.downloadFileWithSmartProxy(url, target); } } \ No newline at end of file diff --git a/launcher/launcher/src/main/java/sashegdev/zernmc/launcher/ui/jfx/JFXLauncher.java b/launcher/launcher/src/main/java/sashegdev/zernmc/launcher/ui/jfx/JFXLauncher.java index 00e9045..3435bb6 100644 --- a/launcher/launcher/src/main/java/sashegdev/zernmc/launcher/ui/jfx/JFXLauncher.java +++ b/launcher/launcher/src/main/java/sashegdev/zernmc/launcher/ui/jfx/JFXLauncher.java @@ -1229,6 +1229,12 @@ public class JFXLauncher extends Application { log("[UI] Loaded " + content.length + " bytes: " + path); String ct = getContentType(path); + if (ct.startsWith("text/")) { + String text = new String(content, java.nio.charset.StandardCharsets.UTF_8); + text = text.replace("__LAUNCHER_VERSION__", me.sashegdev.zernmc.launcher.utils.Version.getCurrentVersion()); + content = text.getBytes(java.nio.charset.StandardCharsets.UTF_8); + } + exchange.getResponseHeaders().set("Content-Type", ct); exchange.sendResponseHeaders(200, content.length); exchange.getResponseBody().write(content); diff --git a/launcher/launcher/src/resources/ui/index.html b/launcher/launcher/src/resources/ui/index.html index 13569ac..f391088 100644 --- a/launcher/launcher/src/resources/ui/index.html +++ b/launcher/launcher/src/resources/ui/index.html @@ -28,7 +28,7 @@

Sign In

- +