Skip to content
Reece Williams edited this page Sep 2, 2026 · 2 revisions

Chat

Everything ServerTools does to your chat: formatting, cooldowns, emojis, per-player colors, tags, join messages, and custom death messages. Config lives under the Chat: section of config.yml (join MOTD is the one exception, it sits under Events:).

Needs: nothing for basic chat. Tags needs Vault + LuckPerms. Prefix/suffix and PlaceholderAPI in messages need Vault/LuckPerms + PlaceholderAPI.

ChatFormat

Rewrites the whole chat line so every message follows your format.

  • Config path: Chat.ChatFormat
  • Default: on
  • Format tokens: {prefix}, {name}, {suffix}, {message}
Chat:
  ChatFormat:
    Enabled: true
    EnabledPAPIinMessages: true
    ChatColorPerm: chatcolor.codes
    PrefixOffset: 0
    format: '{prefix}{name}{suffix} &7» &f{message}'

Options:

  • ChatColorPerm (default chatcolor.codes): players with this perm (or OP) can use & color codes in their messages. Without it, the codes show up as plain text.
  • EnabledPAPIinMessages: run PlaceholderAPI on what a player types. Only works if PAPI is installed, the message has a % in it, and the player has the chat.placeholder.message perm. So grant that perm to whoever should get it.
  • PrefixOffset: trims N characters off the end of the prefix (0 = no trim). Handy if your prefix has trailing padding you don't want.

The {prefix} and {suffix} come from your permissions/chat plugin. If you run Vault + LuckPerms (or similar), whatever prefix/suffix you've set there shows up here. No such plugin? Those tokens just come out empty.

ChatCooldown

Stops a player from chatting again until the cooldown passes.

  • Config path: Chat.ChatCooldown
  • Default: on
  • Command: /chatcooldown (alias /cooldown)
  • Perms: chatcooldown.bypass (skip the cooldown), chatcooldown.admin (use the command)
Chat:
  ChatCooldown:
    Enabled: true
    BypassCooldown: chatcooldown.bypass
    CommandPermission: chatcooldown.admin
    SecondsCooldown: 5
    Message: '&6&l[!] &eYou must wait &6&n%timeleft%s&e before you may chat again.'

%timeleft% is the seconds remaining. /chatcooldown set <n> changes the seconds and saves it, /chatcooldown toggle turns it on or off.

ChatEmoji

Swaps shortcodes in chat for symbols. Type a shortcode, it turns into the symbol.

  • Config path: Chat.ChatEmoji
  • Default: on
  • Permission: optional. permission: '' (the default) means everyone gets it. Set a perm node and only players with it get the swaps.
Chat:
  ChatEmoji:
    Enabled: true
    permission: ''
    Emojis:
      <3: 
      :flip:: (╯°□°)╯︵ ┻━┻
      :serious:: (ಠ_ಠ)

Add whatever pairs you want under Emojis.

ChatColor

Per-player chat color through a GUI. A player picks a color once and all their future messages get tinted. There's also a Rainbow option that randomizes a color per character.

  • Config path: Chat.ChatColor
  • Default: on
  • Command: /chatcolor (alias /color) opens the GUI
  • Perms: each color needs Chatcolor.<ColorName> (e.g. Chatcolor.Red, Chatcolor.Rainbow). Click a color you don't have the perm for and you get denied.

Colors in the GUI: White, Orange, Pink, Aqua, Yellow, Lime, Dark Gray, Gray, Cyan, Purple, Blue, Green, Red (plus Rainbow via the XP bottle). Rainbow pulls from your configurable list:

Chat:
  ChatColor:
    Enabled: true
    RainbowColors:
    - '&f'
    - '&e'
    - '&6'
    - '&b'
    - '&2'
    - '&4'
    - '&7'

Color choices are saved, so they stick after a restart.

NameColor

Same idea as ChatColor but it recolors the player's name instead of the message.

  • Config path: Chat.NameColor
  • Default: on
  • Command: /namecolor opens the GUI
  • Perms: Namecolor.<ColorName> per color (e.g. Namecolor.Aqua)

Same color list as ChatColor, minus Rainbow. Name color choices aren't saved, so they reset when the server restarts.

Tags

A GUI and command for player chat tags. Picking a tag sets it as the player's chat suffix, so it shows up in ChatFormat's {suffix}. Players can pick from tags they have perms for, or set a custom text tag.

Needs Vault and LuckPerms. It grants tag permissions through LuckPerms when an admin gives someone a tag. Without both, this feature does nothing.

  • Config path: Chat.Tags
  • Default: off
  • Command: /tags (aliases /servertags, /ctag, /customtag)
  • Perms: ctag.use to set a custom tag (CustomTagPerm); tools.givetag for /tags give; tools.createtag for /tags create. Equipping a predefined tag needs Tags.<TagName>.
Chat:
  Tags:
    Enabled: false
    CustomTagPerm: ctag.use
    CustomMaxLength: 20
    CustomTagFormat: '&8&l<%tag%&8&l>'
    selected: '&e&l[!] &eYou have selected &r%tag% &eas your new tag!'
    removed: '&c&l[!] &cYou have removed your &4current&c tag!'
    giveTagCmd: lp user %name% permission set tags.%tag% true server=skyblock_emc

Subcommands: /tags (open GUI), /tags set <tag>, /tags clear, /tags list, /tags give <player> <tag> (admin), /tags create <name> <tag> (admin). Predefined tags live in Tags.yml (auto-filled with defaults like Boss, OG, Twitch, YouTube on first run). The default giveTagCmd has server=skyblock_emc in it, change or drop that for your setup.

CustomDeathMessages

Wraps (or hides) vanilla death messages with your own format.

  • Config path: Chat.CustomDeathMessages
  • Default: on
  • Command: /toggledeathmessages (alias /toggledeath) turns death messages on or off in-game
Chat:
  CustomDeathMessages:
    Enabled: true
    message: '&7&o[-] %message%'

%message% is the original vanilla death message. If you toggle it off, death messages show nothing.

JoinMOTD

Sends a message block to players when they join. Lives under Events:, not Chat:.

  • Config path: Events.ChatJoinMOTD
  • Default: on
Events:
  ChatJoinMOTD:
    Enabled: true
    MOTD:
    - '&8&l>&7&m----&r %SERVERNAME% &7&m----&8&l<'
    - '&2&l▎ &A&lSTORE &f%STORE%'
    - '&7&o(( Currently &A&o%server_online% &7&oplayer(s) are playing ))'

Two kinds of placeholders:

  • ServerTools plugin variables like %SERVERNAME%, %STORE%, %DISCORD%, %SERVER%. These come from the top-level PluginVariables: config section and always work.
  • PlaceholderAPI placeholders like %server_online%. These only work if PAPI is installed, otherwise they show up as plain text.

A line containing <center> gets centered, and %player% in it is replaced with the joining player's name.

Clone this wiki locally