From 7bc5e6511b698ac72f660c53e8bb1bb08f3347d7 Mon Sep 17 00:00:00 2001 From: Shuiling <1668589925@qq.com> Date: Tue, 17 Dec 2024 09:18:25 -0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BC=98=E5=8C=96Communication=E7=B1=BB?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E5=8F=8A=E7=BA=BF=E7=A8=8B=E8=B0=83=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cc/baka9/catseedlogin/bukkit/Communication.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/cc/baka9/catseedlogin/bukkit/Communication.java b/src/main/java/cc/baka9/catseedlogin/bukkit/Communication.java index 59c031a..b08c179 100644 --- a/src/main/java/cc/baka9/catseedlogin/bukkit/Communication.java +++ b/src/main/java/cc/baka9/catseedlogin/bukkit/Communication.java @@ -50,7 +50,7 @@ public static void socketServerStartAsync() { /** * 启动 socket server 监听bc端发来的请求 */ - private static void socketServerStart() { + public static void socketServerStart() { try { InetAddress inetAddress = InetAddress.getByName(Config.BungeeCord.Host); serverSocket = new ServerSocket(Integer.parseInt(Config.BungeeCord.Port), 50, inetAddress); @@ -97,9 +97,9 @@ private static void handleRequest(Socket socket) throws IOException { private static void handleKeepLoggedInRequest(String playerName, String time, String sign) { // 验证请求的合法性 // 对比玩家名,时间戳,和authKey加密的结果(加密是因为如果登录服不在内网环境下,则可能会被人使用这个功能给发包来直接绕过登录) - if (CommunicationAuth.encryption(playerName, time, Config.BungeeCord.AuthKey).equals(sign)) { + if (sign.equals(CommunicationAuth.encryption(playerName, time, Config.BungeeCord.AuthKey))) { // 切换主线程给予登录状态 - Bukkit.getScheduler().runTask(CatSeedLogin.instance, () -> { + CatScheduler.runTask( () -> { LoginPlayer lp = Cache.getIgnoreCase(playerName); if (lp != null) { LoginPlayerHelper.add(lp); @@ -115,9 +115,9 @@ private static void handleKeepLoggedInRequest(String playerName, String time, St private static void handleConnectRequest(Socket socket, String playerName) { // 切换主线程获取是否已登录 - Bukkit.getScheduler().runTask(CatSeedLogin.instance, () -> { + CatScheduler.runTask( () -> { boolean result = LoginPlayerHelper.isLogin(playerName); - + // 切换异步线程返回结果 CatSeedLogin.instance.runTaskAsync(() -> { try { From feb329b6d55d81665dca3b3a2d215e06bd9ed84e Mon Sep 17 00:00:00 2001 From: Shuiling <1668589925@qq.com> Date: Wed, 18 Dec 2024 23:43:43 -0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8DPreLoginEvent=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E9=81=BF=E5=85=8D=E9=87=8D=E5=A4=8D=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/cc/baka9/catseedlogin/bungee/Listeners.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/cc/baka9/catseedlogin/bungee/Listeners.java b/src/main/java/cc/baka9/catseedlogin/bungee/Listeners.java index 68cad3a..3744b84 100644 --- a/src/main/java/cc/baka9/catseedlogin/bungee/Listeners.java +++ b/src/main/java/cc/baka9/catseedlogin/bungee/Listeners.java @@ -86,7 +86,7 @@ public void onPlayerDisconnect(PlayerDisconnectEvent event) { public void onPreLogin(PreLoginEvent event) { String playerName = event.getConnection().getName(); try { - if (loggedInPlayerList.contains(playerName) || Communication.sendConnectRequest(playerName) == 1) { + if (loggedInPlayerList.contains(playerName) && (Communication.sendConnectRequest(playerName) == 1)) { event.setCancelReason(new TextComponent("您已经登录,请勿重复登录。")); event.setCancelled(true); }