缺少字符矫正 / NAT 检测移除 (#1718)

* 缺少字符矫正 / NAT 检测移除

* 错误修复

* 修正nat移除不彻底导致的编译错误

* 授权协议发布

* code-clean

* fix-err

* fix-err-2

* update-in18

* url-fix

Co-authored-by: Yuhui Huang <i@huangyuhui.net>
This commit is contained in:
Cato : Love the world and myself 2022-09-16 01:18:26 +08:00 committed by GitHub
parent 8461b0418c
commit 735a407f0e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 43 additions and 183 deletions

View File

@ -20,13 +20,11 @@ package org.jackhuang.hmcl.ui.multiplayer;
import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXDialogLayout;
import de.javawi.jstun.test.DiscoveryInfo;
import de.javawi.jstun.test.DiscoveryTest;
import javafx.beans.property.*;
import javafx.scene.control.Label;
import javafx.scene.control.Skin;
import org.jackhuang.hmcl.setting.DownloadProviders;
import org.jackhuang.hmcl.task.Schedulers;
import org.jackhuang.hmcl.task.Task;
import org.jackhuang.hmcl.ui.Controllers;
import org.jackhuang.hmcl.ui.construct.*;
import org.jackhuang.hmcl.ui.decorator.DecoratorAnimatedPage;
@ -59,7 +57,6 @@ public class MultiplayerPage extends DecoratorAnimatedPage implements DecoratorP
private Consumer<MultiplayerManager.HiperIPEvent> onIPAllocated;
public MultiplayerPage() {
testNAT();
}
@Override
@ -112,20 +109,6 @@ public class MultiplayerPage extends DecoratorAnimatedPage implements DecoratorP
return session.getReadOnlyProperty();
}
private void testNAT() {
Task.supplyAsync(() -> {
DiscoveryTest tester = new DiscoveryTest(null, 0, "stun.miwifi.com", 3478);
return tester.test();
}).whenComplete(Schedulers.javafx(), (info, exception) -> {
if (exception == null) {
natState.set(Result.ok(info));
} else {
natState.set(Result.error());
}
LOG.log(Level.INFO, "Nat test result " + MultiplayerPageSkin.getNATType(natState.get()), exception);
}).start();
}
private void checkAgreement(Runnable runnable) {
if (globalConfig().getMultiplayerAgreementVersion() < MultiplayerManager.HIPER_AGREEMENT_VERSION) {
JFXDialogLayout agreementPane = new JFXDialogLayout();

View File

@ -20,7 +20,6 @@ package org.jackhuang.hmcl.ui.multiplayer;
import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXPasswordField;
import com.jfoenix.controls.JFXTextField;
import de.javawi.jstun.test.DiscoveryInfo;
import javafx.beans.binding.Bindings;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
@ -41,9 +40,6 @@ import org.jackhuang.hmcl.ui.decorator.DecoratorAnimatedPage;
import org.jackhuang.hmcl.ui.versions.Versions;
import org.jackhuang.hmcl.util.HMCLService;
import org.jackhuang.hmcl.util.Lang;
import org.jackhuang.hmcl.util.Result;
import org.jackhuang.hmcl.util.javafx.BindingMapping;
import org.jetbrains.annotations.Nullable;
import static org.jackhuang.hmcl.setting.ConfigHolder.globalConfig;
import static org.jackhuang.hmcl.ui.versions.VersionPage.wrap;
@ -211,30 +207,6 @@ public class MultiplayerPageSkin extends DecoratorAnimatedPage.DecoratorAnimated
});
}
ComponentList natDetectionPane = new ComponentList();
{
GridPane pane = new GridPane();
ColumnConstraints title = new ColumnConstraints();
ColumnConstraints value = new ColumnConstraints();
pane.getColumnConstraints().setAll(title, value);
value.setFillWidth(true);
value.setHgrow(Priority.ALWAYS);
pane.setHgap(16);
pane.setVgap(8);
HintPane hintPane = new HintPane(MessageDialogPane.MessageType.INFO);
hintPane.setText(i18n("multiplayer.nat.hint"));
GridPane.setColumnSpan(hintPane, 2);
pane.addRow(0, hintPane);
Label natResult = new Label();
natResult.textProperty().bind(BindingMapping.of(getSkinnable().natStateProperty())
.map(MultiplayerPageSkin::getNATType));
pane.addRow(1, new Label(i18n("multiplayer.nat.type")), natResult);
natDetectionPane.getContent().add(pane);
}
ComponentList thanksPane = new ComponentList();
{
HBox pane = new HBox();
@ -257,36 +229,10 @@ public class MultiplayerPageSkin extends DecoratorAnimatedPage.DecoratorAnimated
content.getChildren().setAll(
mainPane,
ComponentList.createComponentListTitle(i18n("multiplayer.nat")),
natDetectionPane,
ComponentList.createComponentListTitle(i18n("about")),
thanksPane
);
}
}
public static String getNATType(@Nullable Result<DiscoveryInfo> info) {
if (info == null) {
return i18n("multiplayer.nat.testing");
} else if (info.isError()) {
return i18n("multiplayer.nat.failed");
} else if (info.get().isBlockedUDP()) {
return i18n("multiplayer.nat.type.blocked_udp");
} else if (info.get().isFullCone()) {
return i18n("multiplayer.nat.type.full_cone");
} else if (info.get().isOpenAccess()) {
return i18n("multiplayer.nat.type.open_access");
} else if (info.get().isPortRestrictedCone()) {
return i18n("multiplayer.nat.type.port_restricted_cone");
} else if (info.get().isRestrictedCone()) {
return i18n("multiplayer.nat.type.restricted_cone");
} else if (info.get().isSymmetric()) {
return i18n("multiplayer.nat.type.symmetric");
} else if (info.get().isSymmetricUDPFirewall()) {
return i18n("multiplayer.nat.type.symmetric_udp_firewall");
} else {
return i18n("multiplayer.nat.type.unknown");
}
}
}

