A modern, MiniMessage-powered chat formatter for Paper & Spigot servers
ZealousChat replaces Vanilla chat with a fully configurable system built on the Paper's high performance AsyncChatEvent and MiniMessage components. It ships with rank/world specific formats, private messaging, inventory placeholders and a granular permission model – all while remaining light-weight and production ready.
/msg, /reply) with social-spy & cooldowns[inv], [ender], [armor], [hand], [pos], [health]/zchat reload)ZealousChat is a high performance, 1.20.4+ chat formatting plugin that uses configurable MiniMessage-based chat formats to format chat messages. ZealousChat includes many extra features other plugins leave out, like the ability to send a read-only view of your inventory/hand/armor/enderchest in chat, formatted /msg and /reply commands, click/hover messages on messages, @mentions and more. ZealousChat also has special features for server networks, such as cross-server private messaging, and cross server chat channels (for staffchat and similar).
ZealousChat implements all of its features using the Paper API, and is designed to be as efficient as possible.
/zealouschat (/chatplugin, /zchat) — Base command for ZealousChat
zchat.admin/zealouschat reload — Reload plugin configurations
zchat.admin.reload/zealouschat info — Display current plugin settings and enabled features
zchat.admin.info/zealouschat test <message> — Preview chat formatting
zchat.admin.test<message>: Text to format and display/zealouschat format set default <format> — Set default chat format
zchat.admin.format<format>: MiniMessage format string/zealouschat format set group <group> <format> — Define group-specific format
zchat.admin.format<group>: Permission group name<format>: MiniMessage format string/zealouschat format set world <world> <format> — Define world-specific format
zchat.admin.format<world>: World name<format>: MiniMessage format string/zealouschat format list — List all current chat formats
zchat.admin.format/zealouschat toggle colors — Enable/disable color codes in chat
zchat.admin.toggle/zealouschat toggle formatting — Enable/disable text formatting
zchat.admin.toggle/zealouschat toggle mentions — Enable/disable player @mentions
zchat.admin.toggle/zealouschat toggle cooldown — Enable/disable chat cooldown
zchat.admin.toggle/msg <player> <message> — Send a private message (aliases: /message, /tell, /whisper, /w)
zchat.message<player>: Recipient player name<message>: Message text/reply <message> — Reply to the last private message sender (aliases: /r, /respond)
zchat.message<message>: Reply textWhen you enable cross-server messaging in storage.conf (requires a MySQL or Redis database), ZealousChat can deliver private messages across multiple Paper servers on the same network.
/msg will attempt cross-server delivery when the target is online on another server/reply also supports cross-server targets/zealouschat toggle chat — Toggle your public chat on/off
zchat.toggle.chat/zealouschat toggle messages — Toggle your private messages on/off
zchat.toggle.messages/zealouschat toggle socialspy — Enable/disable social spy for private messages
zchat.socialspy/zealouschat alerts — Toggle alerts on/off
zchat.alerts.toggle/zealouschat toggle status — View your current chat & private message status
zchat.status/channel list — List all available channels
zchat.channel.use.list/channel join <channel> — Join a channel
zchat.channel.use.join<channel>: Channel name/channel leave <channel> — Leave a channel
zchat.channel.use.leave<channel>: Channel name/channel focus <channel> — Set a channel as the active channel (where your messages go by default)
zchat.channel.use.focus<channel>: Channel name/channel who <channel> — List members in a channel
zchat.channel.use.who<channel>: Channel nameThe swear filter provides advanced profanity detection with configurable punishment tiers, database persistence, and bypass permissions for trusted staff. This system is currently experimental. There will be (mostly small) issues here. Please report any bugs you find.
Regex Matching
(?i)badword)Levenshtein Distance Matching
{player} for the offending player's name/zealouschat admin clear <type> — Clear various chat-related data
zchat.admin.clear<type>: One of: toggles (resets all chat toggles), socialspy (resets all social spy states), cooldowns (clears message cooldowns), blocks (clears all block lists), alerts (clears all alert states), or all (clears all data)/zealouschat admin gtoggle <type> — Toggle global chat features (aliases: /gtoggle, /chatplugin admin gtoggle, /zealouschat admin gtoggle, /zchat admin gtoggle)
zchat.admin.gtoggle<type>: One of: chat, privatemessages, both, all/zealouschat admin toggle chat <player> <true|false> — Force toggle public chat for a player
zchat.admin.toggle.chat<player>: Target player name<true|false>: Enable or disable chat/zealouschat admin toggle messages <player> <true|false> — Force toggle private messages for a player
zchat.admin.toggle.messages<player>: Target player name<true|false>: Enable or disable private messages/zealouschat admin toggle all <player> <true|false> — Force toggle both chat & private messages
zchat.admin.toggle.all<player>: Target player name<true|false>: Enable or disable both/zealouschat admin socialspy <player> <true|false> — Force toggle social spy for a player
zchat.admin.socialspy<player>: Target player name<true|false>: Enable or disable social spy/zealouschat admin stats — Display server-wide chat and private message toggle statistics
zchat.admin.stats/zealouschat admin alerts <player> <true|false> — Force toggle alerts for a player
zchat.admin.alerts<player>: Target player name<true|false>: Enable or disable alerts/zealouschat admin block <player> <target> — Force a player to block another player
zchat.admin.block<player>: Player who will do the blocking<target>: Player to be blocked/zealouschat admin unblock <player> <target> — Force a player to unblock another player
zchat.admin.block<player>: Player who will do the unblocking<target>: Player to be unblocked/zealouschat admin clearblocks <player> — Clear all blocks for a player
zchat.admin.block<player>: Player whose block list will be clearedplugins/ and restart.plugins/ZealousChat/config.conf – changes can be reloaded with /zealouschat reload.plugins/ZealousChat/database.conf and messages in plugins/ZealousChat/messages.conf.zchat.format.vip or allow colours with zchat.color.[inv], [hand], [ender], [health] and [pos] in chat messages to display inventory information.All Chat, PM and config strings support MiniMessage plus any PlaceholderAPI tags when the plugin is present.
| Node | Default | Description |
|---|---|---|
zchat.* | op | Grant everything |
zchat.admin | op | Access root/admin commands |
zchat.admin.reload | op | Reload configuration |
zchat.admin.info | op | View plugin info |
zchat.admin.test | op | Test formatting |
zchat.admin.format | op | Manage chat formats |
zchat.admin.toggle | op | Toggle plugin features |
zchat.admin.block | op | Manage player block lists |
zchat.color | true | Use colour codes in chat |
zchat.formatting | true | Use text formatting codes |
zchat.url | true | Send clickable URLs |
zchat.mention | true | Use @mentions |
zchat.bypass.cooldown | op | Bypass chat/message cooldowns |
zchat.bypass.swearfilter | op | Bypass swear filter restrictions |
zchat.format.admin | op | Use Admin chat format |
zchat.format.moderator | false | Use Moderator chat format |
zchat.format.vip | false | Use VIP chat format |
zchat.message | true | Send & receive private messages |
zchat.channel.use.list | true | Use the /channel list command |
zchat.channel.use.join | true | Use the /channel join command |
zchat.channel.use.leave | true | Use the /channel leave command |
zchat.channel.use.focus | true | Use the /channel focus command |
zchat.channel.use.who | true | Use the /channel who command |
zchat.toggle | true | Parent of chat/message toggle perms |
zchat.toggle.chat | true | Toggle public chat |
zchat.toggle.messages | true | Toggle private messages |
zchat.status | true | View own chat status |
zchat.alerts.toggle | true | Toggle alerts on/off |
zchat.socialspy | op | Monitor private messages |
zchat.commandspy | op | Monitor player commands |
zchat.bypass.chattoggle | op | Chat even when disabled |
zchat.bypass.messagetoggle | op | PM even when disabled |
zchat.bypass.globalchat | op | Bypass global chat toggle |
zchat.bypass.globalmessages | op | Bypass global message toggle |
zchat.viewinventory | true | View shared inventories |
zchat.inventory.placeholders | true | Use inventory placeholders |
zchat.admin.toggle.chat | op | Force toggle chat for a player |
zchat.admin.toggle.messages | op | Force toggle messages for a player |
zchat.admin.toggle.all | op | Force toggle both chat & messages |
zchat.admin.gtoggle | op | Toggle global chat features |
zchat.admin.socialspy | op | Force toggle social spy for player |
zchat.admin.stats | op | View server-wide statistics |
zchat.admin.alerts | op | Force toggle alerts for a player |
zchat.admin.clear | op | Clear various chat-related data |
• Discord: Join Discord

A powerful, mini-message plugin for chat formatting and beyond.