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

@ -26,7 +26,7 @@ import java.io.*;
import java.net.ConnectException;
import java.net.InetAddress;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Level;
import static org.jackhuang.hmcl.ui.multiplayer.MultiplayerChannel.*;
import static org.jackhuang.hmcl.util.Logging.LOG;

View File

@ -210,8 +210,11 @@ public class MultiplayerPage extends Control implements DecoratorPage, PageAware
int gamePort = result.getAd();
try {
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 -> {
runInFX(() -> {

View File

@ -18,7 +18,6 @@
package org.jackhuang.hmcl.ui.multiplayer;
import com.google.gson.JsonParseException;
import org.jackhuang.hmcl.event.Event;
import org.jackhuang.hmcl.event.EventManager;
import org.jackhuang.hmcl.util.FutureCallback;
import org.jackhuang.hmcl.util.Lang;
@ -27,10 +26,8 @@ import org.jackhuang.hmcl.util.gson.JsonUtils;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Future;
import java.util.logging.Level;
import static org.jackhuang.hmcl.ui.multiplayer.MultiplayerChannel.*;
@ -106,7 +103,7 @@ public class MultiplayerServer extends Thread {
try {
if (client.socket.isConnected()) {
client.write(new KickResponse());
client.write(new KickResponse(""));
client.socket.close();
}
} 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.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.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.kick=Kick
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.error=創建聯機房間失敗。
multiplayer.session.create.hint=創建聯機房間前,你需要先在正在運行的遊戲內的遊戲菜單中選擇 對區域網路開放 選項,然後在下方的輸入框中輸入遊戲內提示的埠號(通常是 5 位的數字)
multiplayer.session.create.join=連接申請
multiplayer.session.create.join.prompt=玩家 %s 申請加入多人聯機房間,是否接受?
multiplayer.session.create.members=成員
multiplayer.session.create.members.kick=踢出房間
multiplayer.session.create.members.kick.prompt=是否踢出該玩家?踢出後該玩家不能再參與該聯機房間。

View File

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