View File

@ -837,62 +837,37 @@ mods.not_modded=You must install a mod loader (Fabric, Forge or LiteLoader) firs
mods.restore=Rollback
mods.url=Official Page
multiplayer=Multiplayer
multiplayer.agreement.prompt=Before using the multiplayer service, you must agree to the terms of services from the service provider, ioi, first.\n\
By using this service, you agree to these terms of service.
multiplayer.download=Downloading Dependencies
multiplayer.download.failed=Failed to initialize multiplayer feature, some files cannot be downloaded.
multiplayer.download.success=Dependencies initialization completed
multiplayer.download.unsupported=The current operating system or architecture is unsupported.
multiplayer.exit=HiPer exited abnormally, exitcode %d
multiplayer.hint=The multiplayer feature is currently in the alpha stage. Please provide your feedback at mcer.cn.
multiplayer.nat=Network Detection
multiplayer.nat.failed=Unable to detect the network type.
multiplayer.nat.hint=Network type detection will check if your network environment supports the multiplayer functionality.\n\
\n\
If the result is 'Bad' or 'Failed', you may not be able to use this feature.\n\
multiplayer.nat.latency=Latency
multiplayer.nat.not_yet_tested=Not Yet Tested
multiplayer.nat.packet_loss_ratio=Packet Loss Rate
multiplayer.nat.testing=Testing
multiplayer.nat.type=NAT Type
multiplayer.nat.type.blocked_udp=Very Bad (UDP is blocked)
multiplayer.nat.type.full_cone=Best (Full Cone)
multiplayer.nat.type.open_access=Best (Public Network Access)
multiplayer.nat.type.port_restricted_cone=Good (Port Restricted Cone)
multiplayer.nat.type.restricted_cone=Good (Restricted Cone)
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=Multiplayer service is provided by <a href\="https\://mcer.cn">mcer.cn</a>. <a href\="https\://hmcl.huangyuhui.net/api/redirect/multiplayer-agreement">Terms of Service</a>
multiplayer.report=Report
multiplayer.session=Session
multiplayer.session.name.format=%1$s's Session
multiplayer.session.name.motd=HMCL Multiplayer Session - %s
multiplayer.session.close=End Session
multiplayer.session.close.warning=All other players in this session will be disconnected. Continue?
multiplayer.session.copy_room_code=Copy Invitation Code
multiplayer.session.create=Create Session
multiplayer.session.create.error.dynamic_token=Unable to create a multiplayer session. Please try again later.
multiplayer.session.create.error.static_token=Unable to create a multiplayer session. You can clear your token and then try again later.
multiplayer.session.create.hint=Before creating a multiplayer session, you must click on "Open to LAN" first in the game's pause menu. Then enter the port number below.
multiplayer.session.create.join=Join Request
multiplayer.session.create.join.allow=Automatically accepts all connection requests
multiplayer.session.create.join.prompt=Player %s requests to join the multiplayer session. Do you want to accept?
multiplayer.session.create.members=Players
multiplayer.session.create.members.kick=Ban
multiplayer.session.create.members.kick.prompt=Do you want to ban this player?
multiplayer.session.create.name=Name
multiplayer.session.create.port=Port
multiplayer.session.create.port.error=Unable to detect the game port, you must click on "Open to Lan" in the game's pause menu to allow others to join your world.
multiplayer=Multiplayer online
multiplayer.agreement.prompt=Before using the multiplayer function, you need to agree to the user agreement and disclaimer of the multiplayer service provider ioi series of works. \nThe user's use of the online service will be deemed to unconditionally agree to the user agreement and disclaimer.
multiplayer.download=Downloading dependencies
multiplayer.download.failed=Initialization failed, some files failed to download
multiplayer.download.success=Multiplayer online initialization completed
multiplayer.download.unsupported=Multiplayer dependencies are not supported on current system or platform
multiplayer.error.failed_get_device=HiPer could not create a network device, maybe HiPer has already started or lacks administrator privileges.
multiplayer.error.failed_load_config=HiPer initialization failed, maybe there is a problem with the configuration file or the certificate is invalid.
multiplayer.error.file_not_found=The HiPer program could not be found. The program should finish downloading when entering the multiplayer page. Please restart HMCL and try again. \nPlease check if your computer's antivirus software has flagged HiPer as a virus, and if so, restore HiPer.
multiplayer.exit=HiPer exited unexpectedly with exit code %d
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.powered_by=This service is provided under the license of (<a href="https://mcer.cn">Matrix Lab</a>)<a href\="https\://hmcl.huangyuhui.net/api/redirect/multiplayer-agreement" >License Agreement</a>
multiplayer.report=Illegal and Violation Report
multiplayer.token=Token
multiplayer.token.apply=Apply for a Static Token
multiplayer.token.expired=HiPer certificate was expired. Please restart HMCL and retry.
multiplayer.token.malformed=HiPer configuration file is malformed. Please restart HMCL and retry.
multiplayer.token.prompt=You must get a token to use multiplayer service.
multiplayer.file_not_found=Unable to find cato executable. This program should already be downloaded after your enter this page, please reopen the launcher and try again.\n\
Also, please check if your antivirus software marked it as malware. If so, please release it from your anti-virus software's quarantine.
multiplayer.token.apply=Apply for a token
multiplayer.token.expired=HiPer certificate expired, please restart HMCL and try again.
multiplayer.token.invalid=Invalid credentials.
multiplayer.token.malformed=HiPer configuration file could not be parsed, please restart HMCL and try again.
multiplayer.token.prompt=You need a token to use the multiplayer service. Click on the "Application Credentials" next to it to view the details
multiplayer.off=Start HiPer
multiplayer.off.hint=The multiplayer service is provided by HiPer, you need to start HiPer first to use the multiplayer service.
multiplayer.off.start=Start HiPer
multiplayer.on=Turn off HiPer
multiplayer.master=Prompt for creator
multiplayer.master.hint=Multiplayer online requires one player to start the game first, select the single player mode to enter a save, and select the "Open to LAN" option in the game options menu. After that you can see the port number (usually 5 digits) indicated by the game in the game chat box. Click the Generate Server Address button below, enter the port number, and you can get your server address. This address needs to be provided to other players who need to join the server to add the server.
multiplayer.master.server_address=Generate server address
multiplayer.master.server_address.copy=Copy
multiplayer.master.port=Port number
multiplayer.master.port.validate=The port number (0~65535) displayed in the game chat box,when you open the game in LAN.
multiplayer.slave=Participant Prompt
multiplayer.slave.hint=If you want to join another player's game save to play the game, you need to ask that player to turn on the open mode to the local area network according to the operation prompted by the creator. Then start the game, and select the multiplayer mode, select Add Server. The game will ask you to enter the server address, you only need to create a player to ask for the server address and enter it, and then enter the server.
datapack=Datapacks
datapack.add=Install datapack

