Add Tab Ping Listener
This commit is contained in:
@@ -4,6 +4,7 @@ import dev.tatsi.reloadmc.smp.command.DeathStatsCommand;
|
|||||||
import dev.tatsi.reloadmc.smp.listener.PlayerDeathListener;
|
import dev.tatsi.reloadmc.smp.listener.PlayerDeathListener;
|
||||||
import dev.tatsi.reloadmc.smp.listener.PlayerJoinLeaveListener;
|
import dev.tatsi.reloadmc.smp.listener.PlayerJoinLeaveListener;
|
||||||
import dev.tatsi.reloadmc.smp.listener.PrettyChatListener;
|
import dev.tatsi.reloadmc.smp.listener.PrettyChatListener;
|
||||||
|
import dev.tatsi.reloadmc.smp.listener.TabPingListener;
|
||||||
import dev.tatsi.reloadmc.smp.manager.DeathCounterManager;
|
import dev.tatsi.reloadmc.smp.manager.DeathCounterManager;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
@@ -19,6 +20,7 @@ public final class ReloadMC extends JavaPlugin {
|
|||||||
getServer().getPluginManager().registerEvents(new PrettyChatListener(), this);
|
getServer().getPluginManager().registerEvents(new PrettyChatListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new PlayerDeathListener(deathCounterManager), this);
|
getServer().getPluginManager().registerEvents(new PlayerDeathListener(deathCounterManager), this);
|
||||||
getServer().getPluginManager().registerEvents(new PlayerJoinLeaveListener(), this);
|
getServer().getPluginManager().registerEvents(new PlayerJoinLeaveListener(), this);
|
||||||
|
getServer().getPluginManager().registerEvents(new TabPingListener(this), this);
|
||||||
|
|
||||||
// Register commands
|
// Register commands
|
||||||
getCommand("deathstats").setExecutor(new DeathStatsCommand(deathCounterManager));
|
getCommand("deathstats").setExecutor(new DeathStatsCommand(deathCounterManager));
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
package dev.tatsi.reloadmc.smp.listener;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
|
import net.kyori.adventure.text.format.TextDecoration;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
public class TabPingListener implements Listener {
|
||||||
|
|
||||||
|
private final JavaPlugin plugin;
|
||||||
|
|
||||||
|
public TabPingListener(JavaPlugin plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onJoin(PlayerJoinEvent event) {
|
||||||
|
startPingUpdater(event.getPlayer());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startPingUpdater(Player player) {
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (!player.isOnline()) {
|
||||||
|
cancel();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ping = player.getPing();
|
||||||
|
String pingText = (ping < 0) ? "?? ms" : ping + " ms";
|
||||||
|
int online = Bukkit.getOnlinePlayers().size();
|
||||||
|
|
||||||
|
// --- HEADER ---
|
||||||
|
Component header = Component.text("\n", NamedTextColor.GRAY) // top padding
|
||||||
|
.append(Component.text(" » ", NamedTextColor.GRAY))
|
||||||
|
.append(Component.text("RLMC SMP ", NamedTextColor.GOLD)
|
||||||
|
.decorate(TextDecoration.BOLD))
|
||||||
|
.append(Component.text("1.21.8", NamedTextColor.GRAY)
|
||||||
|
.decorate(TextDecoration.BOLD))
|
||||||
|
.append(Component.text(" « ", NamedTextColor.GRAY))
|
||||||
|
.append(Component.text("\n", NamedTextColor.GRAY))
|
||||||
|
.append(Component.text("Online: ", NamedTextColor.GRAY))
|
||||||
|
.append(Component.text(online, NamedTextColor.YELLOW))
|
||||||
|
.append(Component.text("\n", NamedTextColor.GRAY)); // spacing
|
||||||
|
|
||||||
|
// --- FOOTER ---
|
||||||
|
Component footer = Component.text("\n", NamedTextColor.GRAY) // obere Leiste
|
||||||
|
.append(Component.text(" Dein Ping » ", NamedTextColor.GRAY)) // linker Padding + Label
|
||||||
|
.append(Component.text(pingText, NamedTextColor.YELLOW)) // Ping in Gelb
|
||||||
|
.append(Component.text(" ", NamedTextColor.GRAY)) // rechter Padding
|
||||||
|
.append(Component.text("\n", NamedTextColor.GRAY)) // untere Padding-Zeile
|
||||||
|
.append(Component.text("\n", NamedTextColor.GRAY)); // extra Abstand
|
||||||
|
|
||||||
|
player.sendPlayerListHeaderAndFooter(header, footer);
|
||||||
|
}
|
||||||
|
}.runTaskTimerAsynchronously(plugin, 0L, 40L); // alle 2 Sekunden
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user