diff --git a/core/src/main/java/com/github/games647/fastlogin/core/hooks/bedrock/BedrockService.java b/core/src/main/java/com/github/games647/fastlogin/core/hooks/bedrock/BedrockService.java index 1552151f..f51bafb5 100644 --- a/core/src/main/java/com/github/games647/fastlogin/core/hooks/bedrock/BedrockService.java +++ b/core/src/main/java/com/github/games647/fastlogin/core/hooks/bedrock/BedrockService.java @@ -48,6 +48,15 @@ public abstract class BedrockService { this.allowConflict = core.getConfig().get("allowFloodgateNameConflict").toString().toLowerCase(); } + /** + * Perfrom every packet level check needed on a Bedrock player. + * + * @param username the name of the player + * @param source an instance of LoginSource + * @return true if Java specific checks can be skipped + */ + public abstract boolean performChecks(String username, LoginSource source); + /** * Check if the player's name conflicts an existing Java player's name, and kick * them if it does @@ -55,7 +64,7 @@ public abstract class BedrockService { * @param username the name of the player * @param source an instance of LoginSource */ - public void checkNameConflict(String username, LoginSource source) { + protected void checkNameConflict(String username, LoginSource source) { // check for conflicting Premium Java name Optional premiumUUID = Optional.empty(); try { @@ -81,7 +90,6 @@ public abstract class BedrockService { core.getPlugin().getLog().error("Could not kick Player {}", username, ex); } } - } /** diff --git a/core/src/main/java/com/github/games647/fastlogin/core/hooks/bedrock/FloodgateService.java b/core/src/main/java/com/github/games647/fastlogin/core/hooks/bedrock/FloodgateService.java index b962321a..f88731f9 100644 --- a/core/src/main/java/com/github/games647/fastlogin/core/hooks/bedrock/FloodgateService.java +++ b/core/src/main/java/com/github/games647/fastlogin/core/hooks/bedrock/FloodgateService.java @@ -76,7 +76,7 @@ public class FloodgateService extends BedrockService { } @Override - public void checkNameConflict(String username, LoginSource source) { + public boolean performChecks(String username, LoginSource source) { // check if the Bedrock player is linked to a Java account FloodgatePlayer floodgatePlayer = getBedrockPlayer(username); boolean isLinked = floodgatePlayer.getLinkedPlayer() != null; @@ -87,6 +87,9 @@ public class FloodgateService extends BedrockService { } else { core.getPlugin().getLog().info("Skipping name conflict checking for player {}", username); } + + //Floodgate users don't need Java specific checks + return true; } /** diff --git a/core/src/main/java/com/github/games647/fastlogin/core/hooks/bedrock/GeyserService.java b/core/src/main/java/com/github/games647/fastlogin/core/hooks/bedrock/GeyserService.java index 9b63c901..0fafddf6 100644 --- a/core/src/main/java/com/github/games647/fastlogin/core/hooks/bedrock/GeyserService.java +++ b/core/src/main/java/com/github/games647/fastlogin/core/hooks/bedrock/GeyserService.java @@ -45,13 +45,14 @@ public class GeyserService extends BedrockService { } @Override - public void checkNameConflict(String username, LoginSource source) { - //TODO: Replace stub with Geyser specific code + public boolean performChecks(String username, LoginSource source) { + //TODO: Replace stub with Geyser specific code if ("false".equals(allowConflict)) { super.checkNameConflict(username, source); } else { core.getPlugin().getLog().info("Skipping name conflict checking for player {}", username); } + return true; } @Override diff --git a/core/src/main/java/com/github/games647/fastlogin/core/shared/JoinManagement.java b/core/src/main/java/com/github/games647/fastlogin/core/shared/JoinManagement.java index a9b62a71..3f2835ef 100644 --- a/core/src/main/java/com/github/games647/fastlogin/core/shared/JoinManagement.java +++ b/core/src/main/java/com/github/games647/fastlogin/core/shared/JoinManagement.java @@ -56,10 +56,9 @@ public abstract class JoinManagement

{ } //check if the player is connecting through Bedrock Edition - if (bedrockService != null) { - if (bedrockService.isBedrockConnection(username)) { - bedrockService.checkNameConflict(username, source); - // skip flow for any Bedrock player + if (bedrockService != null && bedrockService.isBedrockConnection(username)) { + //perform Bedrock specific checks and skip Java checks, if they are not needed + if (bedrockService.performChecks(username, source)) { return; } }