zArrowChat

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:

TagWhat 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

KeyWhat it controlsDefault
chat.send-permissionPermission needed to send public chatzarrowchat.chat
chat.formatThe overall chat layout<prefix><player><suffix> <separator> <message>
chat.prefixOptional text before the nameblank
chat.suffixOptional text after the nameblank
chat.separatorDivider between name and message<dark_gray>»</dark_gray>
chat.player-nameHow the name renders<white><player></white>
chat.player-click-commandCommand suggested when the name is clicked/msg <player_name>
chat.message-colorBase color for message text<gray>
chat.send-to-consoleAlso print a rendered copy to the consoletrue

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: true

To change how names look, edit player-name. To rebrand the message color, edit message-color. After any change, run /zarrowchat reload.

On this page