From 56327eba5428b178653a6b5108ce7062024decdf Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Mon, 27 Sep 2021 13:05:28 +0800 Subject: [PATCH] feat(multiplayer): show cato version. --- .../ui/multiplayer/LocalServerBroadcaster.java | 2 +- .../hmcl/ui/multiplayer/MultiplayerManager.java | 2 +- .../hmcl/ui/multiplayer/MultiplayerPageSkin.java | 14 +++++++++++--- .../src/main/resources/assets/lang/I18N.properties | 1 + .../main/resources/assets/lang/I18N_zh.properties | 1 + .../resources/assets/lang/I18N_zh_CN.properties | 1 + 6 files changed, 16 insertions(+), 5 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/LocalServerBroadcaster.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/LocalServerBroadcaster.java index b441261a4..312370ffa 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/LocalServerBroadcaster.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/LocalServerBroadcaster.java @@ -57,7 +57,7 @@ public class LocalServerBroadcaster implements Runnable { byte[] data = String.format("[MOTD]%s[/MOTD][AD]%d[/AD]", i18n("multiplayer.session.name.motd", session.getName()), port).getBytes(StandardCharsets.UTF_8); DatagramPacket packet = new DatagramPacket(data, 0, data.length, broadcastAddress, 4445); socket.send(packet); - LOG.fine("Broadcast server 0.0.0.0:" + port); + LOG.finest("Broadcast server 0.0.0.0:" + port); } catch (IOException e) { LOG.log(Level.WARNING, "Failed to send motd packet", e); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/MultiplayerManager.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/MultiplayerManager.java index 5d69a79c1..8d58d51af 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/MultiplayerManager.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/MultiplayerManager.java @@ -218,7 +218,7 @@ public final class MultiplayerManager { CatoSession(String name, State type, Process process, List commands) { super(process, commands); - Runtime.getRuntime().addShutdownHook(Lang.thread(this::stop)); + Runtime.getRuntime().addShutdownHook(new Thread(this::stop)); LOG.info("Started cato with command: " + new CommandBuilder().addAll(commands).toString()); 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 e7066cb66..b704cf4b9 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 @@ -169,11 +169,14 @@ public class MultiplayerPageSkin extends SkinBase { VBox masterPane = new VBox(8); { + HintPane masterHintPane = new HintPane(); + masterHintPane.setText(i18n("multiplayer.state.master.hint")); + Label label = new Label(i18n("multiplayer.state.master")); label.textProperty().bind(Bindings.createStringBinding(() -> i18n("multiplayer.state.master", control.getSession() == null ? "" : control.getSession().getName(), control.getPort()), control.portProperty(), control.sessionProperty())); - masterPane.getChildren().setAll(label); + masterPane.getChildren().setAll(masterHintPane, label); } BorderPane slavePane = new BorderPane(); @@ -243,9 +246,14 @@ public class MultiplayerPageSkin extends SkinBase { tokenField.setPromptText(i18n("multiplayer.session.create.token.prompt")); gridPane.addRow(0, new Label(i18n("multiplayer.session.create.token")), tokenField); - Label label = new Label(i18n("multiplayer.powered_by")); + BorderPane pane = new BorderPane(); + Label versionLabel = new Label("cato " + MultiplayerManager.CATO_VERSION); + pane.setLeft(versionLabel); - thanksPane.getContent().addAll(gridPane, label); + Label label = new Label(i18n("multiplayer.powered_by")); + pane.setRight(label); + + thanksPane.getContent().addAll(gridPane, pane); } content.getChildren().setAll( diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index 48c5ff3c4..7b71ee622 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -642,6 +642,7 @@ multiplayer.state.connecting=Connecting multiplayer.state.disconnected=Not created/entered a multiplayer session multiplayer.state.disconnected.hint=Someone should create a multiplayer session, and others join the session to play the game together. multiplayer.state.master=Created room: %1$s, port: %2$d +multiplayer.state.master.hint=After creating multiplayer room, click the "copy invitation code" button and send the invitation code to players you want to invite. These player can paste the invitation code when joining room. multiplayer.state.slave=Joined room: %1$s, address: %2$s multiplayer.state.slave.copy=Copy address multiplayer.state.slave.hint=After joining multiplayer room, you should get to multiplayer page in Minecraft and connect to the "HMCL Multiplayer Session" server, or manually add a server with address shown below. diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index 6e573c1c8..b9833571e 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -641,6 +641,7 @@ multiplayer.state.connecting=連接中 multiplayer.state.disconnected=未創建/加入房間 multiplayer.state.disconnected.hint=多人聯機功能需要先有一位玩家創建房間後,其他玩家加入房間後繼續遊戲。 multiplayer.state.master=你已創建房間:%1$s,埠號 %2$d +multiplayer.state.master.hint=創建房間後,你可以點擊複製邀請碼,並發送給你希望加入聯機的玩家。這些玩家在進入 HMCL 多人聯機頁面後,點擊加入房間並黏貼邀請碼即可加入聯機房間。 multiplayer.state.slave=你已加入房間: %1$s,位址為 %2$s multiplayer.state.slave.copy=拷貝位址 multiplayer.state.slave.hint=加入房間後,你需要在 Minecraft 的多人遊戲頁面選擇 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 286203cc2..fdf6cba74 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -641,6 +641,7 @@ multiplayer.state.connecting=连接中 multiplayer.state.disconnected=未创建/加入房间 multiplayer.state.disconnected.hint=多人联机功能需要先有一位玩家创建房间后,其他玩家加入房间后继续游戏。 multiplayer.state.master=你已创建房间:%1$s,端口号 %2$d +multiplayer.state.master.hint=创建房间后,你可以点击复制邀请码,并发送给你希望加入联机的玩家。这些玩家在进入 HMCL 多人联机页面后,点击加入房间并粘贴邀请码即可加入联机房间。 multiplayer.state.slave=你已加入房间: %1$s,地址为 %2$s multiplayer.state.slave.copy=拷贝地址 multiplayer.state.slave.hint=加入房间后,你需要在 Minecraft 的多人游戏页面选择 HMCL 多人联机房间服务器,或者手动添加下方的地址的服务器。