From 8fb3c621b20759902723ad72114428b17ac8aee5 Mon Sep 17 00:00:00 2001 From: Ziga Date: Fri, 13 Jun 2025 15:32:26 +0200 Subject: [PATCH 1/3] - Fix Passky hook - Implement debug logs to Passky --- .../fastlogin/bukkit/hook/PasskyHook.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hook/PasskyHook.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hook/PasskyHook.java index f0c9a4069..a7fc05bd7 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hook/PasskyHook.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hook/PasskyHook.java @@ -25,31 +25,38 @@ */ package com.github.games647.fastlogin.bukkit.hook; +import com.github.games647.fastlogin.bukkit.FastLoginBukkit; import com.github.games647.fastlogin.core.hooks.AuthPlugin; -import com.rabbitcomapny.Passky; -import com.rabbitcomapny.api.Identifier; -import com.rabbitcomapny.api.LoginResult; -import com.rabbitcomapny.api.PasskyAPI; -import com.rabbitcomapny.api.RegisterResult; +import com.rabbitcomapny.api.*; import org.bukkit.entity.Player; public class PasskyHook implements AuthPlugin { - private final Passky plugin; + private final FastLoginBukkit plugin; - public PasskyHook(Passky plugin) { + public PasskyHook(FastLoginBukkit plugin) { this.plugin = plugin; } @Override public boolean forceLogin(Player player) { LoginResult result = PasskyAPI.forceLogin(new Identifier(player), true); + + if (!result.success && result.status == LoginStatus.ALREADY_LOGGED_IN) { + plugin.getLog().debug("Player {} already logged in via Passky", player.getName()); + } + return result.success; } @Override public boolean forceRegister(Player player, String password) { RegisterResult result = PasskyAPI.forceRegister(new Identifier(player), password, true); + + if (!result.success) { + plugin.getLog().debug("Failed to register {} via Passky: {}", player.getName(), result.status); + } + return result.success; } From 0b38d7e76960df5079390e0e69c67a50dbe7e603 Mon Sep 17 00:00:00 2001 From: Ziga Date: Fri, 13 Jun 2025 15:40:32 +0200 Subject: [PATCH 2/3] - Improve debug logs for force login in Passky --- .../github/games647/fastlogin/bukkit/hook/PasskyHook.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hook/PasskyHook.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hook/PasskyHook.java index a7fc05bd7..f39b64bd8 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hook/PasskyHook.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hook/PasskyHook.java @@ -41,9 +41,9 @@ public PasskyHook(FastLoginBukkit plugin) { @Override public boolean forceLogin(Player player) { LoginResult result = PasskyAPI.forceLogin(new Identifier(player), true); - - if (!result.success && result.status == LoginStatus.ALREADY_LOGGED_IN) { - plugin.getLog().debug("Player {} already logged in via Passky", player.getName()); + + if (!result.success){ + plugin.getLog().debug("Failed to force login {} via Passky: {}", player.getName(), result.status); } return result.success; From 26002c929a83945a1352200f3176fcb93a5e136e Mon Sep 17 00:00:00 2001 From: Ziga Date: Wed, 25 Jun 2025 09:12:40 +0200 Subject: [PATCH 3/3] Both forceLogin and forceRegister functions can execute teleport command on the player which needs to run sync. --- .../fastlogin/bukkit/hook/PasskyHook.java | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hook/PasskyHook.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hook/PasskyHook.java index f39eda7e9..e0235004b 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hook/PasskyHook.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hook/PasskyHook.java @@ -31,8 +31,12 @@ import com.rabbitcomapny.api.LoginResult; import com.rabbitcomapny.api.PasskyAPI; import com.rabbitcomapny.api.RegisterResult; +import org.bukkit.Bukkit; import org.bukkit.entity.Player; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; + public class PasskyHook implements AuthPlugin { private final FastLoginBukkit plugin; @@ -43,22 +47,38 @@ public PasskyHook(FastLoginBukkit plugin) { @Override public boolean forceLogin(Player player) { - LoginResult result = PasskyAPI.forceLogin(new Identifier(player), true); - if (!result.success) { - plugin.getLog().error("Failed to force login {} via Passky: {}", player.getName(), result.status); - } + Future future = Bukkit.getScheduler().callSyncMethod(plugin, () -> { + LoginResult result = PasskyAPI.forceLogin(new Identifier(player), true); + if (!result.success) { + plugin.getLog().error("Failed to force login {} via Passky: {}", player.getName(), result.status); + } + return result.success; + }); - return result.success; + try { + return future.get(); + } catch (InterruptedException | ExecutionException ex) { + plugin.getLog().error("Failed to forceLogin player: {}", player, ex); + return false; + } } @Override public boolean forceRegister(Player player, String password) { - RegisterResult result = PasskyAPI.forceRegister(new Identifier(player), password, true); - if (!result.success) { - plugin.getLog().error("Failed to register {} via Passky: {}", player.getName(), result.status); - } + Future future = Bukkit.getScheduler().callSyncMethod(plugin, () -> { + RegisterResult result = PasskyAPI.forceRegister(new Identifier(player), password, true); + if (!result.success) { + plugin.getLog().error("Failed to register {} via Passky: {}", player.getName(), result.status); + } + return result.success; + }); - return result.success; + try { + return future.get(); + } catch (InterruptedException | ExecutionException ex) { + plugin.getLog().error("Failed to forceRegister player: {}", player, ex); + return false; + } } @Override