Minecraft Plugin Help: Custom Name color

auroramcdev

Feedback score
0
Posts
1
Reactions
0
Resources
0
Hi, i've made an plugin where players can customize their player name color with mini message. but somehow the shadow of the name is like transparent, and i want it to be solid just like the star icon shadow.
Screenshot 2026-02-20 141318.png

Heres the code for the name :
Java:
package com.ironcustomize;

import me.clip.placeholderapi.PlaceholderAPI;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Display;
import org.bukkit.entity.Player;
import org.bukkit.entity.TextDisplay;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.persistence.PersistentDataType;
import org.bukkit.util.Transformation;
import org.joml.AxisAngle4f;
import org.joml.Vector3f;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

public class NameTagManager implements Listener {
    private final IronCustomize plugin;
    private final Map<UUID, TextDisplay> displays = new HashMap<>();

    public NameTagManager(IronCustomize plugin) {
        this.plugin = plugin;
    }

    public void updateNameTag(Player player) {
        removeNameTag(player);

        String rawNameColor = player.getPersistentDataContainer().getOrDefault(plugin.KEY_NAME_COLOR, PersistentDataType.STRING, "<color:white><shadow:dark_gray>" + player.getName());        String rawBadge = player.getPersistentDataContainer().getOrDefault(plugin.KEY_BADGE, PersistentDataType.STRING, "");
        String rawBadgeColor = player.getPersistentDataContainer().getOrDefault(plugin.KEY_BADGE_COLOR, PersistentDataType.STRING, "DEFAULT");

        if (rawBadgeColor.equals("DEFAULT")) rawBadgeColor = plugin.getDefaultBadgeColor(rawBadge);

        String badgePart = rawBadge.isEmpty() ? "" : rawBadgeColor + rawBadge + " ";
        String finalFormat = badgePart + rawNameColor;

        Component finalText = MiniMessage.miniMessage().deserialize(finalFormat);

        if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
            String confPrefix = plugin.getConfigManager().getConfig().getString("settings.nametag-prefix", "");
            String confSuffix = plugin.getConfigManager().getConfig().getString("settings.nametag-suffix", "");

            String prefix = PlaceholderAPI.setPlaceholders(player, confPrefix);
            String suffix = PlaceholderAPI.setPlaceholders(player, confSuffix);

            Component prefixComp = LegacyComponentSerializer.legacySection().deserialize(prefix.replace("&", "§"));
            Component suffixComp = LegacyComponentSerializer.legacySection().deserialize(suffix.replace("&", "§"));

            finalText = prefixComp.append(finalText).append(suffixComp);
        }

        Location spawnLoc = player.getLocation().add(0, 2.5, 0);

        Component finalRenderText = finalText;
        TextDisplay display = player.getWorld().spawn(spawnLoc, TextDisplay.class, entity -> {
            entity.text(finalRenderText);
            entity.setBillboard(Display.Billboard.CENTER);

            entity.setDefaultBackground(true);
            entity.setSeeThrough(false);
            entity.setBrightness(new Display.Brightness(15, 15));
            entity.setShadowed(false);

            entity.setTransformation(new Transformation(
                    new Vector3f(0f, 0.3f, 0f),
                    new AxisAngle4f(),
                    new Vector3f(1f, 1f, 1f),
                    new AxisAngle4f()
            ));
            entity.setPersistent(false);
        });

        player.addPassenger(display);
        player.hideEntity(plugin, display);
        displays.put(player.getUniqueId(), display);
    }

    public void removeNameTag(Player player) {
        TextDisplay display = displays.remove(player.getUniqueId());
        if (display != null && display.isValid()) display.remove();

        player.getPassengers().forEach(entity -> {
            if (entity instanceof TextDisplay) entity.remove();
        });
    }

    @EventHandler
    public void onJoin(PlayerJoinEvent e) {
        updateNameTag(e.getPlayer());
    }

    @EventHandler
    public void onQuit(PlayerQuitEvent e) {
        removeNameTag(e.getPlayer());
    }
    @EventHandler
    public void onDeath(org.bukkit.event.entity.PlayerDeathEvent e) {
        removeNameTag(e.getEntity());
    }

    @EventHandler
    public void onRespawn(org.bukkit.event.player.PlayerRespawnEvent e) {
        Bukkit.getScheduler().runTaskLater(plugin, () -> {
            updateNameTag(e.getPlayer());
        }, 5L);
    }
}
 
Top