Manage 1.21.6+ player locator bar waypoint colors, and automatically set custom colors on join
PlayerWaypointColors
Overview
PlayerWaypointColors lets players set their own waypoint colors and lets admins set colors for other players. Optional PlaceholderAPI integration for automatic color assignment on join, exporting a player's current color to other plugins (chat, scoreboards, etc.), and configurable server defaults.
Features
- Assign custom hex colors to player waypoints (e.g.,
#FF0000orFF0000for red) - Simple commands for players and admins
- Configurable default color applied to players on join
- Optional PlaceholderAPI integration:
- Read a player's color from a placeholder on join (e.g., from LuckPerms meta)
- Export the player's current color via
%pwc_color_<format>%so other plugins can use it (MiniMessage, hex, raw, legacy spigot, or any custom format you define)
Compatibility
- Minecraft: Spigot 1.21.11+ or Paper 1.21.11+
- Optional: PlaceholderAPI
Installation
- Download the latest
PlayerWaypointColors.jar. - Place it in your server's
pluginsfolder. - (Optional) Install PlaceholderAPI if you want PAPI features.
- Start or reload your server.
Commands & Permissions
| Command | Description | Permission | Default |
|---|---|---|---|
/pwc help |
Show help message | playerwaypointcolor.help | all |
/pwc set <color|hex> [#hexcode] |
Set your own waypoint color | playerwaypointcolor.self | OP |
/pwc setother <player> <color|hex> [#hexcode] |
Set another player's waypoint color | playerwaypointcolor.others | OP |
/pwc get |
Get your own waypoint color | playerwaypointcolor.self | OP |
/pwc get <player> |
Get another player's waypoint color | playerwaypointcolor.others | OP |
/pwc reset |
Reset your own waypoint color | playerwaypointcolor.self | OP |
/pwc reset <player> |
Reset another player's waypoint color | playerwaypointcolor.others | OP |
Configuration
The plugin creates a config.yml file on first run. Existing files are upgraded in place when new options are added.
Example config:
placeholderapi:
auto-apply-on-join: false
variable: ""
placeholders:
formats:
minimessage: "<#{HEX}>"
hex: "#{HEX}"
raw: "{HEX}"
legacy: "&x&{R1}&{R2}&{G1}&{G2}&{B1}&{B2}"
default-color: ""
default-color-force: false
PlaceholderAPI Integration
PWC integrates with PlaceholderAPI in both directions: it can read a placeholder to assign a color on join, and it exposes its own placeholder so other plugins can read each player's current color.
Reading colors from a placeholder (auto-apply on join)
Set variable in config.yml to a placeholder (e.g., %luckperms_meta_color%) that returns a hex code in the format #00FF00 or 00FF00.
The easiest setup uses LuckPerms meta:
- Set the permission
meta.color.#FF0000on a group - Set
auto-apply-on-jointotrue - Set
variableto%luckperms_meta_color% - Save config.yml and restart your server
Alternatively, use the PlaceholderAPI String expansion (particularly %string_replaceCharacters_<configuration>_<string>%) to coerce another placeholder into a valid hex code.
Exposing a player's current color to other plugins
PWC registers %pwc_color_<format>% where <format> is any key under placeholders.formats in config.yml. Out of the box:
| Placeholder | Returns | Example |
|---|---|---|
%pwc_color_minimessage% |
MiniMessage hex tag | <#FF0000> |
%pwc_color_hex% |
hex with leading # |
#FF0000 |
%pwc_color_raw% |
bare 6-character hex | FF0000 |
%pwc_color_legacy% |
Spigot legacy color codes | &x&F&F&0&0&0&0 |
Add your own keys in config.yml to support whatever syntax your chat or scoreboard plugin needs. Templates can use these variables (case-sensitive):
{HEX}— uppercase 6-char hex (e.g.FF0000){hex}— lowercase 6-char hex (e.g.ff0000){R1}{R2}{G1}{G2}{B1}{B2}— each channel split into its two hex digits
Example: a chat plugin using <#hex> MiniMessage syntax can format messages like %pwc_color_minimessage%<player_name></...> to color player names with each player's chosen waypoint color.
If a player hasn't picked or been assigned a color, the placeholder returns an empty string regardless of the format requested.
Default Color on Join
Set default-color to a hex value (e.g. 00FF00) to apply that color to players who don't already have one. Leave empty to disable.
default-color-force:
false(default): only applies the default if the player has no color set. Won't overwrite a color they picked with/pwc set.true: applies the default on every join, overwriting whatever color the player previously had — except a color set byauto-apply-on-joinabove, which always wins.