refactor: store player ip in PlayerEntry, so we don't have to query them in stuff like IP filter which spams console

This commit is contained in:
ChomeNS
2025-03-21 16:31:23 +07:00
parent 5834a0584a
commit 8a9b123f49
5 changed files with 25 additions and 11 deletions

View File

@@ -36,6 +36,7 @@ public class PlayersPlugin extends Bot.Listener {
bot.addListener(this);
bot.executor.scheduleAtFixedRate(this::queryPlayersIP, 0, 1, TimeUnit.SECONDS);
bot.executor.scheduleAtFixedRate(this::onLastKnownNameTick, 0, 5, TimeUnit.SECONDS);
}
@@ -67,6 +68,15 @@ public class PlayersPlugin extends Bot.Listener {
}
}
private void queryPlayersIP () { for (PlayerEntry target : list) queryPlayersIP(target); }
private void queryPlayersIP (PlayerEntry target) {
if (target.ip != null) return;
final CompletableFuture<String> future = getPlayerIP(target, true);
future.thenApply(ip -> target.ip = ip);
}
public CompletableFuture<String> getPlayerIP (PlayerEntry target) { return getPlayerIP(target, false); }
public CompletableFuture<String> getPlayerIP (PlayerEntry target, boolean forceSeen) {
final CompletableFuture<String> outputFuture = new CompletableFuture<>();
@@ -185,6 +195,7 @@ public class PlayersPlugin extends Bot.Listener {
target.listed = true;
target.usernames.addAll(duplicate.usernames);
target.ip = duplicate.ip;
list.add(target);
@@ -192,6 +203,8 @@ public class PlayersPlugin extends Bot.Listener {
} else {
list.add(target);
queryPlayersIP(target);
for (Listener listener : listeners) listener.playerJoined(target);
}
}
@@ -261,6 +274,8 @@ public class PlayersPlugin extends Bot.Listener {
newTarget.usernames.addAll(target.usernames);
newTarget.usernames.addLast(target.profile.getName());
newTarget.ip = target.ip;
list.add(newTarget);
list.remove(target);