mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-01-24 14:34:15 +08:00
缺少字符矫正 / 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:
parent
8461b0418c
commit
735a407f0e
@ -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();
|
||||
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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\
|
||||
|
@ -683,7 +683,7 @@ multiplayer.nat.type.restricted_cone=Medium(制限付きコーン)
|
||||
multiplayer.nat.type.symmetric=Bad(対称)
|
||||
multiplayer.nat.type.symmetric_udp_firewall=Bad(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タイプが不良対称であるユーザーの場合
|
||||
|
@ -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 - плохо-семитричный
|
||||
|
@ -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=加入資料包
|
||||
|
@ -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=添加数据包
|
||||
|
Loading…
Reference in New Issue
Block a user