Advanced chat management and control plugin for Paper 1.21.x - 26.2
Chat toggle, message filtering, slowmode, optional private messaging, anti-spam, multi-language, and full PlaceholderAPI + LuckPerms integration
Formerly known as vChatUtils
- Chat Toggle, Enable/disable chat globally with broadcast notifications
- Message Hiding, Hide join/leave messages and advancement announcements
- Chat Filter, Regex-based word and link filtering with configurable patterns
- Allowed Characters, Whitelist-based character filter to block homoglyph/unicode bypass attempts
- Anti-Spam, Repeated and similar message detection with configurable thresholds
- Caps Filter, Block messages with excessive uppercase letters (configurable ratio)
- Max Line Length, Hard character limit per message (configurable)
- Slowmode, Cooldown between messages with configurable delay
- Bypass System, Granular permissions for each restriction (slowmode, filter, caps, etc.)
- Private Messaging, Full /msg, /reply, /togglepm, /socialspy system (disabled by default — conflicts with EssentialsX; enable with
PM: truein config.yml) - Chat Formatting, Configurable format with MiniMessage, supports {prefix} {suffix} {username} {message}
- PlaceholderAPI, Full integration — resolve any %placeholder% in chat format and messages
- Multi-Language, English, Polish, German, French, Spanish built-in
- LuckPerms, Prefix/suffix formatting, group-level bypass checks
| Command | Description | Permission |
|---|---|---|
/chatcontrol |
Show plugin info (version, author, links) | Everyone |
/chatcontrol clear [player] |
Clear chat (global or specific player) | chatcontrol.admin |
/chatcontrol on |
Enable chat | chatcontrol.admin |
/chatcontrol off |
Disable chat | chatcontrol.admin |
/chatcontrol status |
Show plugin status | chatcontrol.admin |
/chatcontrol reload |
Reload configuration | chatcontrol.admin |
/msg <player> <message> |
Send private message | Everyone |
/r <message> |
Reply to last private message | Everyone |
/togglepm |
Toggle receiving private messages | Everyone |
/socialspy |
Toggle viewing all private messages | chatcontrol.admin |
Alias: /cc = /chatcontrol (configurable via short-alias in config.yml)
Private messaging commands (/msg, /r, /togglepm, /socialspy, /ignore, /unignore, /ignorelist) are disabled by default because they conflict with other private-messaging plugins like EssentialsX. Set PM: true in config.yml to enable them (requires restart).
| Permission | Description | Default |
|---|---|---|
chatcontrol.admin |
Access to all admin commands and social spy | op |
chatcontrol.bypass |
Bypass all chat restrictions | op |
chatcontrol.bypass.chatdisabled |
Bypass disabled chat | op |
chatcontrol.bypass.slowmode |
Bypass chat slowmode/cooldown | op |
chatcontrol.bypass.maxlength |
Bypass max line length limit | op |
chatcontrol.bypass.caps |
Bypass caps filter | op |
chatcontrol.bypass.filter |
Bypass word/regex filter | op |
chatcontrol.bypass.allowedchars |
Bypass allowed characters filter | op |
chatcontrol.bypass.antispam |
Bypass anti-spam detection | op |
chatcontrol.color |
Use basic color codes (&0-&f) and formatting (&l, &o, &n, &m) in chat | false |
chatcontrol.color.rgb |
Use hex color codes (&x, color:#...) in chat | false |
chatcontrol.format.gradient |
Use gradients, rainbows, and transitions in chat | false |
chatcontrol.format.magic |
Use obfuscated/magic text in chat | false |
View config.yml
# ============================================
# ChatControl Configuration
# ============================================
# language: "en", "pl", "de", "fr", "es"
language: "en"
prefix: "<dark_gray>[<red>ChatControl<dark_gray>] "
chat-enabled: true
# Private Messaging: false = /msg, /r, /togglepm, /socialspy, /ignore, /unignore, /ignorelist
# are left to other plugins like EssentialsX; true = ChatControl owns them (requires restart)
PM: false
hide-join-messages: false
hide-leave-messages: false
hide-advancements: false
enable-chat-slowmode: true
chat-slowmode: 3
# Anti-Spam: repeated/similar message detection
enable-anti-spam: true
anti-spam-repeat-threshold: 3
anti-spam-similarity-threshold: 0.8
# Caps filter: blocks >70% uppercase, min 5 chars
enable-caps-filter: true
caps-filter-threshold: 0.7
caps-filter-min-length: 5
# Max line length: blocks messages >256 chars
enable-max-line-length: true
max-line-length: 256
# Regex chat filter with evasion-proof patterns
enable-chat-filter: true
chat-filter:
- "(?i)f+[\\W_]*u+[\\W_]*c+[\\W_]*k+"
...
# Character whitelist (blocks unicode homoglyphs)
enable-allowed-characters: true
allowed-characters-regex: "^[a-zA-Z0-9\\s\\-_/\\\\.,!?;:'\"()\\[\\]{}@#$%^&*+=<>~`]+$"
# Chat format with MiniMessage
enable-chat-format: true
chat-format: "{prefix}{suffix}<white>{username}</white> <dark_gray>\u00bb</dark_gray> <white>{message}</white>"
# Integrations
luckperms-integration: true
# PlaceholderAPI auto-detected (no toggle needed)ChatControl provides its own expansion: %chatcontrol_*%
| Placeholder | Description |
|---|---|
%chatcontrol_prefix% |
The configured plugin prefix |
%chatcontrol_version% |
Plugin version |
%chatcontrol_chat_enabled% |
Whether chat is enabled (true/false) |
Any PlaceholderAPI placeholder (%player_name%, %vault_prefix%, etc.) works in chat format and lang messages.
- Website: https://vprolabs.xyz
- Discord: https://discord.gg/SNzUYWbc5Q
- Modrinth: https://modrinth.com/plugin/chat_control
- Support: https://ko-fi.com/v4bi
This project is licensed under the PolyForm Noncommercial License 1.0.0.
- Non-Commercial Use Only -- no monetization
- View Full License
Made with by vProLabs