diff --git a/src/main/java/net/elytrium/limboauth/LimboAuth.java b/src/main/java/net/elytrium/limboauth/LimboAuth.java index a0d66330..0a047544 100644 --- a/src/main/java/net/elytrium/limboauth/LimboAuth.java +++ b/src/main/java/net/elytrium/limboauth/LimboAuth.java @@ -557,7 +557,8 @@ public boolean needAuth(Player player) { } public void authPlayer(Player player) { - boolean isFloodgate = !Settings.IMP.MAIN.FLOODGATE_NEED_AUTH && this.floodgateApi.isFloodgatePlayer(player.getUniqueId()); + boolean isFloodgatePlayer = this.floodgateApi != null && this.floodgateApi.isFloodgatePlayer(player.getUniqueId()); + boolean isFloodgate = !Settings.IMP.MAIN.FLOODGATE_NEED_AUTH && isFloodgatePlayer; if (!isFloodgate && this.isForcedPreviously(player.getUsername()) && this.isPremium(player.getUsername())) { player.disconnect(this.reconnectKick); return; @@ -569,7 +570,7 @@ public void authPlayer(Player player) { } String nickname = player.getUsername(); - if (!this.nicknameValidationPattern.matcher((isFloodgate) ? nickname.substring(this.floodgateApi.getPrefixLength()) : nickname).matches()) { + if (!this.nicknameValidationPattern.matcher((isFloodgatePlayer) ? nickname.substring(this.floodgateApi.getPrefixLength()) : nickname).matches()) { player.disconnect(this.nicknameInvalidKick); return; } diff --git a/src/main/java/net/elytrium/limboauth/Settings.java b/src/main/java/net/elytrium/limboauth/Settings.java index e19fff0b..7302f6f4 100644 --- a/src/main/java/net/elytrium/limboauth/Settings.java +++ b/src/main/java/net/elytrium/limboauth/Settings.java @@ -114,7 +114,10 @@ public static class MAIN { public boolean CHANGE_PASSWORD_NEED_OLD_PASSWORD = true; @Comment("Used in unregister and premium commands.") public String CONFIRM_KEYWORD = "confirm"; - @Comment("This prefix will be added to offline mode players nickname") + @Comment({ + "This prefix will be added to offline mode players nickname", + "Geyser/Floodgate (Bedrock) players are excluded, since their names already contain the Floodgate prefix" + }) public String OFFLINE_MODE_PREFIX = ""; @Comment("This prefix will be added to online mode players nickname") public String ONLINE_MODE_PREFIX = ""; diff --git a/src/main/java/net/elytrium/limboauth/listener/AuthListener.java b/src/main/java/net/elytrium/limboauth/listener/AuthListener.java index 6ea55a4d..c1446bc4 100644 --- a/src/main/java/net/elytrium/limboauth/listener/AuthListener.java +++ b/src/main/java/net/elytrium/limboauth/listener/AuthListener.java @@ -184,7 +184,9 @@ public void onLoginLimboRegister(LoginLimboRegisterEvent event) { @Subscribe(order = PostOrder.FIRST) public void onGameProfileRequest(GameProfileRequestEvent event) { - if (Settings.IMP.MAIN.SAVE_UUID && (this.floodgateApi == null || !this.floodgateApi.isFloodgatePlayer(event.getOriginalProfile().getId()))) { + boolean isFloodgatePlayer = this.floodgateApi != null && this.floodgateApi.isFloodgatePlayer(event.getOriginalProfile().getId()); + + if (Settings.IMP.MAIN.SAVE_UUID && !isFloodgatePlayer) { RegisteredPlayer registeredPlayer = AuthSessionHandler.fetchInfo(this.playerDao, event.getOriginalProfile().getId()); if (registeredPlayer != null && !registeredPlayer.getUuid().isEmpty()) { @@ -218,11 +220,11 @@ public void onGameProfileRequest(GameProfileRequestEvent event) { } } - if (Settings.IMP.MAIN.FORCE_OFFLINE_UUID) { + if (Settings.IMP.MAIN.FORCE_OFFLINE_UUID && !isFloodgatePlayer) { event.setGameProfile(event.getOriginalProfile().withId(UuidUtils.generateOfflinePlayerUuid(event.getUsername()))); } - if (!event.isOnlineMode() && !Settings.IMP.MAIN.OFFLINE_MODE_PREFIX.isEmpty()) { + if (!event.isOnlineMode() && !isFloodgatePlayer && !Settings.IMP.MAIN.OFFLINE_MODE_PREFIX.isEmpty()) { event.setGameProfile(event.getOriginalProfile().withName(Settings.IMP.MAIN.OFFLINE_MODE_PREFIX + event.getUsername())); }