From 9434c16e70cb92a016d5c9f42cd26176d0a5c98b Mon Sep 17 00:00:00 2001 From: ChomeNS <95471003+ChomeNS@users.noreply.github.com> Date: Sat, 18 Jan 2025 16:17:40 +0700 Subject: [PATCH] refactor: remove the ghost player for filters list in FilterManagerPlugin every tick instead of relying on the player left event --- .../chomens_bot/plugins/FilterManagerPlugin.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/FilterManagerPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/FilterManagerPlugin.java index 9267d472..a0912d63 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/FilterManagerPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/FilterManagerPlugin.java @@ -25,6 +25,13 @@ public class FilterManagerPlugin extends PlayersPlugin.Listener { bot.players.addListener(this); + bot.tick.addListener(new TickPlugin.Listener() { + @Override + public void onAlwaysTick() { + FilterManagerPlugin.this.onAlwaysTick(); + } + }); + bot.addListener(new Bot.Listener() { @Override public void disconnected(DisconnectedEvent event) { @@ -51,9 +58,9 @@ public class FilterManagerPlugin extends PlayersPlugin.Listener { bot.executor.scheduleAtFixedRate(this::kick, 0, 10, TimeUnit.SECONDS); } - @Override - public void playerLeft (PlayerEntry target) { - remove(target.profile.getName()); + private void onAlwaysTick () { + // remove from list if player is not on the server + list.entrySet().removeIf(entry -> bot.players.getEntry(entry.getKey().profile.getId()) == null); } @Override