Code Feedback

package net.eterneon.atlas.listeners;

import io.papermc.paper.chat.ChatRenderer;
import io.papermc.paper.event.player.AsyncChatEvent;
import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;

public class ChatListener implements Listener, ChatRenderer {
    private final JavaPlugin plugin;
    private final LegacyComponentSerializer legacy = LegacyComponentSerializer.legacyAmpersand();
    private final MiniMessage miniMessage = MiniMessage.miniMessage();

    public ChatListener(JavaPlugin plugin) {
        this.plugin = plugin;
    }

    @EventHandler
    public void onChat(AsyncChatEvent event) {
        event.renderer(this); // Tell the event to use our renderer
    }


    @Override
    public Component render(Player source, Component sourceDisplayName, Component message, Audience viewer) {
        String format = plugin.getConfig().getString("chat.format", "{displayname} » {message}");
        String type = plugin.getConfig().getString("chat.type", "minimessage").toLowerCase();

        String prefix = "";
        String suffix = "";

        String formatted = format
                .replace("{prefix}", prefix)
                .replace("{displayname}", source.getName())
                .replace("{suffix}", suffix)
                .replace("{message}", type.equals("legacy")
                    ? legacy.serialize(message)
                    : miniMessage.serialize(message));


        if (type.equals("legacy")) {
            return legacy.deserialize(formatted); // parse & into colors
        } else {
            return miniMessage.deserialize(formatted); // parse minimessage into components
    }
}
}


I would like to ask about this code, specifically made for chat formatting and using legacy or minimessage.
Was this page helpful?