So, ever since TagAPI was discontinued, we have been lacking a way to change player name tags. And because this is a constant question in the Plugin Development forum (I also needed it for a project), I decided to code a little library you can shade into your plugin and effortlessely change player names. I call it NameTagChanger (I know it's a pretty awful name, but I couldn't come up with anything better..). NOTE: If you just want to colour the entire player name or just add prefixes or suffixes, I recommend using scoreboards instead of this, since they allow for a greater total length (32 characters instead of 16 I believe). The documentation is now entirely over on the github page: https://github.com/Alvin-LB/NameTagChanger This works by modifying the outgoing TabList packets (using reflection, so relatively version-independent) to say that the name of the Player is different (the client uses the tablist for this for some reason), but the display name is still the same (also respects player.setDisplayName()), so no change is done to the tablist. The modification of packets is done via ProtocolLib, but if it's not found installed, there is a direct channel injector system to fall back on (although ProtocolLib is more reliable, so I recommend using that instead).