From 8dc78980be130bc138bc7654528b25653d4b7028 Mon Sep 17 00:00:00 2001 From: Thatsaphorn Atchariyaphap Date: Tue, 2 Sep 2025 00:13:21 +0200 Subject: [PATCH] Implement Pretty Chat Renderer --- .../java/dev/tatsi/reloadmc/smp/ReloadMC.java | 2 ++ .../smp/listener/PrettyChatListener.java | 32 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 src/main/java/dev/tatsi/reloadmc/smp/listener/PrettyChatListener.java diff --git a/src/main/java/dev/tatsi/reloadmc/smp/ReloadMC.java b/src/main/java/dev/tatsi/reloadmc/smp/ReloadMC.java index 8cf239c..bd57c14 100644 --- a/src/main/java/dev/tatsi/reloadmc/smp/ReloadMC.java +++ b/src/main/java/dev/tatsi/reloadmc/smp/ReloadMC.java @@ -3,6 +3,7 @@ package dev.tatsi.reloadmc.smp; import dev.tatsi.reloadmc.smp.command.DeathStatsCommand; import dev.tatsi.reloadmc.smp.listener.PlayerDeathListener; import dev.tatsi.reloadmc.smp.listener.PlayerJoinLeaveListener; +import dev.tatsi.reloadmc.smp.listener.PrettyChatListener; import dev.tatsi.reloadmc.smp.manager.DeathCounterManager; import org.bukkit.plugin.java.JavaPlugin; @@ -15,6 +16,7 @@ public final class ReloadMC extends JavaPlugin { deathCounterManager = new DeathCounterManager(this); // Register event listeners + getServer().getPluginManager().registerEvents(new PrettyChatListener(), this); getServer().getPluginManager().registerEvents(new PlayerDeathListener(deathCounterManager), this); getServer().getPluginManager().registerEvents(new PlayerJoinLeaveListener(), this); diff --git a/src/main/java/dev/tatsi/reloadmc/smp/listener/PrettyChatListener.java b/src/main/java/dev/tatsi/reloadmc/smp/listener/PrettyChatListener.java new file mode 100644 index 0000000..9cebec9 --- /dev/null +++ b/src/main/java/dev/tatsi/reloadmc/smp/listener/PrettyChatListener.java @@ -0,0 +1,32 @@ +package dev.tatsi.reloadmc.smp.listener; + +import io.papermc.paper.event.player.AsyncChatEvent; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextDecoration; +import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; + +public class PrettyChatListener implements Listener { + + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + public void onAsyncChat(AsyncChatEvent event) { + event.renderer((source, displayName, message, audience) -> { + // Spielername fett grün + Component prettyName = displayName.color(NamedTextColor.GREEN) + .decorate(TextDecoration.BOLD); + + // Separator " » " in grau + Component separator = Component.text(" » ", NamedTextColor.GRAY); + + // Nachricht in weiß, ohne Bold + String plain = PlainTextComponentSerializer.plainText().serialize(message); + Component prettyMsg = Component.text(plain, NamedTextColor.WHITE) + .decoration(TextDecoration.BOLD, false); + + return prettyName.append(separator).append(prettyMsg); + }); + } +}