From d2dbd96f5ac83e7b6da93d87edbed3225fb33ab6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=9D=E6=9F=90=E4=BA=BABH?= <1218271192@qq.com> Date: Wed, 3 Sep 2025 07:14:54 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E5=B0=81=E8=A3=85=E9=87=8D=E5=90=AF?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jackhuang/hmcl/upgrade/UpdateHandler.java | 10 +- .../org/jackhuang/hmcl/util/Restarter.java | 125 ++++++++++++++++++ 2 files changed, 131 insertions(+), 4 deletions(-) create mode 100644 HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java index c8ff9edac..6e7553d81 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java @@ -29,6 +29,7 @@ import org.jackhuang.hmcl.task.TaskExecutor; import org.jackhuang.hmcl.ui.Controllers; import org.jackhuang.hmcl.ui.UpgradeDialog; import org.jackhuang.hmcl.ui.construct.MessageDialogPane.MessageType; +import org.jackhuang.hmcl.util.Restarter; import org.jackhuang.hmcl.util.StringUtils; import org.jackhuang.hmcl.util.SwingUtils; import org.jackhuang.hmcl.util.TaskCancellationAction; @@ -187,10 +188,11 @@ public final class UpdateHandler { commandline.add(jar.toAbsolutePath().toString()); commandline.addAll(Arrays.asList(appArgs)); LOG.info("Starting process: " + commandline); - new ProcessBuilder(commandline) - .directory(Paths.get("").toAbsolutePath().toFile()) - .inheritIO() - .start(); + + Restarter.builder() + .setJarPath(jar) + .addProgramArguments(Arrays.asList(appArgs)) + .restart(); } private static Optional tryRename(Path path, String newVersion) { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java new file mode 100644 index 000000000..6328bf275 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java @@ -0,0 +1,125 @@ +/* + * Hello Minecraft! Launcher + * Copyright (C) 2020 huangyuhui and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jackhuang.hmcl.util; + +import org.jackhuang.hmcl.EntryPoint; +import org.jackhuang.hmcl.java.JavaRuntime; +import org.jackhuang.hmcl.util.i18n.Locales; +import org.jackhuang.hmcl.util.io.JarUtils; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import static org.jackhuang.hmcl.util.i18n.I18n.setLocale; + +/** + * 通用重启工具类,用于: + * - 更新后重启 + * - 切换界面语言后重启 + * - 任何"必须重新启动才能生效"的场景 + */ +public final class Restarter { + + private final List jvmOptions = new ArrayList<>(); + private final List programArgs = new ArrayList<>(); + private Path jarPath; + + private Restarter() { } + + public static Restarter builder() { + return new Restarter(); + } + + public Restarter addSystemProperty(String key, String value) { + jvmOptions.add("-D" + key + "=" + value); + return this; + } + + public Restarter addProgramArguments(List args) { + programArgs.addAll(args); + return this; + } + + /** + * 设置要启动的JAR路径 + * 如果不设置,则使用当前运行的JAR + */ + public Restarter setJarPath(Path jarPath) { + this.jarPath = jarPath; + return this; + } + + /** + * 立即重启 + */ + public void restart() throws IOException { + Path jar = this.jarPath; + if (jar == null) { + jar = JarUtils.thisJarPath(); + } + if (jar == null) { + throw new IOException("Cannot locate JAR file"); + } + + List command = new ArrayList<>(); + command.add(JavaRuntime.getDefault().getBinary().toString()); + + for (Map.Entry e : System.getProperties().entrySet()) { + Object k = e.getKey(); + if (k instanceof String && ((String) k).startsWith("hmcl.")) { + command.add("-D" + k + "=" + e.getValue()); + } + } + + // 额外JVM选项 + command.addAll(jvmOptions); + + command.add("-jar"); + command.add(jar.toAbsolutePath().toString()); + + // 程序参数 + command.addAll(programArgs); + + new ProcessBuilder(command) + .directory(new File(System.getProperty("user.dir"))) + .inheritIO() + .start(); + + EntryPoint.exit(0); + } + + /** + * 立刻用完全相同的环境重启 + */ + public static void restartWithSameArgs() throws IOException { + builder().restart(); + } + + /** + * 切换界面语言后重启 + */ + public static void restartWithLocale(Locales.SupportedLocale locale) throws IOException { + setLocale(locale); + builder().restart(); + } + +} \ No newline at end of file From cf90ede336c2661459ea9093b26b673eeae9b639 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=9D=E6=9F=90=E4=BA=BABH?= <1218271192@qq.com> Date: Wed, 3 Sep 2025 07:51:43 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E5=90=8E=E6=8F=90=E7=A4=BA=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E9=87=8D=E5=90=AF=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jackhuang/hmcl/ui/main/SettingsPage.java | 40 +++++++++++++++++++ .../resources/assets/lang/I18N.properties | 3 ++ .../assets/lang/I18N_zh_CN.properties | 3 ++ 3 files changed, 46 insertions(+) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java index 60aa5dd57..6ec368afb 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java @@ -17,11 +17,13 @@ */ package org.jackhuang.hmcl.ui.main; +import com.jfoenix.controls.JFXButton; import javafx.application.Platform; import javafx.beans.InvalidationListener; import javafx.beans.WeakInvalidationListener; import javafx.beans.binding.Bindings; import javafx.beans.property.ObjectProperty; +import javafx.scene.control.ButtonBase; import javafx.scene.control.ToggleGroup; import org.jackhuang.hmcl.Metadata; import org.jackhuang.hmcl.setting.Settings; @@ -32,9 +34,11 @@ import org.jackhuang.hmcl.upgrade.RemoteVersion; import org.jackhuang.hmcl.upgrade.UpdateChannel; import org.jackhuang.hmcl.upgrade.UpdateChecker; import org.jackhuang.hmcl.upgrade.UpdateHandler; +import org.jackhuang.hmcl.util.Restarter; import org.jackhuang.hmcl.util.StringUtils; import org.jackhuang.hmcl.util.i18n.Locales; import org.jackhuang.hmcl.util.io.FileUtils; +import org.jackhuang.hmcl.util.logging.Level; import org.tukaani.xz.XZInputStream; import java.io.File; @@ -64,6 +68,8 @@ public final class SettingsPage extends SettingsView { private InvalidationListener updateListener; + private boolean ignoreLanguageChange = false; + public SettingsPage() { FXUtils.smoothScrolling(scroll); @@ -71,6 +77,40 @@ public final class SettingsPage extends SettingsView { cboLanguage.getItems().setAll(Locales.LOCALES); selectedItemPropertyFor(cboLanguage).bindBidirectional(config().localizationProperty()); + cboLanguage.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { + if (ignoreLanguageChange) return; + + if (oldValue != null && newValue != null && !oldValue.equals(newValue)) { + JFXButton restartButton = new JFXButton(i18n("button.restart")); + restartButton.getStyleClass().add("dialog-success"); + restartButton.setOnAction(e -> { + try { + config().setLocalization(newValue); + Restarter.restartWithLocale(newValue); + } catch (IOException ex) { + LOG.log(Level.WARNING, "Failed to restart", ex); + ignoreLanguageChange = true; + cboLanguage.getSelectionModel().select(oldValue); + ignoreLanguageChange = false; + } + }); + + Runnable cancelAction = () -> { + ignoreLanguageChange = true; + cboLanguage.getSelectionModel().select(newValue); + ignoreLanguageChange = false; + }; + + Controllers.confirmAction( + i18n("settings.launcher.language.restart_message"), + i18n("settings.launcher.language.restart_title"), + MessageType.INFO, + restartButton, + cancelAction + ); + } + }); + disableAutoGameOptionsPane.selectedProperty().bindBidirectional(config().disableAutoGameOptionsProperty()); // ==== diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index 6a3f62335..78d32968f 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -194,6 +194,7 @@ button.save_as=Save As button.select_all=Select All button.view=View button.yes=Yes +button.restart=Restart chat=Join Group Chat @@ -1353,6 +1354,8 @@ settings.launcher.font.anti_aliasing.gray=Grayscale settings.launcher.font.anti_aliasing.lcd=Sub-pixel settings.launcher.general=General settings.launcher.language=Language (Applies After Restart) +settings.launcher.language.restart_title=We Need Restart +settings.launcher.language.restart_message=Changing the language requires restarting the launcher to take effect. Restart now? settings.launcher.launcher_log.export=Export Launcher Logs settings.launcher.launcher_log.export.failed=Failed to export logs. settings.launcher.launcher_log.export.success=Logs have been exported to "%s". diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties index abdc7cb1f..be9b77a36 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -205,6 +205,7 @@ button.save_as=另存为 button.select_all=全选 button.view=查看 button.yes=是 +button.restart=立即重启 chat=官方群组 @@ -1153,6 +1154,8 @@ settings.launcher.font.anti_aliasing.gray=灰度 settings.launcher.font.anti_aliasing.lcd=子像素 settings.launcher.general=通用 settings.launcher.language=语言 (重启后生效) +settings.launcher.language.restart_title=重启提示 +settings.launcher.language.restart_message=切换语言需要重启启动器才能生效。是否立即重启? settings.launcher.launcher_log.export=导出启动器日志 settings.launcher.launcher_log.export.failed=无法导出日志 settings.launcher.launcher_log.export.success=日志已保存到“%s” From 599e0b3f33aaa42ddf7782ad60de9fffbe61e50b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=9D=E6=9F=90=E4=BA=BABH?= <1218271192@qq.com> Date: Wed, 3 Sep 2025 07:59:04 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E6=9B=B4=E6=8D=A2=E4=B8=BA=E5=B0=81?= =?UTF-8?q?=E8=A3=85=E5=90=8E=E7=9A=84API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java | 1 - HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java index 6ec368afb..109bb7a53 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java @@ -85,7 +85,6 @@ public final class SettingsPage extends SettingsView { restartButton.getStyleClass().add("dialog-success"); restartButton.setOnAction(e -> { try { - config().setLocalization(newValue); Restarter.restartWithLocale(newValue); } catch (IOException ex) { LOG.log(Level.WARNING, "Failed to restart", ex); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java index 6328bf275..38d18158c 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java @@ -29,6 +29,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; import static org.jackhuang.hmcl.util.i18n.I18n.setLocale; /** @@ -118,7 +119,7 @@ public final class Restarter { * 切换界面语言后重启 */ public static void restartWithLocale(Locales.SupportedLocale locale) throws IOException { - setLocale(locale); + config().setLocalization(locale); builder().restart(); } From ee05c8f3710ca0659da2e8ee013671ffe4327cc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=9D=E6=9F=90=E4=BA=BABH?= <1218271192@qq.com> Date: Wed, 3 Sep 2025 08:16:13 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E4=B8=BA=E9=87=8D=E5=90=AF=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E7=AA=97=E6=B7=BB=E5=8A=A0=E6=9B=B4=E5=A4=9A=E8=AF=AD?= =?UTF-8?q?=E8=A8=80=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HMCL/src/main/resources/assets/lang/I18N_es.properties | 3 +++ HMCL/src/main/resources/assets/lang/I18N_ja.properties | 3 +++ HMCL/src/main/resources/assets/lang/I18N_lzh.properties | 3 +++ HMCL/src/main/resources/assets/lang/I18N_ru.properties | 3 +++ HMCL/src/main/resources/assets/lang/I18N_uk.properties | 3 +++ HMCL/src/main/resources/assets/lang/I18N_zh.properties | 3 +++ 6 files changed, 18 insertions(+) diff --git a/HMCL/src/main/resources/assets/lang/I18N_es.properties b/HMCL/src/main/resources/assets/lang/I18N_es.properties index a08a13c82..4211e44a5 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_es.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_es.properties @@ -195,6 +195,7 @@ button.save_as=Guardar como button.select_all=Seleccionar todo button.view=Vista button.yes=Sí +button.restart=Reiniciar chat=Chat de grupo @@ -1356,6 +1357,8 @@ settings.launcher.font.anti_aliasing.gray=Escala de grises settings.launcher.font.anti_aliasing.lcd=Subpíxel settings.launcher.general=General settings.launcher.language=Idioma +settings.launcher.language.restart_title=Aviso de reinicio +settings.launcher.language.restart_message=¿Reiniciar ahora? El cambio de idioma requiere reiniciar el launcher para que surta efecto. settings.launcher.launcher_log.export=Exportar registros del launcher settings.launcher.launcher_log.export.failed=No se han podido exportar los registros settings.launcher.launcher_log.export.success=Los registros se han exportado a «%s» diff --git a/HMCL/src/main/resources/assets/lang/I18N_ja.properties b/HMCL/src/main/resources/assets/lang/I18N_ja.properties index 5cc7ce9f1..46227363f 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ja.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ja.properties @@ -156,6 +156,7 @@ button.save_as=名前を付けて保存 button.select_all=すべて選択 button.view=読む button.yes=はい +button.restart=再起動 chat=グループチャット @@ -850,6 +851,8 @@ settings.launcher.enable_game_list=メインページにバージョンリスト settings.launcher.font=フォント settings.launcher.general=全般的 settings.launcher.language=言語 +settings.launcher.language.restart_title=再起動の確認 +settings.launcher.language.restart_message=言語を変更するにはランチャーを再起動する必要があります。今すぐ再起動しますか? settings.launcher.launcher_log.export=ランチャーログのエクスポート settings.launcher.launcher_log.export.failed=ログのエクスポートに失敗しました settings.launcher.launcher_log.export.success=ログが %s にエクスポートされました diff --git a/HMCL/src/main/resources/assets/lang/I18N_lzh.properties b/HMCL/src/main/resources/assets/lang/I18N_lzh.properties index 1f64c8dc1..8c63a1c58 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_lzh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_lzh.properties @@ -197,6 +197,7 @@ button.save_as=存爲 button.select_all=悉擇 button.view=覽 button.yes=然 +button.restart=復啟 chat=會集 @@ -1072,6 +1073,8 @@ settings.launcher.font.anti_aliasing.gray=灰階 settings.launcher.font.anti_aliasing.lcd=子像素 settings.launcher.general=簡常 settings.launcher.language=文 (復啟效) +settings.launcher.language.restart_title=復啟示 +settings.launcher.language.restart_message=易文需復啟器方效。即復啟乎? settings.launcher.launcher_log.export=出錄啟誌 settings.launcher.launcher_log.export.failed=出錄誌未成。 settings.launcher.launcher_log.export.success=誌既存於「%s」。 diff --git a/HMCL/src/main/resources/assets/lang/I18N_ru.properties b/HMCL/src/main/resources/assets/lang/I18N_ru.properties index f25afb1c3..22c9b42b8 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ru.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ru.properties @@ -196,6 +196,7 @@ button.save_as=Сохранить как button.select_all=Выбрать все button.view=Просмотреть button.yes=Да +button.restart=Перезагрузить chat=Групповой чат @@ -1356,6 +1357,8 @@ settings.launcher.font.anti_aliasing.gray=Оттенки серого settings.launcher.font.anti_aliasing.lcd=Субпиксель settings.launcher.general=Общие settings.launcher.language=Язык (Применится после перезапуска) +settings.launcher.language.restart_title=Подтверждение перезагрузки +settings.launcher.language.restart_message=Для применения изменений языка требуется перезагрузка лаунчера. Перезагрузить сейчас? settings.launcher.launcher_log.export=Экспорт логов лаунчера settings.launcher.launcher_log.export.failed=Не удалось экспортировать логи settings.launcher.launcher_log.export.success=Логи экспортированы в %s diff --git a/HMCL/src/main/resources/assets/lang/I18N_uk.properties b/HMCL/src/main/resources/assets/lang/I18N_uk.properties index 525038c87..1eae3d610 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_uk.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_uk.properties @@ -193,6 +193,7 @@ button.save_as=Зберегти як button.select_all=Вибрати все button.view=Переглянути button.yes=Так +button.restart=Перезавантажити chat=Приєднатися до групового чату @@ -1297,6 +1298,8 @@ settings.launcher.font.anti_aliasing.gray=Відтінки сірого settings.launcher.font.anti_aliasing.lcd=Субпіксельне settings.launcher.general=Загальні settings.launcher.language=Мова (Застосовується після перезавантаження) +settings.launcher.language.restart_title=Підтвердження перезавантаження +settings.launcher.language.restart_message=Для застосування зміни мови необхідно перезавантажити лаунчер. Перезавантажити зараз? settings.launcher.launcher_log.export=Експортувати журнали лаунчера settings.launcher.launcher_log.export.failed=Не вдалося експортувати журнали. settings.launcher.launcher_log.export.success=Журнали було експортовано до "%s". diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index 7c9b71ffa..85324c74d 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -197,6 +197,7 @@ button.save_as=另存新檔 button.select_all=全選 button.view=查看 button.yes=是 +button.restart=重新啟動 chat=官方群組 @@ -1143,6 +1144,8 @@ settings.launcher.font.anti_aliasing.gray=灰階 settings.launcher.font.anti_aliasing.lcd=子像素 settings.launcher.general=一般 settings.launcher.language=語言 (重啟後生效) +settings.launcher.language.restart_title=重新啟動提示 +settings.launcher.language.restart_message=切換語言需要重新啟動啟動器才能生效。是否立即重新啟動? settings.launcher.launcher_log.export=匯出啟動器日誌 settings.launcher.launcher_log.export.failed=無法匯出日誌。 settings.launcher.launcher_log.export.success=日誌已儲存到「%s」。 From fa4efc9bf426c2df8ea7dd6cf20955ee2521ba22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=9D=E6=9F=90=E4=BA=BABH?= <1218271192@qq.com> Date: Wed, 3 Sep 2025 08:32:26 +0800 Subject: [PATCH 05/12] Update Restarter.java --- .../org/jackhuang/hmcl/util/Restarter.java | 24 +++++-------------- 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java index 38d18158c..4989a21d2 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java @@ -30,13 +30,12 @@ import java.util.List; import java.util.Map; import static org.jackhuang.hmcl.setting.ConfigHolder.config; -import static org.jackhuang.hmcl.util.i18n.I18n.setLocale; /** - * 通用重启工具类,用于: - * - 更新后重启 - * - 切换界面语言后重启 - * - 任何"必须重新启动才能生效"的场景 + * Common restart tool class, used for: + * - Restart after update + * - Restart after switching interface language + * - Any scenario that requires a restart to take effect */ public final class Restarter { @@ -61,17 +60,14 @@ public final class Restarter { } /** - * 设置要启动的JAR路径 - * 如果不设置,则使用当前运行的JAR + * Set the JAR path to start + * If not, the current running JAR will be used by default */ public Restarter setJarPath(Path jarPath) { this.jarPath = jarPath; return this; } - /** - * 立即重启 - */ public void restart() throws IOException { Path jar = this.jarPath; if (jar == null) { @@ -91,13 +87,11 @@ public final class Restarter { } } - // 额外JVM选项 command.addAll(jvmOptions); command.add("-jar"); command.add(jar.toAbsolutePath().toString()); - // 程序参数 command.addAll(programArgs); new ProcessBuilder(command) @@ -108,16 +102,10 @@ public final class Restarter { EntryPoint.exit(0); } - /** - * 立刻用完全相同的环境重启 - */ public static void restartWithSameArgs() throws IOException { builder().restart(); } - /** - * 切换界面语言后重启 - */ public static void restartWithLocale(Locales.SupportedLocale locale) throws IOException { config().setLocalization(locale); builder().restart(); From b9caaa996f735556875b15ac01701282db6c4411 Mon Sep 17 00:00:00 2001 From: Glavo Date: Fri, 5 Sep 2025 20:30:59 +0800 Subject: [PATCH 06/12] update --- .../main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java | 6 +++--- HMCL/src/main/resources/assets/lang/I18N.properties | 3 +-- HMCL/src/main/resources/assets/lang/I18N_es.properties | 3 +-- HMCL/src/main/resources/assets/lang/I18N_ja.properties | 3 +-- HMCL/src/main/resources/assets/lang/I18N_lzh.properties | 3 +-- HMCL/src/main/resources/assets/lang/I18N_ru.properties | 3 +-- HMCL/src/main/resources/assets/lang/I18N_uk.properties | 3 +-- HMCL/src/main/resources/assets/lang/I18N_zh.properties | 3 +-- HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties | 3 +-- 9 files changed, 11 insertions(+), 19 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java index 109bb7a53..d1c57a611 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java @@ -82,7 +82,7 @@ public final class SettingsPage extends SettingsView { if (oldValue != null && newValue != null && !oldValue.equals(newValue)) { JFXButton restartButton = new JFXButton(i18n("button.restart")); - restartButton.getStyleClass().add("dialog-success"); + restartButton.getStyleClass().add("dialog-accept"); restartButton.setOnAction(e -> { try { Restarter.restartWithLocale(newValue); @@ -101,8 +101,8 @@ public final class SettingsPage extends SettingsView { }; Controllers.confirmAction( - i18n("settings.launcher.language.restart_message"), - i18n("settings.launcher.language.restart_title"), + i18n("settings.launcher.language.restart"), + i18n("message.info"), MessageType.INFO, restartButton, cancelAction diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index 78d32968f..1ff8d8204 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -1354,8 +1354,7 @@ settings.launcher.font.anti_aliasing.gray=Grayscale settings.launcher.font.anti_aliasing.lcd=Sub-pixel settings.launcher.general=General settings.launcher.language=Language (Applies After Restart) -settings.launcher.language.restart_title=We Need Restart -settings.launcher.language.restart_message=Changing the language requires restarting the launcher to take effect. Restart now? +settings.launcher.language.restart=Changing the language requires restarting the launcher to take effect. Restart now? settings.launcher.launcher_log.export=Export Launcher Logs settings.launcher.launcher_log.export.failed=Failed to export logs. settings.launcher.launcher_log.export.success=Logs have been exported to "%s". diff --git a/HMCL/src/main/resources/assets/lang/I18N_es.properties b/HMCL/src/main/resources/assets/lang/I18N_es.properties index 4211e44a5..a758daa59 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_es.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_es.properties @@ -1357,8 +1357,7 @@ settings.launcher.font.anti_aliasing.gray=Escala de grises settings.launcher.font.anti_aliasing.lcd=Subpíxel settings.launcher.general=General settings.launcher.language=Idioma -settings.launcher.language.restart_title=Aviso de reinicio -settings.launcher.language.restart_message=¿Reiniciar ahora? El cambio de idioma requiere reiniciar el launcher para que surta efecto. +settings.launcher.language.restart=¿Reiniciar ahora? El cambio de idioma requiere reiniciar el launcher para que surta efecto. settings.launcher.launcher_log.export=Exportar registros del launcher settings.launcher.launcher_log.export.failed=No se han podido exportar los registros settings.launcher.launcher_log.export.success=Los registros se han exportado a «%s» diff --git a/HMCL/src/main/resources/assets/lang/I18N_ja.properties b/HMCL/src/main/resources/assets/lang/I18N_ja.properties index 46227363f..1243c7d37 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ja.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ja.properties @@ -851,8 +851,7 @@ settings.launcher.enable_game_list=メインページにバージョンリスト settings.launcher.font=フォント settings.launcher.general=全般的 settings.launcher.language=言語 -settings.launcher.language.restart_title=再起動の確認 -settings.launcher.language.restart_message=言語を変更するにはランチャーを再起動する必要があります。今すぐ再起動しますか? +settings.launcher.language.restart=言語を変更するにはランチャーを再起動する必要があります。今すぐ再起動しますか? settings.launcher.launcher_log.export=ランチャーログのエクスポート settings.launcher.launcher_log.export.failed=ログのエクスポートに失敗しました settings.launcher.launcher_log.export.success=ログが %s にエクスポートされました diff --git a/HMCL/src/main/resources/assets/lang/I18N_lzh.properties b/HMCL/src/main/resources/assets/lang/I18N_lzh.properties index 8c63a1c58..a401f698a 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_lzh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_lzh.properties @@ -1073,8 +1073,7 @@ settings.launcher.font.anti_aliasing.gray=灰階 settings.launcher.font.anti_aliasing.lcd=子像素 settings.launcher.general=簡常 settings.launcher.language=文 (復啟效) -settings.launcher.language.restart_title=復啟示 -settings.launcher.language.restart_message=易文需復啟器方效。即復啟乎? +settings.launcher.language.restart=易文需復啟器方效。即復啟乎? settings.launcher.launcher_log.export=出錄啟誌 settings.launcher.launcher_log.export.failed=出錄誌未成。 settings.launcher.launcher_log.export.success=誌既存於「%s」。 diff --git a/HMCL/src/main/resources/assets/lang/I18N_ru.properties b/HMCL/src/main/resources/assets/lang/I18N_ru.properties index 22c9b42b8..d2a3949fb 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ru.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ru.properties @@ -1357,8 +1357,7 @@ settings.launcher.font.anti_aliasing.gray=Оттенки серого settings.launcher.font.anti_aliasing.lcd=Субпиксель settings.launcher.general=Общие settings.launcher.language=Язык (Применится после перезапуска) -settings.launcher.language.restart_title=Подтверждение перезагрузки -settings.launcher.language.restart_message=Для применения изменений языка требуется перезагрузка лаунчера. Перезагрузить сейчас? +settings.launcher.language.restart=Для применения изменений языка требуется перезагрузка лаунчера. Перезагрузить сейчас? settings.launcher.launcher_log.export=Экспорт логов лаунчера settings.launcher.launcher_log.export.failed=Не удалось экспортировать логи settings.launcher.launcher_log.export.success=Логи экспортированы в %s diff --git a/HMCL/src/main/resources/assets/lang/I18N_uk.properties b/HMCL/src/main/resources/assets/lang/I18N_uk.properties index 1eae3d610..db91be45b 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_uk.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_uk.properties @@ -1298,8 +1298,7 @@ settings.launcher.font.anti_aliasing.gray=Відтінки сірого settings.launcher.font.anti_aliasing.lcd=Субпіксельне settings.launcher.general=Загальні settings.launcher.language=Мова (Застосовується після перезавантаження) -settings.launcher.language.restart_title=Підтвердження перезавантаження -settings.launcher.language.restart_message=Для застосування зміни мови необхідно перезавантажити лаунчер. Перезавантажити зараз? +settings.launcher.language.restart=Для застосування зміни мови необхідно перезавантажити лаунчер. Перезавантажити зараз? settings.launcher.launcher_log.export=Експортувати журнали лаунчера settings.launcher.launcher_log.export.failed=Не вдалося експортувати журнали. settings.launcher.launcher_log.export.success=Журнали було експортовано до "%s". diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index 85324c74d..789542e19 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -1144,8 +1144,7 @@ settings.launcher.font.anti_aliasing.gray=灰階 settings.launcher.font.anti_aliasing.lcd=子像素 settings.launcher.general=一般 settings.launcher.language=語言 (重啟後生效) -settings.launcher.language.restart_title=重新啟動提示 -settings.launcher.language.restart_message=切換語言需要重新啟動啟動器才能生效。是否立即重新啟動? +settings.launcher.language.restart=切換語言需要重新啟動啟動器才能生效。是否立即重新啟動? settings.launcher.launcher_log.export=匯出啟動器日誌 settings.launcher.launcher_log.export.failed=無法匯出日誌。 settings.launcher.launcher_log.export.success=日誌已儲存到「%s」。 diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties index be9b77a36..012cdba1e 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -1154,8 +1154,7 @@ settings.launcher.font.anti_aliasing.gray=灰度 settings.launcher.font.anti_aliasing.lcd=子像素 settings.launcher.general=通用 settings.launcher.language=语言 (重启后生效) -settings.launcher.language.restart_title=重启提示 -settings.launcher.language.restart_message=切换语言需要重启启动器才能生效。是否立即重启? +settings.launcher.language.restart=切换语言需要重启启动器才能生效。是否立即重启? settings.launcher.launcher_log.export=导出启动器日志 settings.launcher.launcher_log.export.failed=无法导出日志 settings.launcher.launcher_log.export.success=日志已保存到“%s” From 14fa99f3877bb28febfb75b809f8cec7c72b0fce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=9D=E6=9F=90=E4=BA=BABH?= <1218271192@qq.com> Date: Fri, 5 Sep 2025 21:14:16 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java index 109bb7a53..00d0af944 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java @@ -82,7 +82,7 @@ public final class SettingsPage extends SettingsView { if (oldValue != null && newValue != null && !oldValue.equals(newValue)) { JFXButton restartButton = new JFXButton(i18n("button.restart")); - restartButton.getStyleClass().add("dialog-success"); + restartButton.getStyleClass().add("dialog-accept"); restartButton.setOnAction(e -> { try { Restarter.restartWithLocale(newValue); From 5990b2795bd54a77bb063dad1bbc6e5197d9d7cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=9D=E6=9F=90=E4=BA=BABH?= <1218271192@qq.com> Date: Fri, 5 Sep 2025 21:15:38 +0800 Subject: [PATCH 08/12] Revert "update" This reverts commit b9caaa996f735556875b15ac01701282db6c4411. --- .../main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java | 6 +++--- HMCL/src/main/resources/assets/lang/I18N.properties | 3 ++- HMCL/src/main/resources/assets/lang/I18N_es.properties | 3 ++- HMCL/src/main/resources/assets/lang/I18N_ja.properties | 3 ++- HMCL/src/main/resources/assets/lang/I18N_lzh.properties | 3 ++- HMCL/src/main/resources/assets/lang/I18N_ru.properties | 3 ++- HMCL/src/main/resources/assets/lang/I18N_uk.properties | 3 ++- HMCL/src/main/resources/assets/lang/I18N_zh.properties | 3 ++- HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties | 3 ++- 9 files changed, 19 insertions(+), 11 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java index d1c57a611..109bb7a53 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java @@ -82,7 +82,7 @@ public final class SettingsPage extends SettingsView { if (oldValue != null && newValue != null && !oldValue.equals(newValue)) { JFXButton restartButton = new JFXButton(i18n("button.restart")); - restartButton.getStyleClass().add("dialog-accept"); + restartButton.getStyleClass().add("dialog-success"); restartButton.setOnAction(e -> { try { Restarter.restartWithLocale(newValue); @@ -101,8 +101,8 @@ public final class SettingsPage extends SettingsView { }; Controllers.confirmAction( - i18n("settings.launcher.language.restart"), - i18n("message.info"), + i18n("settings.launcher.language.restart_message"), + i18n("settings.launcher.language.restart_title"), MessageType.INFO, restartButton, cancelAction diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index 1ff8d8204..78d32968f 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -1354,7 +1354,8 @@ settings.launcher.font.anti_aliasing.gray=Grayscale settings.launcher.font.anti_aliasing.lcd=Sub-pixel settings.launcher.general=General settings.launcher.language=Language (Applies After Restart) -settings.launcher.language.restart=Changing the language requires restarting the launcher to take effect. Restart now? +settings.launcher.language.restart_title=We Need Restart +settings.launcher.language.restart_message=Changing the language requires restarting the launcher to take effect. Restart now? settings.launcher.launcher_log.export=Export Launcher Logs settings.launcher.launcher_log.export.failed=Failed to export logs. settings.launcher.launcher_log.export.success=Logs have been exported to "%s". diff --git a/HMCL/src/main/resources/assets/lang/I18N_es.properties b/HMCL/src/main/resources/assets/lang/I18N_es.properties index a758daa59..4211e44a5 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_es.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_es.properties @@ -1357,7 +1357,8 @@ settings.launcher.font.anti_aliasing.gray=Escala de grises settings.launcher.font.anti_aliasing.lcd=Subpíxel settings.launcher.general=General settings.launcher.language=Idioma -settings.launcher.language.restart=¿Reiniciar ahora? El cambio de idioma requiere reiniciar el launcher para que surta efecto. +settings.launcher.language.restart_title=Aviso de reinicio +settings.launcher.language.restart_message=¿Reiniciar ahora? El cambio de idioma requiere reiniciar el launcher para que surta efecto. settings.launcher.launcher_log.export=Exportar registros del launcher settings.launcher.launcher_log.export.failed=No se han podido exportar los registros settings.launcher.launcher_log.export.success=Los registros se han exportado a «%s» diff --git a/HMCL/src/main/resources/assets/lang/I18N_ja.properties b/HMCL/src/main/resources/assets/lang/I18N_ja.properties index 1243c7d37..46227363f 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ja.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ja.properties @@ -851,7 +851,8 @@ settings.launcher.enable_game_list=メインページにバージョンリスト settings.launcher.font=フォント settings.launcher.general=全般的 settings.launcher.language=言語 -settings.launcher.language.restart=言語を変更するにはランチャーを再起動する必要があります。今すぐ再起動しますか? +settings.launcher.language.restart_title=再起動の確認 +settings.launcher.language.restart_message=言語を変更するにはランチャーを再起動する必要があります。今すぐ再起動しますか? settings.launcher.launcher_log.export=ランチャーログのエクスポート settings.launcher.launcher_log.export.failed=ログのエクスポートに失敗しました settings.launcher.launcher_log.export.success=ログが %s にエクスポートされました diff --git a/HMCL/src/main/resources/assets/lang/I18N_lzh.properties b/HMCL/src/main/resources/assets/lang/I18N_lzh.properties index a401f698a..8c63a1c58 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_lzh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_lzh.properties @@ -1073,7 +1073,8 @@ settings.launcher.font.anti_aliasing.gray=灰階 settings.launcher.font.anti_aliasing.lcd=子像素 settings.launcher.general=簡常 settings.launcher.language=文 (復啟效) -settings.launcher.language.restart=易文需復啟器方效。即復啟乎? +settings.launcher.language.restart_title=復啟示 +settings.launcher.language.restart_message=易文需復啟器方效。即復啟乎? settings.launcher.launcher_log.export=出錄啟誌 settings.launcher.launcher_log.export.failed=出錄誌未成。 settings.launcher.launcher_log.export.success=誌既存於「%s」。 diff --git a/HMCL/src/main/resources/assets/lang/I18N_ru.properties b/HMCL/src/main/resources/assets/lang/I18N_ru.properties index d2a3949fb..22c9b42b8 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ru.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ru.properties @@ -1357,7 +1357,8 @@ settings.launcher.font.anti_aliasing.gray=Оттенки серого settings.launcher.font.anti_aliasing.lcd=Субпиксель settings.launcher.general=Общие settings.launcher.language=Язык (Применится после перезапуска) -settings.launcher.language.restart=Для применения изменений языка требуется перезагрузка лаунчера. Перезагрузить сейчас? +settings.launcher.language.restart_title=Подтверждение перезагрузки +settings.launcher.language.restart_message=Для применения изменений языка требуется перезагрузка лаунчера. Перезагрузить сейчас? settings.launcher.launcher_log.export=Экспорт логов лаунчера settings.launcher.launcher_log.export.failed=Не удалось экспортировать логи settings.launcher.launcher_log.export.success=Логи экспортированы в %s diff --git a/HMCL/src/main/resources/assets/lang/I18N_uk.properties b/HMCL/src/main/resources/assets/lang/I18N_uk.properties index db91be45b..1eae3d610 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_uk.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_uk.properties @@ -1298,7 +1298,8 @@ settings.launcher.font.anti_aliasing.gray=Відтінки сірого settings.launcher.font.anti_aliasing.lcd=Субпіксельне settings.launcher.general=Загальні settings.launcher.language=Мова (Застосовується після перезавантаження) -settings.launcher.language.restart=Для застосування зміни мови необхідно перезавантажити лаунчер. Перезавантажити зараз? +settings.launcher.language.restart_title=Підтвердження перезавантаження +settings.launcher.language.restart_message=Для застосування зміни мови необхідно перезавантажити лаунчер. Перезавантажити зараз? settings.launcher.launcher_log.export=Експортувати журнали лаунчера settings.launcher.launcher_log.export.failed=Не вдалося експортувати журнали. settings.launcher.launcher_log.export.success=Журнали було експортовано до "%s". diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index 789542e19..85324c74d 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -1144,7 +1144,8 @@ settings.launcher.font.anti_aliasing.gray=灰階 settings.launcher.font.anti_aliasing.lcd=子像素 settings.launcher.general=一般 settings.launcher.language=語言 (重啟後生效) -settings.launcher.language.restart=切換語言需要重新啟動啟動器才能生效。是否立即重新啟動? +settings.launcher.language.restart_title=重新啟動提示 +settings.launcher.language.restart_message=切換語言需要重新啟動啟動器才能生效。是否立即重新啟動? settings.launcher.launcher_log.export=匯出啟動器日誌 settings.launcher.launcher_log.export.failed=無法匯出日誌。 settings.launcher.launcher_log.export.success=日誌已儲存到「%s」。 diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties index 012cdba1e..be9b77a36 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -1154,7 +1154,8 @@ settings.launcher.font.anti_aliasing.gray=灰度 settings.launcher.font.anti_aliasing.lcd=子像素 settings.launcher.general=通用 settings.launcher.language=语言 (重启后生效) -settings.launcher.language.restart=切换语言需要重启启动器才能生效。是否立即重启? +settings.launcher.language.restart_title=重启提示 +settings.launcher.language.restart_message=切换语言需要重启启动器才能生效。是否立即重启? settings.launcher.launcher_log.export=导出启动器日志 settings.launcher.launcher_log.export.failed=无法导出日志 settings.launcher.launcher_log.export.success=日志已保存到“%s” From 44b0b20e7afc92aa11e3d4491c01b80ff11ce6e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=9D=E6=9F=90=E4=BA=BABH?= <1218271192@qq.com> Date: Fri, 5 Sep 2025 21:16:37 +0800 Subject: [PATCH 09/12] Reapply "update" This reverts commit 5990b2795bd54a77bb063dad1bbc6e5197d9d7cd. --- .../main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java | 6 +++--- HMCL/src/main/resources/assets/lang/I18N.properties | 3 +-- HMCL/src/main/resources/assets/lang/I18N_es.properties | 3 +-- HMCL/src/main/resources/assets/lang/I18N_ja.properties | 3 +-- HMCL/src/main/resources/assets/lang/I18N_lzh.properties | 3 +-- HMCL/src/main/resources/assets/lang/I18N_ru.properties | 3 +-- HMCL/src/main/resources/assets/lang/I18N_uk.properties | 3 +-- HMCL/src/main/resources/assets/lang/I18N_zh.properties | 3 +-- HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties | 3 +-- 9 files changed, 11 insertions(+), 19 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java index 109bb7a53..d1c57a611 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java @@ -82,7 +82,7 @@ public final class SettingsPage extends SettingsView { if (oldValue != null && newValue != null && !oldValue.equals(newValue)) { JFXButton restartButton = new JFXButton(i18n("button.restart")); - restartButton.getStyleClass().add("dialog-success"); + restartButton.getStyleClass().add("dialog-accept"); restartButton.setOnAction(e -> { try { Restarter.restartWithLocale(newValue); @@ -101,8 +101,8 @@ public final class SettingsPage extends SettingsView { }; Controllers.confirmAction( - i18n("settings.launcher.language.restart_message"), - i18n("settings.launcher.language.restart_title"), + i18n("settings.launcher.language.restart"), + i18n("message.info"), MessageType.INFO, restartButton, cancelAction diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index 78d32968f..1ff8d8204 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -1354,8 +1354,7 @@ settings.launcher.font.anti_aliasing.gray=Grayscale settings.launcher.font.anti_aliasing.lcd=Sub-pixel settings.launcher.general=General settings.launcher.language=Language (Applies After Restart) -settings.launcher.language.restart_title=We Need Restart -settings.launcher.language.restart_message=Changing the language requires restarting the launcher to take effect. Restart now? +settings.launcher.language.restart=Changing the language requires restarting the launcher to take effect. Restart now? settings.launcher.launcher_log.export=Export Launcher Logs settings.launcher.launcher_log.export.failed=Failed to export logs. settings.launcher.launcher_log.export.success=Logs have been exported to "%s". diff --git a/HMCL/src/main/resources/assets/lang/I18N_es.properties b/HMCL/src/main/resources/assets/lang/I18N_es.properties index 4211e44a5..a758daa59 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_es.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_es.properties @@ -1357,8 +1357,7 @@ settings.launcher.font.anti_aliasing.gray=Escala de grises settings.launcher.font.anti_aliasing.lcd=Subpíxel settings.launcher.general=General settings.launcher.language=Idioma -settings.launcher.language.restart_title=Aviso de reinicio -settings.launcher.language.restart_message=¿Reiniciar ahora? El cambio de idioma requiere reiniciar el launcher para que surta efecto. +settings.launcher.language.restart=¿Reiniciar ahora? El cambio de idioma requiere reiniciar el launcher para que surta efecto. settings.launcher.launcher_log.export=Exportar registros del launcher settings.launcher.launcher_log.export.failed=No se han podido exportar los registros settings.launcher.launcher_log.export.success=Los registros se han exportado a «%s» diff --git a/HMCL/src/main/resources/assets/lang/I18N_ja.properties b/HMCL/src/main/resources/assets/lang/I18N_ja.properties index 46227363f..1243c7d37 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ja.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ja.properties @@ -851,8 +851,7 @@ settings.launcher.enable_game_list=メインページにバージョンリスト settings.launcher.font=フォント settings.launcher.general=全般的 settings.launcher.language=言語 -settings.launcher.language.restart_title=再起動の確認 -settings.launcher.language.restart_message=言語を変更するにはランチャーを再起動する必要があります。今すぐ再起動しますか? +settings.launcher.language.restart=言語を変更するにはランチャーを再起動する必要があります。今すぐ再起動しますか? settings.launcher.launcher_log.export=ランチャーログのエクスポート settings.launcher.launcher_log.export.failed=ログのエクスポートに失敗しました settings.launcher.launcher_log.export.success=ログが %s にエクスポートされました diff --git a/HMCL/src/main/resources/assets/lang/I18N_lzh.properties b/HMCL/src/main/resources/assets/lang/I18N_lzh.properties index 8c63a1c58..a401f698a 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_lzh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_lzh.properties @@ -1073,8 +1073,7 @@ settings.launcher.font.anti_aliasing.gray=灰階 settings.launcher.font.anti_aliasing.lcd=子像素 settings.launcher.general=簡常 settings.launcher.language=文 (復啟效) -settings.launcher.language.restart_title=復啟示 -settings.launcher.language.restart_message=易文需復啟器方效。即復啟乎? +settings.launcher.language.restart=易文需復啟器方效。即復啟乎? settings.launcher.launcher_log.export=出錄啟誌 settings.launcher.launcher_log.export.failed=出錄誌未成。 settings.launcher.launcher_log.export.success=誌既存於「%s」。 diff --git a/HMCL/src/main/resources/assets/lang/I18N_ru.properties b/HMCL/src/main/resources/assets/lang/I18N_ru.properties index 22c9b42b8..d2a3949fb 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ru.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ru.properties @@ -1357,8 +1357,7 @@ settings.launcher.font.anti_aliasing.gray=Оттенки серого settings.launcher.font.anti_aliasing.lcd=Субпиксель settings.launcher.general=Общие settings.launcher.language=Язык (Применится после перезапуска) -settings.launcher.language.restart_title=Подтверждение перезагрузки -settings.launcher.language.restart_message=Для применения изменений языка требуется перезагрузка лаунчера. Перезагрузить сейчас? +settings.launcher.language.restart=Для применения изменений языка требуется перезагрузка лаунчера. Перезагрузить сейчас? settings.launcher.launcher_log.export=Экспорт логов лаунчера settings.launcher.launcher_log.export.failed=Не удалось экспортировать логи settings.launcher.launcher_log.export.success=Логи экспортированы в %s diff --git a/HMCL/src/main/resources/assets/lang/I18N_uk.properties b/HMCL/src/main/resources/assets/lang/I18N_uk.properties index 1eae3d610..db91be45b 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_uk.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_uk.properties @@ -1298,8 +1298,7 @@ settings.launcher.font.anti_aliasing.gray=Відтінки сірого settings.launcher.font.anti_aliasing.lcd=Субпіксельне settings.launcher.general=Загальні settings.launcher.language=Мова (Застосовується після перезавантаження) -settings.launcher.language.restart_title=Підтвердження перезавантаження -settings.launcher.language.restart_message=Для застосування зміни мови необхідно перезавантажити лаунчер. Перезавантажити зараз? +settings.launcher.language.restart=Для застосування зміни мови необхідно перезавантажити лаунчер. Перезавантажити зараз? settings.launcher.launcher_log.export=Експортувати журнали лаунчера settings.launcher.launcher_log.export.failed=Не вдалося експортувати журнали. settings.launcher.launcher_log.export.success=Журнали було експортовано до "%s". diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index 85324c74d..789542e19 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -1144,8 +1144,7 @@ settings.launcher.font.anti_aliasing.gray=灰階 settings.launcher.font.anti_aliasing.lcd=子像素 settings.launcher.general=一般 settings.launcher.language=語言 (重啟後生效) -settings.launcher.language.restart_title=重新啟動提示 -settings.launcher.language.restart_message=切換語言需要重新啟動啟動器才能生效。是否立即重新啟動? +settings.launcher.language.restart=切換語言需要重新啟動啟動器才能生效。是否立即重新啟動? settings.launcher.launcher_log.export=匯出啟動器日誌 settings.launcher.launcher_log.export.failed=無法匯出日誌。 settings.launcher.launcher_log.export.success=日誌已儲存到「%s」。 diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties index be9b77a36..012cdba1e 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -1154,8 +1154,7 @@ settings.launcher.font.anti_aliasing.gray=灰度 settings.launcher.font.anti_aliasing.lcd=子像素 settings.launcher.general=通用 settings.launcher.language=语言 (重启后生效) -settings.launcher.language.restart_title=重启提示 -settings.launcher.language.restart_message=切换语言需要重启启动器才能生效。是否立即重启? +settings.launcher.language.restart=切换语言需要重启启动器才能生效。是否立即重启? settings.launcher.launcher_log.export=导出启动器日志 settings.launcher.launcher_log.export.failed=无法导出日志 settings.launcher.launcher_log.export.success=日志已保存到“%s” From 44cd222bd6c1a7888340f9e2fd818718b4d0164f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=9D=E6=9F=90=E4=BA=BABH?= <1218271192@qq.com> Date: Fri, 5 Sep 2025 21:19:39 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E8=BF=98=E5=8E=9F=E5=AF=B9update?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E9=87=8D=E5=90=AF=E4=BB=A3=E7=A0=81=E7=9A=84?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jackhuang/hmcl/upgrade/UpdateHandler.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java index 6e7553d81..09bcbabd1 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java @@ -29,7 +29,6 @@ import org.jackhuang.hmcl.task.TaskExecutor; import org.jackhuang.hmcl.ui.Controllers; import org.jackhuang.hmcl.ui.UpgradeDialog; import org.jackhuang.hmcl.ui.construct.MessageDialogPane.MessageType; -import org.jackhuang.hmcl.util.Restarter; import org.jackhuang.hmcl.util.StringUtils; import org.jackhuang.hmcl.util.SwingUtils; import org.jackhuang.hmcl.util.TaskCancellationAction; @@ -188,11 +187,10 @@ public final class UpdateHandler { commandline.add(jar.toAbsolutePath().toString()); commandline.addAll(Arrays.asList(appArgs)); LOG.info("Starting process: " + commandline); - - Restarter.builder() - .setJarPath(jar) - .addProgramArguments(Arrays.asList(appArgs)) - .restart(); + new ProcessBuilder(commandline) + .directory(Paths.get("").toAbsolutePath().toFile()) + .inheritIO() + .start(); } private static Optional tryRename(Path path, String newVersion) { @@ -279,4 +277,4 @@ public final class UpdateHandler { } } } -} +} \ No newline at end of file From cac3fd7c71cee27069ab69c2f72e4ffcc0016c43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=9D=E6=9F=90=E4=BA=BABH?= <1218271192@qq.com> Date: Sun, 7 Sep 2025 18:48:02 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E6=8D=A2=E7=94=A8HTML=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E7=9A=84doc=EF=BC=8C=E5=88=A0=E9=99=A4restartWithLocale?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jackhuang/hmcl/ui/main/SettingsPage.java | 2 +- .../org/jackhuang/hmcl/util/Restarter.java | 22 +++++++------------ 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java index d1c57a611..0bd6d54b1 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java @@ -85,7 +85,7 @@ public final class SettingsPage extends SettingsView { restartButton.getStyleClass().add("dialog-accept"); restartButton.setOnAction(e -> { try { - Restarter.restartWithLocale(newValue); + Restarter.builder().restart(); } catch (IOException ex) { LOG.log(Level.WARNING, "Failed to restart", ex); ignoreLanguageChange = true; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java index 4989a21d2..18bede747 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java @@ -32,10 +32,12 @@ import java.util.Map; import static org.jackhuang.hmcl.setting.ConfigHolder.config; /** - * Common restart tool class, used for: - * - Restart after update - * - Restart after switching interface language - * - Any scenario that requires a restart to take effect + *

A common restart tool class, used for:

+ *
    + *
  • Restart after update
  • + *
  • Restart after switching interface language
  • + *
  • Any scenario that requires a restart to take effect
  • + *
*/ public final class Restarter { @@ -60,8 +62,10 @@ public final class Restarter { } /** + *

* Set the JAR path to start * If not, the current running JAR will be used by default + *

*/ public Restarter setJarPath(Path jarPath) { this.jarPath = jarPath; @@ -101,14 +105,4 @@ public final class Restarter { EntryPoint.exit(0); } - - public static void restartWithSameArgs() throws IOException { - builder().restart(); - } - - public static void restartWithLocale(Locales.SupportedLocale locale) throws IOException { - config().setLocalization(locale); - builder().restart(); - } - } \ No newline at end of file From 9e79c9454f4e6303db17ecef3e00a0a8a74174e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=9D=E6=9F=90=E4=BA=BABH?= <1218271192@qq.com> Date: Sun, 7 Sep 2025 21:44:27 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E8=A7=84=E8=8C=83=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jackhuang/hmcl/ui/main/SettingsPage.java | 1 - .../org/jackhuang/hmcl/upgrade/UpdateHandler.java | 2 +- .../main/java/org/jackhuang/hmcl/util/Restarter.java | 11 ++++------- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java index 0bd6d54b1..29138d01a 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java @@ -23,7 +23,6 @@ import javafx.beans.InvalidationListener; import javafx.beans.WeakInvalidationListener; import javafx.beans.binding.Bindings; import javafx.beans.property.ObjectProperty; -import javafx.scene.control.ButtonBase; import javafx.scene.control.ToggleGroup; import org.jackhuang.hmcl.Metadata; import org.jackhuang.hmcl.setting.Settings; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java index 09bcbabd1..c8ff9edac 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java @@ -277,4 +277,4 @@ public final class UpdateHandler { } } } -} \ No newline at end of file +} diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java index 18bede747..fddc7f56c 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/Restarter.java @@ -17,11 +17,6 @@ */ package org.jackhuang.hmcl.util; -import org.jackhuang.hmcl.EntryPoint; -import org.jackhuang.hmcl.java.JavaRuntime; -import org.jackhuang.hmcl.util.i18n.Locales; -import org.jackhuang.hmcl.util.io.JarUtils; - import java.io.File; import java.io.IOException; import java.nio.file.Path; @@ -29,7 +24,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import static org.jackhuang.hmcl.setting.ConfigHolder.config; +import org.jackhuang.hmcl.EntryPoint; +import org.jackhuang.hmcl.java.JavaRuntime; +import org.jackhuang.hmcl.util.io.JarUtils; /** *

A common restart tool class, used for:

@@ -105,4 +102,4 @@ public final class Restarter { EntryPoint.exit(0); } -} \ No newline at end of file +}