mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-01-12 14:14:52 +08:00
Co-authored-by: Cyenoch <cyenoch@qq.com>
This commit is contained in:
parent
59b5aabfe5
commit
da5097ab78
@ -191,7 +191,7 @@ public final class ModListPage extends ListPageBase<ModListPageSkin.ModInfoObjec
|
||||
if (exception != null) {
|
||||
Controllers.dialog("Failed to check updates", "failed", MessageDialogPane.MessageType.ERROR);
|
||||
} else {
|
||||
Controllers.navigate(new ModUpdatesPage(modManager, result));
|
||||
Controllers.navigate(new ModUpdatesPage(modManager, result, profile.getRepository().isModpack(versionId)));
|
||||
}
|
||||
})
|
||||
.withStagesHint(Collections.singletonList("mods.check_updates")),
|
||||
|
@ -19,14 +19,18 @@ package org.jackhuang.hmcl.ui.versions;
|
||||
|
||||
import com.jfoenix.controls.*;
|
||||
import com.jfoenix.controls.datamodels.treetable.RecursiveTreeObject;
|
||||
import javafx.beans.binding.ObjectBinding;
|
||||
import javafx.beans.property.*;
|
||||
import javafx.beans.value.ObservableValue;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.geometry.Pos;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.layout.BorderPane;
|
||||
import javafx.scene.layout.HBox;
|
||||
import javafx.scene.paint.Color;
|
||||
import javafx.scene.paint.Paint;
|
||||
import org.apache.commons.lang3.mutable.MutableObject;
|
||||
import org.jackhuang.hmcl.mod.LocalModFile;
|
||||
import org.jackhuang.hmcl.mod.ModManager;
|
||||
@ -37,6 +41,7 @@ import org.jackhuang.hmcl.task.FileDownloadTask;
|
||||
import org.jackhuang.hmcl.task.Schedulers;
|
||||
import org.jackhuang.hmcl.task.Task;
|
||||
import org.jackhuang.hmcl.ui.Controllers;
|
||||
import org.jackhuang.hmcl.ui.SVG;
|
||||
import org.jackhuang.hmcl.ui.construct.*;
|
||||
import org.jackhuang.hmcl.ui.decorator.DecoratorPage;
|
||||
import org.jackhuang.hmcl.util.Pair;
|
||||
@ -62,7 +67,7 @@ public class ModUpdatesPage extends BorderPane implements DecoratorPage {
|
||||
private final ObservableList<ModUpdateObject> objects;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public ModUpdatesPage(ModManager modManager, List<LocalModFile.ModUpdate> updates) {
|
||||
public ModUpdatesPage(ModManager modManager, List<LocalModFile.ModUpdate> 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<Paint>() {
|
||||
@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,
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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に同意する必要があります。
|
||||
|
@ -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.
|
||||
|
@ -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 無關,應與 速聚 協商解決。
|
||||
|
@ -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 无关,请与 速聚 协商解决。
|
||||
|
Loading…
Reference in New Issue
Block a user