fix kick reasons

This commit is contained in:
okx-code
2025-11-04 16:43:07 +00:00
parent a1395248b9
commit 37702b04ae
2 changed files with 17 additions and 4 deletions

View File

@@ -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());

View File

@@ -25,6 +25,7 @@ import us.ajg0702.queue.api.players.AdaptedPlayer;
public class QueueListener {
private final Map<Player, QueueRecord> players = new ConcurrentHashMap<>();
private final Map<Player, KickRecord> 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