feat(multiplayer): join application.

This commit is contained in:
huanghongxun 2021-09-30 17:38:18 +08:00
parent a48336db4f
commit ae8f67d507
6 changed files with 13 additions and 7 deletions

View File

@ -210,8 +210,11 @@ public class MultiplayerPage extends Control implements DecoratorPage, PageAware
int gamePort = result.getAd(); int gamePort = result.getAd();
try { try {
MultiplayerManager.CatoSession session = MultiplayerManager.createSession(config().getMultiplayerToken(), result.getMotd(), gamePort); MultiplayerManager.CatoSession session = MultiplayerManager.createSession(config().getMultiplayerToken(), result.getMotd(), gamePort);
session.getServer().onClientAdding().register(event -> { session.getServer().setOnClientAdding((client, resolveClient, rejectClient) -> {
runInFX(() -> {
Controllers.confirm(i18n("multiplayer.session.create.join.prompt", client.getUsername()), i18n("multiplayer.session.create.join"), MessageDialogPane.MessageType.INFO,
resolveClient, () -> rejectClient.accept(""));
});
}); });
session.getServer().onClientAdded().register(event -> { session.getServer().onClientAdded().register(event -> {
runInFX(() -> { runInFX(() -> {

View File

@ -18,7 +18,6 @@
package org.jackhuang.hmcl.ui.multiplayer; package org.jackhuang.hmcl.ui.multiplayer;
import com.google.gson.JsonParseException; import com.google.gson.JsonParseException;
import org.jackhuang.hmcl.event.Event;
import org.jackhuang.hmcl.event.EventManager; import org.jackhuang.hmcl.event.EventManager;
import org.jackhuang.hmcl.util.FutureCallback; import org.jackhuang.hmcl.util.FutureCallback;
import org.jackhuang.hmcl.util.Lang; import org.jackhuang.hmcl.util.Lang;
@ -27,10 +26,8 @@ import org.jackhuang.hmcl.util.gson.JsonUtils;
import java.io.*; import java.io.*;
import java.net.ServerSocket; import java.net.ServerSocket;
import java.net.Socket; import java.net.Socket;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Future;
import java.util.logging.Level; import java.util.logging.Level;
import static org.jackhuang.hmcl.ui.multiplayer.MultiplayerChannel.*; import static org.jackhuang.hmcl.ui.multiplayer.MultiplayerChannel.*;
@ -106,7 +103,7 @@ public class MultiplayerServer extends Thread {
try { try {
if (client.socket.isConnected()) { if (client.socket.isConnected()) {
client.write(new KickResponse()); client.write(new KickResponse(""));
client.socket.close(); client.socket.close();
} }
} catch (IOException e) { } catch (IOException e) {

View File

@ -628,6 +628,8 @@ multiplayer.session.copy_room_code=Copy Invitation Code
multiplayer.session.create=Create Room multiplayer.session.create=Create Room
multiplayer.session.create.error=Failed to create multiplayer room. multiplayer.session.create.error=Failed to create multiplayer room.
multiplayer.session.create.hint=Before creating multiplayer room, you must click "Open LAN Server" in running game, and type the port displayed in game in the blank below. multiplayer.session.create.hint=Before creating multiplayer room, you must click "Open LAN Server" in running game, and type the port displayed in game in the blank below.
multiplayer.session.create.join=Connection request
multiplayer.session.create.join.prompt=Player %s wants to join the multiplayer session. Accept?
multiplayer.session.create.members=Members multiplayer.session.create.members=Members
multiplayer.session.create.members.kick=Kick multiplayer.session.create.members.kick=Kick
multiplayer.session.create.members.kick.prompt=After kicking this player, the established connection with this player will be cut up. multiplayer.session.create.members.kick.prompt=After kicking this player, the established connection with this player will be cut up.

View File

@ -628,6 +628,8 @@ multiplayer.session.copy_room_code=複製邀請碼
multiplayer.session.create=創建房間 multiplayer.session.create=創建房間
multiplayer.session.create.error=創建聯機房間失敗。 multiplayer.session.create.error=創建聯機房間失敗。
multiplayer.session.create.hint=創建聯機房間前,你需要先在正在運行的遊戲內的遊戲菜單中選擇 對區域網路開放 選項,然後在下方的輸入框中輸入遊戲內提示的埠號(通常是 5 位的數字) multiplayer.session.create.hint=創建聯機房間前,你需要先在正在運行的遊戲內的遊戲菜單中選擇 對區域網路開放 選項,然後在下方的輸入框中輸入遊戲內提示的埠號(通常是 5 位的數字)
multiplayer.session.create.join=連接申請
multiplayer.session.create.join.prompt=玩家 %s 申請加入多人聯機房間,是否接受?
multiplayer.session.create.members=成員 multiplayer.session.create.members=成員
multiplayer.session.create.members.kick=踢出房間 multiplayer.session.create.members.kick=踢出房間
multiplayer.session.create.members.kick.prompt=是否踢出該玩家?踢出後該玩家不能再參與該聯機房間。 multiplayer.session.create.members.kick.prompt=是否踢出該玩家?踢出後該玩家不能再參與該聯機房間。

View File

@ -628,6 +628,8 @@ multiplayer.session.copy_room_code=复制邀请码
multiplayer.session.create=创建房间 multiplayer.session.create=创建房间
multiplayer.session.create.error=创建联机房间失败。 multiplayer.session.create.error=创建联机房间失败。
multiplayer.session.create.hint=创建联机房间前,你需要先在正在运行的游戏内的游戏菜单中选择 对局域网开放 选项,然后在下方的输入框中确认游戏内提示的端口号(通常是 5 位的数字) multiplayer.session.create.hint=创建联机房间前,你需要先在正在运行的游戏内的游戏菜单中选择 对局域网开放 选项,然后在下方的输入框中确认游戏内提示的端口号(通常是 5 位的数字)
multiplayer.session.create.join=连接申请
multiplayer.session.create.join.prompt=玩家 %s 申请加入多人联机房间,是否接受?
multiplayer.session.create.members=成员 multiplayer.session.create.members=成员
multiplayer.session.create.members.kick=踢出房间 multiplayer.session.create.members.kick=踢出房间
multiplayer.session.create.members.kick.prompt=是否踢出该玩家?踢出后该玩家不能再参与该联机房间。 multiplayer.session.create.members.kick.prompt=是否踢出该玩家?踢出后该玩家不能再参与该联机房间。