From 8a147eb7cf767941dcfac1ca97546fd427939179 Mon Sep 17 00:00:00 2001 From: Shiewk Date: Wed, 9 Jul 2025 11:44:23 +0200 Subject: [PATCH] Use AsyncPlayerPreLoginEvent instead of PlayerLoginEvent because of its deprecation in Paper 1.21.6, this event disabled re-configuration APIs when a listener is registered for it; we don't want that to happen --- build.gradle | 10 ++++++++++ .../paper/listener/PunishmentListener.java | 13 ++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 73c8500..ffd37fc 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,6 @@ plugins { id 'java' + id("xyz.jpenilla.run-paper") version "2.3.1" } group = 'de.shiewk' @@ -22,6 +23,15 @@ processResources { } } +runServer { + minecraftVersion("1.21.7") + downloadPlugins { + // for testing from other client versions + modrinth("ViaVersion", "5.4.1") + modrinth("ViaBackwards", "5.4.1") + } +} + dependencies { compileOnly("io.papermc.paper:paper-api:1.21.3-R0.1-SNAPSHOT") } diff --git a/src/main/java/de/shiewk/smoderation/paper/listener/PunishmentListener.java b/src/main/java/de/shiewk/smoderation/paper/listener/PunishmentListener.java index f68eeae..9357920 100644 --- a/src/main/java/de/shiewk/smoderation/paper/listener/PunishmentListener.java +++ b/src/main/java/de/shiewk/smoderation/paper/listener/PunishmentListener.java @@ -11,7 +11,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerLoginEvent; +import org.bukkit.event.player.AsyncPlayerPreLoginEvent; import org.bukkit.event.world.WorldSaveEvent; import static de.shiewk.smoderation.paper.SModerationPaper.CHAT_PREFIX; @@ -19,13 +19,16 @@ import static de.shiewk.smoderation.paper.SModerationPaper.CHAT_PREFIX; public class PunishmentListener implements Listener { @EventHandler(priority = EventPriority.LOW) - public void onPlayerLogin(PlayerLoginEvent event){ + public void onPlayerLogin(AsyncPlayerPreLoginEvent event){ + // Have to use AsyncPlayerPreLoginEvent since PlayerLoginEvent is deprecated in newer versions + // I would use the new PlayerConnectionValidateLoginEvent but there is literally no API available + // there to get player's UUIDs Punishment punishment = SModerationPaper.container.find(p -> p.type == PunishmentType.BAN - && p.to.equals(event.getPlayer().getUniqueId()) + && p.to.equals(event.getUniqueId()) && p.isActive()); if (punishment != null){ - event.disallow(PlayerLoginEvent.Result.KICK_BANNED, CHAT_PREFIX.append(punishment.playerMessage())); + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_BANNED, CHAT_PREFIX.append(punishment.playerMessage())); } } @@ -63,7 +66,7 @@ public class PunishmentListener implements Listener { @EventHandler public void onWorldSave(WorldSaveEvent event){ - if (event.getWorld().equals(Bukkit.getServer().getWorlds().get(0))){ + if (event.getWorld().equals(Bukkit.getServer().getWorlds().getFirst())){ SModerationPaper.container.save(SModerationPaper.SAVE_FILE); } }