1
mirror of https://github.com/Shiewk/SModeration.git synced 2026-04-28 05:54:16 +02:00

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
This commit is contained in:
Shy
2025-07-09 11:44:23 +02:00
parent ecdd688a79
commit 8a147eb7cf
2 changed files with 18 additions and 5 deletions
+10
View File
@@ -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")
}
@@ -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);
}
}