From 37702b04aed21e0b165d9d80f66c0414c9f098f4 Mon Sep 17 00:00:00 2001 From: okx-code Date: Tue, 4 Nov 2025 16:43:07 +0000 Subject: [PATCH] fix kick reasons --- .../src/main/java/net/civmc/nameapi/NameAPI.java | 6 +++--- .../java/net/civmc/civproxy/QueueListener.java | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/libraries/name-api/src/main/java/net/civmc/nameapi/NameAPI.java b/libraries/name-api/src/main/java/net/civmc/nameapi/NameAPI.java index aa6d75418..e886d8ae6 100644 --- a/libraries/name-api/src/main/java/net/civmc/nameapi/NameAPI.java +++ b/libraries/name-api/src/main/java/net/civmc/nameapi/NameAPI.java @@ -87,9 +87,9 @@ public class NameAPI { + "end"); migrator.registerMigration("renamer", 2, - "ALTER TABLE Name_player ADD COLUMN id SERIAL", - "ALTER TABLE Name_player DROP INDEX `uuid_player_combo`", - "ALTER TABLE Name_player ADD UNIQUE INDEX on_uuid(uuid)"); + "ALTER TABLE Name_player ADD COLUMN IF NOT EXISTS id SERIAL", + "ALTER TABLE Name_player DROP INDEX IF EXISTS `uuid_player_combo`", + "ALTER TABLE Name_player ADD UNIQUE INDEX IF NOT EXISTS on_uuid(uuid)"); try { migrator.migrate(db.getConnection()); diff --git a/plugins/civproxy-velocity/src/main/java/net/civmc/civproxy/QueueListener.java b/plugins/civproxy-velocity/src/main/java/net/civmc/civproxy/QueueListener.java index e8cd1bc89..36b38ae0f 100644 --- a/plugins/civproxy-velocity/src/main/java/net/civmc/civproxy/QueueListener.java +++ b/plugins/civproxy-velocity/src/main/java/net/civmc/civproxy/QueueListener.java @@ -25,6 +25,7 @@ import us.ajg0702.queue.api.players.AdaptedPlayer; public class QueueListener { private final Map players = new ConcurrentHashMap<>(); + private final Map kickReasons = new ConcurrentHashMap<>(); private final CivProxyPlugin plugin; private final ProxyServer server; @@ -38,6 +39,10 @@ public class QueueListener { } + record KickRecord(Instant instant, Component reason) { + + } + public void start() { server.getEventManager().register(plugin, this); } @@ -54,6 +59,7 @@ public class QueueListener { return; } event.setResult(KickedFromServerEvent.RedirectPlayer.create(server.getServer("pvp").get())); + event.getServerKickReason().ifPresent(reason -> kickReasons.put(event.getPlayer(), new KickRecord(Instant.now(), reason))); players.put(event.getPlayer(), new QueueRecord(Instant.now(), name)); } @@ -69,7 +75,14 @@ public class QueueListener { return; } - event.setResult(KickedFromServerEvent.DisconnectPlayer.create(event.getServerKickReason().orElse(Component.text("Disconnected")))); + KickRecord record = kickReasons.remove(event.getPlayer()); + Component defaultReason; + if (record != null && record.instant().isAfter(Instant.now().minusSeconds(60))) { + defaultReason = record.reason(); + } else { + defaultReason = Component.text("Disconnected"); + } + event.setResult(KickedFromServerEvent.DisconnectPlayer.create(event.getServerKickReason().orElse(defaultReason))); } @Subscribe