Commands
Every command the plugin registers: the player command, the four shortcuts, the admin command and the chat module's own.
Commands are registered with Lamp, so every argument is tab-completed and a wrong one is refused before anything runs. Two conventions hold everywhere:
<key>is always a cosmetic written astype:id—tag:mvp,chat_color:aurora,customtag:42. It is tab-completed against what the player asking can actually see.<player>on an admin command accepts somebody offline, as long as they have played on this server before. A name nobody has ever joined with is refused rather than turned into a fresh offline uuid nobody will ever read.
The player command
/chatcosmetics, /cosmetics and /cc are the same command. All of it is behind
exyliachatcosmetics.command.cosmetics, which is declared default: true, so everybody has it on a
fresh install.
Everything here is also a click in a menu. The commands exist for players who would rather type, and for the servers that put them on a sign or a button.
Screens
| Command | Opens |
|---|---|
/cc | the main menu |
/cc tags | the tag browser |
/cc customtags | the browser of tags players wrote for themselves |
/cc nick | nick colours |
/cc rank | rank colours |
/cc colors | chat colours |
/cc shadows | shadow colours |
/cc customcolors | the browser of custom chat colours |
/cc fonts | fonts |
/cc modifiers | modifiers |
/cc favorites | everything they starred, across every type |
/cc loadouts | the loadout menu |
Wearing
| Command | Does |
|---|---|
/cc equip <key> | wears it. A modifier already worn comes off instead — modifiers stack, so equipping one twice toggles it. Every other type holds one thing at a time, so a new one replaces the old. |
/cc unequip <type> | takes off everything of that type |
/cc favorite <key> | stars it, or unstars it if it was starred |
/cc preview [message] | draws the player's own chat line in chat. Without a message it uses menu.sample-message. |
/cc tokens | what they have left to make and to change, per type |
Loadouts
| Command | Does |
|---|---|
/cc loadout save <name> | saves what is worn now; a loadout of that name is overwritten |
/cc loadout load <name> | wears it again; anything no longer owned is skipped |
/cc loadout delete <name> | |
/cc loadout list | every loadout with what it holds |
Making things
| Command | Does |
|---|---|
/cc customtag create <text> [color] | writes a custom tag; spends a create token and obeys the text rules in custom-tags |
/cc customtag delete | deletes every custom tag that player made |
/cc customcolor create <spec> | mixes a chat colour: #hex, or #a:#b and #a:#b:#c for a gradient |
/cc customnick create <spec> | the same, for the name |
/cc customrank create <spec> | the same, for the rank prefix and suffix |
/cc customcolor delete <id> · customnick delete <id> · customrank delete <id> | deletes one by its id; no token comes back |
A create token is spent when the cosmetic is written, not held against it. Deleting one frees the
slot in the menu and nothing else, which is what stops a player making and unmaking for ever on a
single purchase. See Tokens.
The four shortcuts
Four top-level commands open a screen directly, one word each, because a player who knows what they
want should not have to remember which plugin owns it. They carry the same
exyliachatcosmetics.command.cosmetics permission as /cc.
| Command | Opens |
|---|---|
/tags | the tag browser — the same screen as /cc tags |
/nickcolors | nick colours |
/rankcolors | rank colours |
/chatcolors | the message screen, not a browser: chat colour is one of several things it holds, alongside the shadow, the font and the modifiers |
The admin command
/chatcosmeticsadmin, /exyliachat and /cca are the same command, behind
exyliachatcosmetics.admin (default: op).
Grants
| Command | Does |
|---|---|
/cca give <player> <key> [duration] [--source <name>] [--ref <id>] [--note <text>] | adds a grant. No duration means permanent. The default source is ADMIN; --source accepts PURCHASE, REWARD, EVENT, ACHIEVEMENT and EXTERNAL, and anything it does not recognise is stored as EXTERNAL rather than refused. |
/cca remove <player> <key> [source] | revokes every active grant of that cosmetic, or only the ones from that source |
/cca revoke <id> | revokes one grant by the row id list prints |
/cca list <player> | every active grant, with its id, its source and the time left |
/cca check <player> <key> | whether they own it, and until when |
Durations are ExyliaLib's: 30m, 2h, 14d, 1w, decimals allowed.
What a player wears
| Command | Does |
|---|---|
/cca equip <player> <key> | puts it on somebody online. They must already own it — this is not a grant. |
/cca unequip <player> <type> | takes off everything of that type |
/cca clear <player> | takes everything off |
What a player made
| Command | Does |
|---|---|
/cca customtag set <player> <text> [color] | writes a custom tag for them. Spends no token, still obeys the text rules. |
/cca customtag clear <player> | deletes every custom tag of theirs |
/cca customcolor clear <player> · customnick clear · customrank clear | the same, per kind of custom colour |
/cca loadouts clear <player> | deletes every loadout of theirs |
Tokens
| Command | Does |
|---|---|
/cca tokens give <player> <type> <create|edit> <amount> | adds to a balance. The target may be offline: a balance is a row of its own and waits for them, the same way a grant does. |
/cca tokens take <player> <type> <create|edit> <amount> | takes from it, never below zero |
/cca tokens set <player> <type> <create|edit> <amount> | sets it outright |
/cca tokens check <player> | every balance they hold, by type |
<type> here is one of the types a player can write for themselves — customtag, customcolor,
customnick, customrank. Naming a catalogue type is refused: nothing is made there, so there is
nothing a token could pay for. The kind is create or edit.
Looking at somebody
| Command | Does |
|---|---|
/cca preview <player> [message] | sends you the line that player's chat would draw |
/cca render <player> | sends you the pieces one at a time: the tag, the name in its colour, and a sample message in their font, modifiers and colour |
/cca reload | five ordered steps, each reported by name |
/cca reload runs configs (config.yml and messages.yml), catalogs (cosmetics/*.yml),
menus (menus/*.yml), chat (installs or uninstalls the hook, and starts or stops the module to
match chat.module.enabled) and hooks, which retries the LuckPerms bridge. That last step is why a
reload is the way to pick up a LuckPerms that finished loading after this plugin did: rank colours go
from empty to working without a restart.
The menus step also runs on ExyliaLib's own reload. A menu holds the palette it was compiled with,
so a recoloured server would otherwise keep the old colours until somebody read the files again.
/cca reload does not reload ExyliaLib. Recolouring every plugin on the server from colors.yml is
what /exylialib reload is for.
The chat module
These answer only while the chat module is running. With it off they say so and change nothing.
| Command | Does |
|---|---|
/cca chat line [message] | prints your own chat line broken into the stretches that share a hover and a click, to the console and to you. A hover that runs one component too far is visible here instead of being guessed at from a screenshot. |
/cca chat reload | re-reads the module's own files under chat/ without touching the cosmetics |
/cca chat similar <a> <b> | how alike two lines are, as the number the similarity filter compares against its threshold |
/cca chat regex <word> | the pattern a rule word compiles to, ready to paste into an advanced rule |
/cca chat points <player> [set] | reads a player's infraction points, or writes a new total |
/cca chat announce <id> | sends that announcement now; next sends whichever is due |
The chat module's own commands
These belong to the module, not to the cosmetics, and each one is registered only while its switch in
chat/config.yml → commands is on. All nine ship on. Turning one off does not hide the command
behind a permission — it is never registered at all, which is how you keep the /msg your existing
plugin owns.
commands:
msg: true
reply: true
ignore: true
ignoreall: true
spymsg: true
mutechat: true
clearchat: true
broadcast: true
channel: true| Command | Permission | Does |
|---|---|---|
/msg /tell /w /whisper <player> <message> | exyliachatcosmetics.chat.command.msg | whispers |
/reply /r <message> | …chat.command.reply | answers the last whisper |
/ignore <player> | …chat.command.ignore | toggles ignoring them; staff cannot be ignored |
/ignoreall /msgtoggle /togglemsg | …chat.command.ignoreall | closes or opens the inbox |
/spymsg /socialspy | …chat.command.spymsg | reads everybody's whispers |
/mutechat | …chat.command.mutechat | mutes and unmutes the chat |
/clearchat | …chat.command.clearchat | pushes the chat off everybody's screen |
/broadcast /bc <message> | …chat.command.broadcast | one line from the server |
/channel /ch <id> | …chat.command.channel | moves the player's plain messages to that channel |
One more is always registered, with no switch and no permission: /chatcosmeticsrender <id> is what
a click on a shown [item] runs. It is not meant to be typed — the id is random, so there is nothing
to guess.
Something missing on this page? Tell us on Discord