diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/whitelist/PlayerJoinListener.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/whitelist/PlayerJoinListener.java index 9aed863..2744493 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/whitelist/PlayerJoinListener.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/whitelist/PlayerJoinListener.java @@ -3,16 +3,16 @@ package eu.mhsl.craftattack.spawn.appliances.whitelist; import eu.mhsl.craftattack.spawn.appliance.ApplianceListener; import eu.mhsl.craftattack.spawn.util.text.DisconnectInfo; import org.bukkit.event.EventHandler; -import org.bukkit.event.player.AsyncPlayerPreLoginEvent; +import org.bukkit.event.player.PlayerLoginEvent; public class PlayerJoinListener extends ApplianceListener { @EventHandler - public void preLoginEvent(AsyncPlayerPreLoginEvent preLoginEvent) { + public void preLoginEvent(PlayerLoginEvent preLoginEvent) { try { getAppliance().login(preLoginEvent); } catch (DisconnectInfo.Throwable e) { preLoginEvent.disallow( - AsyncPlayerPreLoginEvent.Result.KICK_WHITELIST, + PlayerLoginEvent.Result.KICK_WHITELIST, e.getDisconnectScreen().getComponent() ); } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/whitelist/Whitelist.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/whitelist/Whitelist.java index 2d17e06..99f20c6 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/whitelist/Whitelist.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/whitelist/Whitelist.java @@ -2,10 +2,11 @@ package eu.mhsl.craftattack.spawn.appliances.whitelist; import com.google.gson.Gson; import eu.mhsl.craftattack.spawn.appliance.Appliance; +import eu.mhsl.craftattack.spawn.util.server.Floodgate; import eu.mhsl.craftattack.spawn.util.text.DisconnectInfo; import org.apache.http.client.utils.URIBuilder; import org.bukkit.event.Listener; -import org.bukkit.event.player.AsyncPlayerPreLoginEvent; +import org.bukkit.event.player.PlayerLoginEvent; import org.jetbrains.annotations.NotNull; import java.io.IOException; @@ -27,16 +28,23 @@ public class Whitelist extends Appliance { super("whitelist"); } - public void login(AsyncPlayerPreLoginEvent login) throws DisconnectInfo.Throwable { + public void login(PlayerLoginEvent login) throws DisconnectInfo.Throwable { try { - UserData data = this.fetchUserData(login.getUniqueId()); + UserData data = this.fetchUserData(login.getPlayer().getUniqueId()); - if(!data.username.equalsIgnoreCase(login.getName())) + String purePlayerName; + if(Floodgate.isBedrock(login.getPlayer())) { + purePlayerName = Floodgate.getBedrockPlayer(login.getPlayer()).getUsername(); + } else { + purePlayerName = login.getPlayer().getName(); + } + + if(!data.username.equalsIgnoreCase(purePlayerName)) throw new DisconnectInfo.Throwable( "Nutzername geändert", - String.format("Der Name '%s' stimmt nicht mit '%s' überein.", data.username, login.getName()), + String.format("Der Name '%s' stimmt nicht mit '%s' überein.", data.username, login.getPlayer().getName()), "Bitte kontaktiere einen Admin, um Deine Anmeldedaten zu aktualisieren!", - login.getUniqueId() + login.getPlayer().getUniqueId() ); } catch (DisconnectInfo.Throwable e) { @@ -46,7 +54,7 @@ public class Whitelist extends Appliance { "Interner Serverfehler", "Deine Zugangsdaten konnten nicht abgerufen werden.", "Versuche es später erneut oder kontaktiere einen Admin!", - login.getUniqueId() + login.getPlayer().getUniqueId() ); } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/util/server/Floodgate.java b/src/main/java/eu/mhsl/craftattack/spawn/util/server/Floodgate.java index 19782c7..c81c4d9 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/util/server/Floodgate.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/util/server/Floodgate.java @@ -12,6 +12,10 @@ public class Floodgate { return instance.isFloodgatePlayer(p.getUniqueId()); } + public static FloodgatePlayer getBedrockPlayer(Player p) { + return instance.getPlayer(p.getUniqueId()); + } + public static void runBedrockOnly(Player p, Consumer callback) { if(isBedrock(p)) callback.accept(instance.getPlayer(p.getUniqueId())); }