From ca75ecbc93fbc9353861494933c0f3b9c83da998 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Tue, 21 Sep 2021 18:47:34 +0800 Subject: [PATCH] feat(multiplayer): report. --- .../java/org/jackhuang/hmcl/Metadata.java | 1 + .../org/jackhuang/hmcl/ui/Controllers.java | 2 +- .../main/java/org/jackhuang/hmcl/ui/SVG.java | 6 ++++++ .../ui/multiplayer/MultiplayerPageSkin.java | 19 ++++++++++--------- .../resources/assets/lang/I18N.properties | 1 + .../resources/assets/lang/I18N_zh.properties | 1 + .../assets/lang/I18N_zh_CN.properties | 1 + 7 files changed, 21 insertions(+), 10 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/Metadata.java b/HMCL/src/main/java/org/jackhuang/hmcl/Metadata.java index 130499ec1..2e3cf00be 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/Metadata.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/Metadata.java @@ -41,6 +41,7 @@ public final class Metadata { public static final String HELP_URL = "https://hmcl.huangyuhui.net/help"; public static final String CHANGELOG_URL = "https://hmcl.huangyuhui.net/changelog/"; public static final String PUBLISH_URL = "http://www.mcbbs.net/thread-142335-1-1.html"; + public static final String EULA_URL = "https://hmcl.huangyuhui.net/eula"; public static final Path MINECRAFT_DIRECTORY = OperatingSystem.getWorkingDirectory("minecraft"); public static final Path HMCL_DIRECTORY = getHMCLDirectory(); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java index 225dc76bd..ea51893bd 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java @@ -208,7 +208,7 @@ public final class Controllers { agreementPane.setHeading(new Label(i18n("launcher.agreement"))); agreementPane.setBody(new Label(i18n("launcher.agreement.hint"))); JFXHyperlink agreementLink = new JFXHyperlink(i18n("launcher.agreement")); - agreementLink.setOnAction(e -> FXUtils.openLink("https://hmcl.huangyuhui.net/eula")); + agreementLink.setOnAction(e -> FXUtils.openLink(Metadata.EULA_URL)); JFXButton yesButton = new JFXButton(i18n("launcher.agreement.accept")); yesButton.getStyleClass().add("dialog-accept"); yesButton.setOnAction(e -> { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/SVG.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/SVG.java index 27811e708..4ac981bb8 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/SVG.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/SVG.java @@ -492,4 +492,10 @@ public final class SVG { "M13,3A9,9 0 0,0 4,12H1L4.89,15.89L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3Z", fill, width, height); } + + public static Node bug(ObjectBinding fill, double width, double height) { + return createSVGPath( + "M14,12H10V10H14M14,16H10V14H14M20,8H17.19C16.74,7.22 16.12,6.55 15.37,6.04L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.04,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6.04C7.88,6.55 7.26,7.22 6.81,8H4V10H6.09C6.04,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.04,15.67 6.09,16H4V18H6.81C7.85,19.79 9.78,21 12,21C14.22,21 16.15,19.79 17.19,18H20V16H17.91C17.96,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.96,10.33 17.91,10H20V8Z", + fill, width, height); + } } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/MultiplayerPageSkin.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/MultiplayerPageSkin.java index dd724d824..a60f78cde 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/MultiplayerPageSkin.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/MultiplayerPageSkin.java @@ -24,6 +24,7 @@ import javafx.scene.control.Label; import javafx.scene.control.ScrollPane; import javafx.scene.control.SkinBase; import javafx.scene.layout.*; +import org.jackhuang.hmcl.Metadata; import org.jackhuang.hmcl.ui.FXUtils; import org.jackhuang.hmcl.ui.SVG; import org.jackhuang.hmcl.ui.animation.ContainerAnimations; @@ -96,10 +97,15 @@ public class MultiplayerPageSkin extends SkinBase { .startCategory(i18n("multiplayer.session")) .add(roomPane) .startCategory(i18n("help")) - .addNavigationDrawerItem(settingsItem -> { - settingsItem.setTitle(i18n("help")); - settingsItem.setLeftGraphic(wrap(SVG::gamepad)); - settingsItem.setOnAction(e -> FXUtils.openLink("https://hmcl.huangyuhui.net/help/launcher/multiplayer.html")); + .addNavigationDrawerItem(item -> { + item.setTitle(i18n("help")); + item.setLeftGraphic(wrap(SVG::gamepad)); + item.setOnAction(e -> FXUtils.openLink("https://hmcl.huangyuhui.net/help/launcher/multiplayer.html")); + }) + .addNavigationDrawerItem(report -> { + report.setTitle(i18n("multiplayer.report")); + report.setLeftGraphic(wrap(SVG::bug)); + report.setOnAction(e -> FXUtils.openLink(Metadata.EULA_URL)); }); FXUtils.setLimitWidth(sideBar, 200); root.setLeft(sideBar); @@ -194,11 +200,6 @@ public class MultiplayerPageSkin extends SkinBase { .map(MultiplayerPageSkin::getNATType)); pane.addRow(1, new Label(i18n("multiplayer.nat.type")), natResult); -// Label natResult = new Label(); -// natResult.textProperty().bind(BindingMapping.of(getSkinnable().natStateProperty()) -// .map(MultiplayerPageSkin::getNATType)); -// pane.addRow(1, new Label(i18n("multiplayer.nat.latency")), natResult); - natDetectionPane.getContent().add(pane); } diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index b179a2d45..07ef38371 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -592,6 +592,7 @@ multiplayer.nat.type.symmetric=Bad (Symmetric) multiplayer.nat.type.symmetric_udp_firewall=Bad (Symmetric with UDP Firewall) multiplayer.nat.type.unknown=Unknown multiplayer.powered_by=Powered by cato +multiplayer.report=Report multiplayer.session=Room multiplayer.session.name.format=%1$s's Room multiplayer.session.name.motd=HMCL Multiplayer Session - %s diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index b9ff8e14a..b4dc76f26 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -592,6 +592,7 @@ multiplayer.nat.type.symmetric=差(對稱型) multiplayer.nat.type.symmetric_udp_firewall=差(對稱型+防火牆) multiplayer.nat.type.unknown=未知 multiplayer.powered_by=由 cato 提供技術支援 +multiplayer.report=違法違規檢舉 multiplayer.session=房間 multiplayer.session.name.format=%1$s 的房間 multiplayer.session.name.motd=HMCL 多人聯機房間 - %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 3c06f1571..08c6da8d2 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -592,6 +592,7 @@ multiplayer.nat.type.symmetric=差(对称型) multiplayer.nat.type.symmetric_udp_firewall=差(对称型+防火墙) multiplayer.nat.type.unknown=未知 multiplayer.powered_by=多人联机服务由 这里 (noin.cn) 提供 +multiplayer.report=违法违规举报 multiplayer.session=房间 multiplayer.session.name.format=%1$s 的房间 multiplayer.session.name.motd=HMCL 多人联机房间 - %s