View File

@ -859,7 +859,7 @@ multiplayer.nat.type.restricted_cone=Bueno (Cono Restringido)
multiplayer.nat.type.symmetric=Malo (Simétrico)
multiplayer.nat.type.symmetric_udp_firewall=Malo (Simétrico con cortafuegos UDP)
multiplayer.nat.type.unknown=Desconocido
multiplayer.powered_by=El servicio multijugador es proporcionado por <a href\="https\://mcer.cn">mcer.cn</a>. <a href\="https\://hmcl.huangyuhui.net/api/redirect/multiplayer-agreement">Términos de servicio</a>
multiplayer.powered_by=El servicio multijugador es proporcionado por <a href\="https\://mcer.cn">mcer.cn</a>. <a href\="https\://hmcl.huangyuhui.net/api/redirect/multiplayer-agreement">Licence</a>
multiplayer.relay=Modo de retransmisión
multiplayer.relay.hint=El modo de retransmisión proporciona una experiencia multijugador sin problemas para los usuarios con una mala conexión a Internet.\n\
\n\

View File

@ -683,7 +683,7 @@ multiplayer.nat.type.restricted_cone=Medium制限付きコーン
multiplayer.nat.type.symmetric=Bad対称
multiplayer.nat.type.symmetric_udp_firewall=BadUDPファイアウォールと対称
multiplayer.nat.type.unknown=不明`
multiplayer.powered_by=マルチプレイヤーサービスは<a href="https://mcer.cn">mcer.cn</a>によって提供されます。 <a href="https://hmcl.huangyuhui.net/api/redirect/multiplayer-agreement">EULA</a>
multiplayer.powered_by=マルチプレイヤーサービスは<a href="https://mcer.cn">mcer.cn</a>によって提供されます。 <a href\="https\://hmcl.huangyuhui.net/api/redirect/multiplayer-agreement">Licence/a>
multiplayer.report=レポート
multiplayer.relay=リレーモード
multiplayer.relay.hint=静的トークンを持ち、テストされたNATタイプが不良対称であるユーザーの場合

View File

@ -671,22 +671,7 @@ multiplayer.exit.before_ready=Не удалось создать сессию с
multiplayer.exit.timeout.static_token=Не удалось подключиться к серверу сетевой игры. Переключитесь на динамический токен и попробуйте снова.
multiplayer.exit.timeout.dynamic_token=Не удалось подключиться к серверу сетевой игры.
multiplayer.hint=Функция сетевой игры экспериментальная. Оставьте свой отзыв.
multiplayer.nat=Обнаружение типа сети
multiplayer.nat.hint=Определение типа сети позволит понять, соответствует ли ваша сеть нашим требованиям для сетевой игры.
multiplayer.nat.latency=Задержка
multiplayer.nat.not_yet_tested=Ещё не протестировано
multiplayer.nat.packet_loss_ratio=Коэффициент потери пакетов
multiplayer.nat.testing=Тестирование
multiplayer.nat.type=Тип NAT
multiplayer.nat.type.blocked_udp=Очень плохой (заблокированный UDP)
multiplayer.nat.type.full_cone=Хороший (полный конус)
multiplayer.nat.type.open_access=Хороший (открытый доступ)
multiplayer.nat.type.port_restricted_cone=Средний (конус с ограничением порта)
multiplayer.nat.type.restricted_cone=Средний (ограниченный конус)
multiplayer.nat.type.symmetric=Плохой (симметричный)
multiplayer.nat.type.symmetric_udp_firewall=Плохо (симметричный с брандмауэром UDP)
multiplayer.nat.type.unknown=Неизвестно
multiplayer.powered_by=Сетевая игра предоставлена <a href="https://mcer.cn">mcer.cn</a>. <a href="https://hmcl.huangyuhui.net/api/redirect/multiplayer-agreement">EULA</a>
multiplayer.powered_by=Сетевая игра предоставлена <a href="https://mcer.cn">mcer.cn</a>. <a href\="https\://hmcl.huangyuhui.net/api/redirect/multiplayer-agreement">Licence</a>
multiplayer.report=Отчёт
multiplayer.relay=Режим реле
multiplayer.relay.hint=Для пользователей, у которых есть статический токен, и чей проверенный тип NAT - плохо-семитричный

View File

@ -691,44 +691,31 @@ multiplayer.download=正在下載相依元件
multiplayer.download.failed=初始化失敗,部分檔案未能完成下載
multiplayer.download.success=多人聯機初始化完成
multiplayer.download.unsupported=多人聯機依賴不支持當前系統或平台
multiplayer.error.failed_get_device=HiPer 無法創建網絡設備可能是HiPer已經啟動或缺少管理員權限。
multiplayer.error.failed_load_config=HiPer 初始化失敗,可能是配置文件存在問題或證書已失效。
multiplayer.error.file_not_found=找不到 HiPer 程式。該程式應該在進入多人聯機頁面時完成下載。請重啟 HMCL 再試。\n請檢查你電腦的防毒軟體是否將 HiPer 標記為病毒,如果是,請恢復 HiPer。
multiplayer.exit=HiPer 意外退出,退出碼 %d
multiplayer.hint=多人聯機功能處於實驗階段,如果有問題請前往 mcer.cn 回饋
multiplayer.nat=網路檢測
multiplayer.nat.failed=檢測失敗
multiplayer.nat.hint=執行網路檢測可以讓你更清楚你的網路狀況是否符合聯機功能的需求\n若檢測結果為 差 或 檢測失敗 的網路可能導致聯機失敗!
multiplayer.nat.latency=延遲
multiplayer.nat.not_yet_tested=尚未檢測
multiplayer.nat.packet_loss_ratio=丟包率
multiplayer.nat.testing=檢測中
multiplayer.nat.type=NAT 類型
multiplayer.nat.type.blocked_udp=極差(網路禁止 UDP 協議)
multiplayer.nat.type.full_cone=好(完全圓錐型)
multiplayer.nat.type.open_access=好(公網開放型)
multiplayer.nat.type.port_restricted_cone=中(埠受限圓錐型)
multiplayer.nat.type.restricted_cone=中(受限圓錐型)
multiplayer.nat.type.symmetric=差(對稱型)
multiplayer.nat.type.symmetric_udp_firewall=差(對稱型+防火牆)
multiplayer.nat.type.unknown=未知
multiplayer.powered_by=多人聯機服務由 (<a href="https://mcer.cn">mcer.cn</a>) 提供。<a href="https://hmcl.huangyuhui.net/api/redirect/multiplayer-agreement">用戶協議與免責聲明</a>
multiplayer.powered_by=本服務由 (<a href="https://mcer.cn">速聚</a>) 提供。<a href\="https\://hmcl.huangyuhui.net/api/redirect/multiplayer-agreement">授權協議</a>
multiplayer.report=違法違規檢舉
multiplayer.token=憑證
multiplayer.token.apply=申請憑證
multiplayer.token.invalid=憑證不正確。
multiplayer.token.expired=HiPer 證書過期,請重新啟動 HMCL 再試。
multiplayer.token.malformed=HiPer 配置檔案無法解析,請重新啟動 HMCL 再試。
multiplayer.token.prompt=你需要憑證才能使用多人聯機服務。點擊旁邊的“申請憑證”查看詳情
multiplayer.session.error.file_not_found=找不到 HiPer 程式。該程式應該在進入多人聯機頁面時完成下載。請重啟 HMCL 再試。\n請檢查你電腦的防毒軟體是否將 HiPer 標記為病毒,如果是,請恢復 HiPer。
multiplayer.off=啟動 HiPer
multiplayer.off.hint=多人聯機服務由 HiPer 提供,你需要先啟動 HiPer 以使用多人聯機服務。
multiplayer.off.start=啟動 HiPer
multiplayer.on=關閉 HiPer
multiplayer.master=開服者提示
multiplayer.master=创建方提示
multiplayer.master.hint=多人聯機需要有一位玩家先啟動遊戲,並選擇單人遊戲模式進入一個存檔後,在遊戲選項菜單內選擇"對區域網路開放"選項。之後你可以在遊戲聊天框內看到遊戲提示的埠號(通常是 5 位數字)。點擊下方的生成伺服器地址按鈕,輸入埠號,你就可以獲得你的伺服器地址了。該地址需要提供給其他需要加入伺服器的玩家用於添加伺服器。
multiplayer.master.server_address=生成伺服器地址
multiplayer.master.server_address.copy=拷貝
multiplayer.master.port=埠號
multiplayer.master.port.validate=在遊戲聊天框中出現的埠號 (0~65535)
multiplayer.slave=參與者提示
multiplayer.slave.hint=如果你想加入其他玩家的遊戲存檔進行遊戲,你需要要求那個玩家參照開服者提示的操作開啟對區域網路開放模式。然後啟動遊戲,並選擇多人遊戲模式,選擇添加伺服器。遊戲會要求你輸入伺服器地址,你只需要向開服玩家索要伺服器地址並輸入,並進入伺服器即可。
multiplayer.slave.hint=如果你想加入其他玩家的遊戲存檔進行遊戲,你需要要求那個玩家參照创建方提示的操作開啟對區域網路開放模式。然後啟動遊戲,並選擇多人遊戲模式,選擇添加伺服器。遊戲會要求你輸入伺服器地址,你只需要向開服玩家索要伺服器地址並輸入,並進入伺服器即可。
datapack=資料包
datapack.add=加入資料包

View File

@ -696,23 +696,7 @@ multiplayer.error.failed_load_config=HiPer 初始化失败,可能是配置文
multiplayer.error.file_not_found=找不到 HiPer 程序。该程序应该在进入多人联机页面时完成下载。请重启 HMCL 再试。\n请检查你电脑的杀毒软件是否将 HiPer 标记为病毒,如果是,请恢复 HiPer。
multiplayer.exit=HiPer 意外退出,退出码 %d
multiplayer.hint=多人联机功能处于实验阶段,如果有问题请前往 mcer.cn 反馈
multiplayer.nat=网络检测
multiplayer.nat.failed=检测失败
multiplayer.nat.hint=执行网络检测可以让你更清楚你的网络状况是否符合联机功能的需求\n若检测结果为 差 或 检测失败 的网络可能导致联机失败!
multiplayer.nat.latency=延迟
multiplayer.nat.not_yet_tested=尚未检测
multiplayer.nat.packet_loss_ratio=丢包率
multiplayer.nat.testing=检测中
multiplayer.nat.type=NAT 类型
multiplayer.nat.type.blocked_udp=极差(网络禁止 UDP 协议)
multiplayer.nat.type.full_cone=好(完全圆锥型)
multiplayer.nat.type.open_access=好(公网开放型)
multiplayer.nat.type.port_restricted_cone=中(端口受限圆锥型)
multiplayer.nat.type.restricted_cone=中(受限圆锥型)
multiplayer.nat.type.symmetric=差(对称型)
multiplayer.nat.type.symmetric_udp_firewall=差(对称型+防火墙)
multiplayer.nat.type.unknown=未知
multiplayer.powered_by=本由 (<a href="https://mcer.cn">速聚</a>) 授权提供 <a href="https://hmcl.huangyuhui.net/api/redirect/multiplayer-agreement">用户协议与免责声明</a>
multiplayer.powered_by=本服务由 (<a href="https://mcer.cn">速聚</a>) 授权提供 <a href\="https\://hmcl.huangyuhui.net/api/redirect/multiplayer-agreement">授权协议</a>
multiplayer.report=违法违规举报
multiplayer.token=凭证
multiplayer.token.apply=申请凭证
@ -724,14 +708,14 @@ multiplayer.off=启动 HiPer
multiplayer.off.hint=多人联机服务由 HiPer 提供,你需要先启动 HiPer 以使用多人联机服务。
multiplayer.off.start=启动 HiPer
multiplayer.on=关闭 HiPer
multiplayer.master=开服者提示
multiplayer.master=创建方提示
multiplayer.master.hint=多人联机需要有一位玩家先启动游戏,并选择单人游戏模式进入一个存档后,在游戏选项菜单内选择"对局域网开放"选项。之后你可以在游戏聊天框内看到游戏提示的端口号(通常是 5 位数字)。点击下方的生成服务器地址按钮,输入端口号,你就可以获得你的服务器地址了。该地址需要提供给其他需要加入服务器的玩家用于添加服务器。
multiplayer.master.server_address=生成服务器地址
multiplayer.master.server_address.copy=拷贝
multiplayer.master.port=端口号
multiplayer.master.port.validate=在游戏聊天框中出现的端口号 (0~65535)
multiplayer.slave=参与者提示
multiplayer.slave.hint=如果你想加入其他玩家的游戏存档进行游戏,你需要要求那个玩家参照开服者提示的操作开启对局域网开放模式。然后启动游戏,并选择多人游戏模式,选择添加服务器。游戏会要求你输入服务器地址,你只需要向开服玩家索要服务器地址并输入,并进入服务器即可。
multiplayer.slave.hint=如果你想加入其他玩家的游戏存档进行游戏,你需要要求那个玩家参照创建方提示的操作开启对局域网开放模式。然后启动游戏,并选择多人游戏模式,选择添加服务器。游戏会要求你输入服务器地址,你只需要创建玩家索要服务器地址并输入,并进入服务器即可。
datapack=数据包
datapack.add=添加数据包