From 2e3a4315c275d6314d72031b5012f769b63c8389 Mon Sep 17 00:00:00 2001 From: bensuisse Date: Tue, 4 Aug 2026 17:59:48 +0200 Subject: [PATCH] feature: added tps and ping in tab --- .../features/tablist/TablistService.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/main/java/ch/bensuisse/miningman/features/tablist/TablistService.java b/src/main/java/ch/bensuisse/miningman/features/tablist/TablistService.java index e65b238..43e0827 100644 --- a/src/main/java/ch/bensuisse/miningman/features/tablist/TablistService.java +++ b/src/main/java/ch/bensuisse/miningman/features/tablist/TablistService.java @@ -54,6 +54,7 @@ public class TablistService implements Listener { private void updateAll() { updateSorting(); + updatePlayerListNames(); for (Player player : Bukkit.getOnlinePlayers()) { updateHeaderFooter(player); } @@ -138,6 +139,39 @@ public class TablistService implements Listener { } } + private void updatePlayerListNames() { + for (Player target : Bukkit.getOnlinePlayers()) { + User user = luckPerms.getUserManager().getUser(target.getUniqueId()); + String prefix = user != null ? user.getCachedData().getMetaData().getPrefix() : null; + + Component nameComponent = Component.text(target.getName(), NamedTextColor.WHITE) + .decoration(TextDecoration.BOLD, false); + if (prefix != null && !prefix.isEmpty()) { + Component rankComp = MiniMessage.miniMessage().deserialize(prefix); + nameComponent = rankComp.append(Component.text(" ").decoration(TextDecoration.BOLD, false)) + .append(nameComponent); + } + + int ping = target.getPing(); + Component pingComponent = Component.text(" [" + ping + "ms]", getPingColor(ping)) + .decoration(TextDecoration.BOLD, false); + + target.playerListName(nameComponent.append(pingComponent)); + } + } + + private TextColor getPingColor(int ping) { + if (ping <= 50) return NamedTextColor.GREEN; + if (ping <= 150) return NamedTextColor.YELLOW; + return NamedTextColor.RED; + } + + private TextColor getTpsColor(double tps) { + if (tps >= 18.0) return NamedTextColor.GREEN; + if (tps >= 15.0) return NamedTextColor.YELLOW; + return NamedTextColor.RED; + } + private void updateHeaderFooter(Player player) { Component title = ColorUtil.applyGradient("ᴍɪɴɪɴɢᴍᴀɴ.eu", gradientColors) .decorate(TextDecoration.BOLD); @@ -154,8 +188,16 @@ public class TablistService implements Listener { Component discordLine = Component.text(" ᴅɪsᴄᴏʀᴅ: ", TextColor.fromHexString("#FE5A1D")) .append(Component.text("discord.gg/V32MCYsFhn ", NamedTextColor.WHITE)); + double tps = Math.min(20.0, Bukkit.getServer().getTPS()[0]); + Component tpsLine = Component.text(" ᴛᴘs: ", TextColor.fromHexString("#FE5A1D")) + .append(Component.text(String.format("%.1f", tps), getTpsColor(tps))) + .append(Component.text(" ᴘɪɴɢ: ", TextColor.fromHexString("#FE5A1D"))) + .append(Component.text(player.getPing() + "ms", getPingColor(player.getPing()))); + Component footer = Component.newline() .append(discordLine) + .append(Component.newline()) + .append(tpsLine) .append(Component.newline()); player.sendPlayerListHeaderAndFooter(header, footer);