Chat formatting
Format public chat with MiniMessage, including a clickable and hoverable player name.
zArrowChat rewrites every public chat message using a layout you control. You get a prefix, suffix, separator, a styled player name, and a color for the message text. Formatting uses MiniMessage, so you can add colors, gradients, and click and hover actions.
The format string
The chat.format key in config.yml is the layout. It is built from these tags:
| Tag | What it inserts |
|---|---|
<prefix> | The chat.prefix block |
<player> | The rendered player name |
<suffix> | The chat.suffix block |
<separator> | The chat.separator block |
<message> | The player's message text |
Chat keys
| Key | What it controls | Default |
|---|---|---|
chat.send-permission | Permission needed to send public chat | zarrowchat.chat |
chat.format | The overall chat layout | <prefix><player><suffix> <separator> <message> |
chat.prefix | Optional text before the name | blank |
chat.suffix | Optional text after the name | blank |
chat.separator | Divider between name and message | <dark_gray>»</dark_gray> |
chat.player-name | How the name renders | <white><player></white> |
chat.player-click-command | Command suggested when the name is clicked | /msg <player_name> |
chat.message-color | Base color for message text | <gray> |
chat.send-to-console | Also print a rendered copy to the console | true |
Clickable and hoverable names
The rendered player name is always clickable and hoverable. Clicking it suggests the command in chat.player-click-command (by default a /msg to that player). The hover text comes from chat_hover.yml:
# chat_hover.yml
lines:
- "<gray>Click to message <yellow><player>"Each entry in lines is one line of hover text. You can use MiniMessage, PlaceholderAPI, and the <player> tag here.
Message text is safe
Message text typed by players is escaped before formatting. That means a player cannot type MiniMessage tags into chat to change colors or inject click and hover actions. Your format controls the styling; the player only controls the words.
MiniMessage is supported in every format field. If PlaceholderAPI is installed, its placeholders work here too. See Placeholders.
Sample config
# config.yml
chat:
send-permission: "zarrowchat.chat"
format: "<prefix><player><suffix> <separator> <message>"
prefix: ""
suffix: ""
separator: "<dark_gray>»</dark_gray>"
player-name: "<white><player></white>"
player-click-command: "/msg <player_name> "
message-color: "<gray>"
send-to-console: trueTo change how names look, edit player-name. To rebrand the message color, edit message-color. After any change, run /zarrowchat reload.