Fixed bedrock players not passing whitelist correctly
This commit is contained in:
parent
41152d7864
commit
f1e917ab7c
@ -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<Whitelist> {
|
||||
@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()
|
||||
);
|
||||
}
|
||||
|
@ -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()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -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<FloodgatePlayer> callback) {
|
||||
if(isBedrock(p)) callback.accept(instance.getPlayer(p.getUniqueId()));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user