From da5097ab786387ddf4157c1db4e16c41f06e8914 Mon Sep 17 00:00:00 2001 From: Cyenoch <1759761439@qq.com> Date: Thu, 2 Feb 2023 21:19:07 +0800 Subject: [PATCH] Related to #1961: Add a Dialog to warn. (#2055) Co-authored-by: Cyenoch --- .../hmcl/ui/versions/ModListPage.java | 2 +- .../hmcl/ui/versions/ModUpdatesPage.java | 36 +++++++++++++++++-- .../resources/assets/lang/I18N.properties | 1 + .../resources/assets/lang/I18N_es.properties | 1 + .../resources/assets/lang/I18N_ja.properties | 1 + .../resources/assets/lang/I18N_ru.properties | 1 + .../resources/assets/lang/I18N_zh.properties | 1 + .../assets/lang/I18N_zh_CN.properties | 1 + 8 files changed, 41 insertions(+), 3 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPage.java index d49370b93..c87fc8de0 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPage.java @@ -191,7 +191,7 @@ public final class ModListPage extends ListPageBase objects; @SuppressWarnings("unchecked") - public ModUpdatesPage(ModManager modManager, List updates) { + public ModUpdatesPage(ModManager modManager, List updates, Boolean isModpack) { this.modManager = modManager; getStyleClass().add("gray-background"); @@ -106,7 +111,9 @@ public class ModUpdatesPage extends BorderPane implements DecoratorPage { JFXButton nextButton = new JFXButton(i18n("mods.check_updates.update")); nextButton.getStyleClass().add("jfx-button-raised"); nextButton.setButtonType(JFXButton.ButtonType.RAISED); - nextButton.setOnAction(e -> updateMods()); + nextButton.setOnAction(e -> { + if (isModpack) updateModpackModWarningDialog(); + }); JFXButton cancelButton = new JFXButton(i18n("button.cancel")); cancelButton.getStyleClass().add("jfx-button-raised"); @@ -127,6 +134,31 @@ public class ModUpdatesPage extends BorderPane implements DecoratorPage { }); } + private void updateModpackModWarningDialog() { + JFXDialogLayout warningPane = new JFXDialogLayout(); + warningPane.setHeading(new Label(i18n("message.warning"), SVG.alert(new ObjectBinding() { + @Override + protected Paint computeValue() { + return Color.ORANGERED; + } + }, -1, -1))); + warningPane.setBody(new Label(i18n("mods.update_modpack_mod.warning"))); + JFXButton yesButton = new JFXButton(i18n("button.yes")); + yesButton.getStyleClass().add("dialog-accept"); + yesButton.setOnAction(event -> { + warningPane.fireEvent(new DialogCloseEvent()); + updateMods(); + }); + JFXButton noButton = new JFXButton(i18n("button.cancel")); + noButton.getStyleClass().add("dialog-cancel"); + noButton.setOnAction(event -> { + // Do nothing. + warningPane.fireEvent(new DialogCloseEvent()); + }); + warningPane.setActions(yesButton, noButton); + Controllers.dialog(warningPane); + } + private void updateMods() { ModUpdateTask task = new ModUpdateTask( modManager, diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index 4e0e90081..d26b6db85 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -856,6 +856,7 @@ mods.name=Name mods.not_modded=You must install a mod loader (Fabric, Forge or LiteLoader) first to manage your mods\! mods.restore=Rollback mods.url=Official Page +mods.update_modpack_mod.warning=Updating mods in a modpack can lead to irreparable results, possibly corrupting the modpack so that it cannot start. Are you sure you want to update? multiplayer=Multiplayer online multiplayer.agreement.prompt=Before using the functionality of multiplayer, you must agree to the user agreement and disclaimer of the multiplayer service provider mcer.cn. \nEspecially, you agree that any problems and disputes you encounter while using the multiplayer functionality (including its paid services) have nothing to do with HMCL and should be resolved through consultation with mcer.cn diff --git a/HMCL/src/main/resources/assets/lang/I18N_es.properties b/HMCL/src/main/resources/assets/lang/I18N_es.properties index 882a54fba..c7cb95de6 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_es.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_es.properties @@ -797,6 +797,7 @@ mods.name=Nombre mods.not_modded=¡Debes instalar primero un cargador de mods (Fabric, Forge o LiteLoader) para gestionar tus mods\! mods.restore=Restaurar mods.url=Página oficial +mods.update_modpack_mod.warning=Actualizar mods en un modpack puede generar resultados irreparables, posiblemente corrompiendo el modpack para que no pueda iniciarse. ¿Seguro que quieres actualizar? multiplayer=Multijugador multiplayer.agreement.prompt=Antes de utilizar el servicio multijugador, debe aceptar las condiciones de servicio del proveedor del servicio, ioi, en primer lugar. diff --git a/HMCL/src/main/resources/assets/lang/I18N_ja.properties b/HMCL/src/main/resources/assets/lang/I18N_ja.properties index cbe8dbf2d..097c4547f 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ja.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ja.properties @@ -630,6 +630,7 @@ mods.name=Name mods.not_modded=最初にmodloaderをインストールする必要があります(Fabric、Forge、またはLiteLoader) mods.restore=Restore mods.url=公式ページ +mods.update_modpack_mod.warning=modpack 内の mod を更新すると、修復不可能な結果につながる可能性があり、modpack が破損して起動できなくなる可能性があります。 更新してもよろしいですか? multiplayer=マルチプレイ multiplayer.agreement.prompt=マルチプレイヤーサービスの使用を開始する前に、まずEULAに同意する必要があります。 diff --git a/HMCL/src/main/resources/assets/lang/I18N_ru.properties b/HMCL/src/main/resources/assets/lang/I18N_ru.properties index 7f557b522..566524f9a 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ru.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ru.properties @@ -636,6 +636,7 @@ mods.name=Название mods.not_modded=Сначала необходимо установить загрузчик модов (Fabric, Forge или LiteLoader) mods.restore=Восстановить mods.url=Официальная страница +mods.update_modpack_mod.warning=Обновление модов в пакете модов может привести к непоправимым результатам, возможно, повредить пакет модов так, что он не сможет запуститься. Вы уверены, что хотите обновить? multiplayer=Сетевая игра multiplayer.agreement.prompt=Перед началом использования сервиса сетевой игры, необходимо сначала согласиться с EULA. diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index dabb753aa..537202112 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -701,6 +701,7 @@ mods.name=名稱 mods.not_modded=你需要先在自動安裝頁面安裝 Fabric、Forge 或 LiteLoader 才能進行模組管理。 mods.restore=回退 mods.url=官方頁面 +mods.update_modpack_mod.warning=更新整合包中的Mod可能導致整合包損壞,使整合包無法正常啟動。該操作不可逆,確定要更新嗎? multiplayer=多人聯機 multiplayer.agreement.prompt=多人聯機功能由 速聚 提供。使用前,你需要先同意多人聯機服務提供方 速聚 的用戶協議與免責聲明。\n你需要了解,HMCL 僅為 速聚 提供多人聯機服務入口,使用中遇到的任何問題由 速聚 負責處理。您在使用多人聯機服務過程中所遇到的任何問題與糾紛(包括其付費業務)均與 HMCL 無關,應與 速聚 協商解決。 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 71f905584..c9825dd5e 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -703,6 +703,7 @@ mods.name=名称 mods.not_modded=你需要先在自动安装页面安装 Fabric、Forge 或 LiteLoader 才能进行模组管理! mods.restore=回退 mods.url=官方页面 +mods.update_modpack_mod.warning=更新整合包中的Mod可能导致整合包损坏,使整合包无法正常启动。该操作不可逆,确定要更新吗? multiplayer=多人联机 multiplayer.agreement.prompt=多人联机功能由 速聚 提供。使用前,你需要先同意多人联机服务提供方 速聚 的用户协议与免责声明。\n你需要了解,HMCL 仅为 速聚 提供多人联机服务入口,使用中遇到的任何问题由 速聚 负责处理。\n您在使用多人联机服务过程中所遇到的任何问题与纠纷(包括其付费业务)均与 HMCL 无关,请与 速聚 协商解决。