diff --git a/HMCL/build.gradle.kts b/HMCL/build.gradle.kts index 43d22d3a0..90756b104 100644 --- a/HMCL/build.gradle.kts +++ b/HMCL/build.gradle.kts @@ -47,6 +47,8 @@ val microsoftAuthId = System.getenv("MICROSOFT_AUTH_ID") ?: "" val microsoftAuthSecret = System.getenv("MICROSOFT_AUTH_SECRET") ?: "" val curseForgeApiKey = System.getenv("CURSEFORGE_API_KEY") ?: "" +val enableHiPer = System.getenv("ENABLE_HIPER") ?: "false" + version = "$versionRoot.$buildNumber" dependencies { @@ -149,6 +151,7 @@ tasks.getByName("sha "Microsoft-Auth-Secret" to microsoftAuthSecret, "CurseForge-Api-Key" to curseForgeApiKey, "Build-Channel" to versionType, + "Enable-HiPer" to enableHiPer, "Class-Path" to "pack200.jar", "Add-Opens" to listOf( "java.base/java.lang", diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/RootPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/RootPage.java index a156c7e7a..a21560672 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/RootPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/RootPage.java @@ -34,6 +34,8 @@ import org.jackhuang.hmcl.ui.SVG; import org.jackhuang.hmcl.ui.account.AccountAdvancedListItem; import org.jackhuang.hmcl.ui.construct.AdvancedListBox; import org.jackhuang.hmcl.ui.construct.AdvancedListItem; +import org.jackhuang.hmcl.ui.construct.JFXHyperlink; +import org.jackhuang.hmcl.ui.construct.MessageDialogPane; import org.jackhuang.hmcl.ui.decorator.DecoratorAnimatedPage; import org.jackhuang.hmcl.ui.decorator.DecoratorPage; import org.jackhuang.hmcl.ui.download.ModpackInstallWizardProvider; @@ -42,6 +44,7 @@ import org.jackhuang.hmcl.ui.versions.Versions; import org.jackhuang.hmcl.upgrade.UpdateChecker; import org.jackhuang.hmcl.util.TaskCancellationAction; import org.jackhuang.hmcl.util.io.CompressingUtils; +import org.jackhuang.hmcl.util.io.JarUtils; import org.jackhuang.hmcl.util.versioning.VersionNumber; import java.io.File; @@ -153,7 +156,18 @@ public class RootPage extends DecoratorAnimatedPage implements DecoratorPage { multiplayerItem.setLeftGraphic(wrap(SVG::lan)); multiplayerItem.setActionButtonVisible(false); multiplayerItem.setTitle(i18n("multiplayer")); - multiplayerItem.setOnAction(e -> Controllers.navigate(Controllers.getMultiplayerPage())); + if ("true".equalsIgnoreCase(JarUtils.getManifestAttribute("Enable-HiPer", ""))) + multiplayerItem.setOnAction(e -> Controllers.navigate(Controllers.getMultiplayerPage())); + else { + JFXHyperlink link = new JFXHyperlink(i18n("multiplayer.hint.details")); + link.setOnAction(e -> FXUtils.openLink("https://hmcl.huangyuhui.net/api/redirect/multiplayer-migrate")); + multiplayerItem.setOnAction(e -> + Controllers.dialog( + new MessageDialogPane.Builder(i18n("multiplayer.hint"), null, MessageDialogPane.MessageType.INFO) + .addAction(link) + .ok(null) + .build())); + } // sixth item in left sidebar AdvancedListItem launcherSettingsItem = new AdvancedListItem(); diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index ba76c4730..5f668b3ad 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -866,7 +866,8 @@ multiplayer.help.2=多人联机教程 multiplayer.help.3=创建方帮助 multiplayer.help.4=参与者帮助 multiplayer.help.text=测试能否联机 -multiplayer.hint=The multiplayer online function is in the experimental stage, if you have any questions, please go to mcer.cn to give feedback +multiplayer.hint=Multiplayer online function is under maintenance. +multiplayer.hint.details=View details multiplayer.persistence=License Management multiplayer.persistence.export=Export license to file multiplayer.persistence.export.button=Export license file diff --git a/HMCL/src/main/resources/assets/lang/I18N_es.properties b/HMCL/src/main/resources/assets/lang/I18N_es.properties index 47dfee40a..987130819 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_es.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_es.properties @@ -842,7 +842,6 @@ O bien, puedes esperar unos minutos. Si la función sigue sin funcionar, consult multiplayer.exit.timeout.dynamic_token=No se ha podido conectar al servicio multijugador, los servidores de autenticación pueden tener demasiadas peticiones en ese momento. Por favor, espere hasta el próximo medio tiempo para permitir que los servidores despejen algunas sesiones.\n\ \n\ También puedes comprar algunos tokens multijugador para conseguir una experiencia multijugador estable. -multiplayer.hint=La función multijugador está actualmente en fase alfa. Por favor, proporciona tus comentarios en mcer.cn. multiplayer.nat=Detección de red multiplayer.nat.failed=No se ha podido detectar el tipo de red. multiplayer.nat.hint=La detección del tipo de red comprobará si su entorno de red es compatible con la funcionalidad multijugador.\n\ diff --git a/HMCL/src/main/resources/assets/lang/I18N_ja.properties b/HMCL/src/main/resources/assets/lang/I18N_ja.properties index a77aa9dc1..af484c88d 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ja.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ja.properties @@ -669,7 +669,6 @@ multiplayer.exit.after_ready=マルチプレイヤーセッションが壊れて multiplayer.exit.before_ready=マルチプレイヤーセッションの作成に失敗しました。 cato exitcode %d multiplayer.exit.timeout=マルチプレイヤーサーバーへの接続に失敗しました。 multiplayer.exit.timeout.dynamic_token=マルチプレイヤーサーバーへの接続に失敗しました。 -multiplayer.hint=マルチプレイヤー機能は実験的なものです。フィードバックをお願いします。 multiplayer.nat=ネットワークタイプの検出 multiplayer.nat.failed=ネットワークタイプの検出に失敗しました。 multiplayer.nat.hint=ネットワークタイプの検出により、ネットワークがマルチプレイヤーモードの要件を満たしているかどうかが明確になります。 diff --git a/HMCL/src/main/resources/assets/lang/I18N_ru.properties b/HMCL/src/main/resources/assets/lang/I18N_ru.properties index ad88d41d3..0f138700c 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ru.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ru.properties @@ -673,7 +673,6 @@ multiplayer.exit.after_ready=Сессия сетевой игры сломана multiplayer.exit.before_ready=Не удалось создать сессию сетевой игры. Код выхода като %d multiplayer.exit.timeout.static_token=Не удалось подключиться к серверу сетевой игры. Переключитесь на динамический токен и попробуйте снова. multiplayer.exit.timeout.dynamic_token=Не удалось подключиться к серверу сетевой игры. -multiplayer.hint=Функция сетевой игры экспериментальная. Оставьте свой отзыв. multiplayer.powered_by=Сетевая игра предоставлена mcer.cn. Licence multiplayer.report=Отчёт multiplayer.relay=Режим реле diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index 0359ab49a..fd88a7a2f 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -712,7 +712,8 @@ multiplayer.help.2=多人聯機教程 multiplayer.help.3=創建方幫助 multiplayer.help.4=參與者幫助 multiplayer.help.text=測試能否聯機 -multiplayer.hint=多人聯機功能處於實驗階段,如果有問題請前往 mcer.cn 回饋 +multiplayer.hint=多人聯機服務正在維護中。 +multiplayer.hint.details=查看詳情 multiplayer.persistence=授權信息管理 multiplayer.persistence.export=將授權信息導出至文件 multiplayer.persistence.export.button=導出授權文件 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 21bc3e796..3205ac183 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -712,7 +712,8 @@ multiplayer.help.2=多人联机教程 multiplayer.help.3=创建方帮助 multiplayer.help.4=参与者帮助 multiplayer.help.text=测试能否联机 -multiplayer.hint=多人联机功能处于实验阶段,如果有问题请前往 mcer.cn 反馈 +multiplayer.hint=多人联机服务正在维护中。 +multiplayer.hint.details=查看详情 multiplayer.persistence=授权信息管理 multiplayer.persistence.export=将授权信息导出至文件 multiplayer.persistence.export.button=导出授权文件