ChatColor is an advanced Minecraft chat color plugin built for Paper 1.20+ that lets players personalize their chat messages with solid colors, multi-stop gradients, and character-cycling patterns — all through a sleek GUI or simple commands.
- 🎨 24+ Solid Colors — From standard Minecraft colors to custom hex values like Hot Pink, Coral, Mint, and Lavender.
- 🌅 12 Gradient Presets — Multi-stop gradients including Sunset, Ocean, Cosmic, Rose Gold, Lava, and more.
- 🔥 6 Pattern Presets — Character-cycling color patterns like Rainbow, Fire, Ice, Galaxy, Toxic, and Cherry.
- 🛠️ Custom Color Creation — Create your own custom colors with simple commands.
- 🖥️ Interactive GUI — Full inventory-based color selector with a main menu and category pages.
- ⌨️ Command Support — Set, reset, and manage colors entirely from the command line.
- 🔒 Per-Entry Permissions — Grant or restrict individual colors, gradients, and patterns per player/group.
- 💾 Persistent Data — Player color selections are saved to disk and restored on rejoin.
- 🔌 PlaceholderAPI Support — Expose player color data as placeholders for use in other plugins.
- 🛠️ Developer API — Clean
ChatColorAPIclass for third-party plugin integration. - ⚡ Hot Reload — Reload all configuration files at runtime without restarting.
- Download the
ChatColor.jarfile. - Place it in your server's
plugins/folder. - Restart your server.
- Configure
config.yml,colors.yml,messages.yml, andpatterns.ymlto your liking. - (Optional) Install PlaceholderAPI for placeholder support.
Requirements:
- Paper (or Spigot) 1.20+
- Java 17+
- PlaceholderAPI (optional)
| Command | Description | Permission |
|---|---|---|
/color |
Opens the main color selector GUI | chatcolor.use |
/color gui |
Opens the main color selector GUI | chatcolor.use |
/color reset |
Removes your active chat color | chatcolor.use |
/color set <type> <key> |
Sets a color, gradient, or pattern by key | chatcolor.use |
/color create <name> <tag> <icon> |
Create a new custom color | chatcolor.create |
/color reload |
Reloads all plugin configuration | chatcolor.reload |
Aliases: /chatcolor, /cc
| Permission | Description | Default |
|---|---|---|
chatcolor.use |
Access to the GUI and basic commands | true |
chatcolor.reload |
Reload the plugin config | op |
chatcolor.create |
Create custom colors | op |
chatcolor.color.* |
Access to all solid colors | op |
chatcolor.gradient.* |
Access to all gradients | op |
chatcolor.pattern.* |
Access to all patterns | op |
Individual entries have their own permission nodes, for example:
chatcolor.color.redchatcolor.gradient.sunsetchatcolor.pattern.rainbow
Controls GUI titles and general plugin settings.
settings:
apply-to-message: true # Apply color to chat messages
apply-to-name: false # Apply color to display name
default-color: "NONE" # Default color for new players
event-priority: "LOWEST" # Priority for the chat listenerDefines all solid colors and gradients.
colors:
red:
display-name: "Red"
tag: "<red>"
permission: "chatcolor.color.red"
icon: "RED_WOOL"
gradients:
sunset:
display-name: "Sunset"
tag: "<gradient:#FF4500:#FF8C00:#FFD700>"
permission: "chatcolor.gradient.sunset"
icon: "ORANGE_WOOL"Defines character-cycling color patterns.
patterns:
rainbow:
display-name: "Rainbow"
permission: "chatcolor.pattern.rainbow"
icon: "YELLOW_WOOL"
colors:
- "<red>"
- "<gold>"
- "<yellow>"
- "<green>"
- "<aqua>"
- "<blue>"
- "<light_purple>"When PlaceholderAPI is installed, the following placeholders are available:
| Placeholder | Description | Example Output |
|---|---|---|
%chatcolor_color_type% |
Player's active color type | SOLID, GRADIENT, PATTERN, NONE |
%chatcolor_color_key% |
Key of player's active selection | red, sunset, rainbow, none |
%chatcolor_color% |
Raw MiniMessage tag / Pattern key | <red>, rainbow |
%chatcolor_message% |
Player's last chat message colored | §cHello world! |
%chatcolor_formatted_msg_<text>% |
Applies color to specific text | §6§lBusyBee |
Add ChatColor as a dependency and use the ChatColorAPI to interact with player color data programmatically.
ChatColor plugin = (ChatColor) Bukkit.getPluginManager().getPlugin("ChatColor");
ChatColorAPI api = plugin.getChatColorAPI();
// Set a player's color
api.setColor(player, "red");
api.setGradient(player, "sunset");
api.setPattern(player, "rainbow");
// Reset a player's color
api.resetColor(player);
// Get player data
PlayerColorData data = api.getPlayerData(player.getUniqueId());
String type = data.getColorType(); // "SOLID", "GRADIENT", "PATTERN"
String key = data.getColorKey();
// Apply the player's color to a string and get a Component
Component colored = api.applyColorToText(player, "Hello, world!");