ChatControl
Testimonials/Vouches:



ChatControl is chat management and formatting plugin for Bukkit, Spigot and Paper that significantly reduces the amount of spam, ads, swearing and bots on your server!
It received over 600,000+ downloads since 2013 and was since modernized to work on the latest Minecraft version.
## Issue Tracker | Wiki
Create custom rules and handlers for complete control over your chat. ChatControl also comes with many other, often unique features, see the list below!
### Unofficial review video by Koz4Christ
Note: In commands, there is no such argument as “username”.

## Features
### Rules and Handlers
– Rules can be used for:
– **Effective curse/swear word filtering**. By default, over 48 curse words are blocked!
– **Powerful IP / URL advertisements blocking**
– **Filter spam** and **repetitive characters**
– **Block unicode / non-english messages**
– **Typo / slang correction**
– **Command aliases**
– Utility commands / messages
– Fun message replacements
– …they are entirely up to you, and the possibilities are endless!
– Define your own rules that matches certain **regular expressions** and applies for: chat, commands, signs or packets
– Packet rules **allows you to edit messages from the server itself or even other plugins** (or hide them). The support replacing message per different worlds with rewritein operator
– For example, change the unknown command message to no permission message in survival, but to something else in the hardcore world
– Handlers allow you to easily manage a big set of rules without spaghetti code
– Custom syntax and parser, fixing many YAML limitations
– Inspired by popular but now outdated PwnFilter
### Chat Formatting
– Format chat messages, with variables: {player_prefix} and {player_suffix}
– {world} (TIP: if you want to customize the world name, use Multiverse-Core and edit world alias in worlds.yml)
– {health
– {player} (player name)
– {town} and {nation} (if Towny plugin is enabled)
– {clan} (if SimpleClans plugin is enabled)
– {country_name} and {country_code}
– {region_name} and {isp} (player’s internet provider)
– PlaceholderAPI is supported.
– Supports **global chat** (begin with “!”) and **local chat** (ranged mode)
– Use _chatcontrol.chat.overrideranged_ permission to get all messages in the world
– Use _chatcontrol.chat.spy_ permission to get all messages in all worlds – spy mode
### Anti Spam
– Block the same or similar messages and commands
– Strip special and duplicate characters to prevent bypasses (toggleable)
– Ignore first argument in commands to prevent too strict check
– Customizable percentage
– Set the delay between messages and commands
– Lower long unreadable message spam
– Whitelist commands from delay and similarity check
### Anti Caps
– Efficient and intelligent CAPS prevention
– Customize minimum message length, caps percentage, amount of caps in the row and a whitelist of ignored words
– Ignore player names
### Anti Bot
– Set the delay between logging in again
– Prevent signs with the same text (alert staff + drop the sign) (Useful against “AutoSign” cheat)
– Block chat until player moves on join (Prevent bots joining and spamming)
### Chat Clear
– Clear the in game chat. Support reason and arguments:
– -anonymous (-a) (to hide the cleaner’s name)
– -silent (-s) (to hide entire broadcast message after clean)
– -console (to clear console)
– Do not clear chat for players with permission
### Chat Mute
– Globally prevent chatting and executing certain commands under the mute.
– Also hide join/quit/kick and death messages
– Supports reason and arguments
– -anonymous (-a) (to hide the cleaner’s name)
– -silent (-s) (to hide entire message after clean)
– -console (to clear console)
### Messages’ Customization & Broadcaster
– Customize or hide join/quit and kick messages. Support variables:{player}, {player_suffix} and {player_prefix} (see more variables above in Chat formatter)
– Send fake join or leave messages (/chc fake)
– Broadcast messages in the specified interval
– 3 modes – by order, random and random with cache that prevents messages to repeat until all were broadcasted
– Set a prefix and a suffix
– Supports variables %player and %world
– Different messages per world
– World messages inherit global messages by default, this can be disabled by inserting – excludeGlobal on the first line.
### Packet Features
– Disable tab complete if no argument is given, leaking server info.
– Notice: If using spigot, it is recommended to disable this feature and to configure it in spigot.yml!
– Change other plugins’ or even server messages (see rules/packet.txt file)
### Console Features
– Remove unwanted messages from the console
### Sound Notify
– Get notified when somebody mentions you in the chat or if you receive ‘/tell’, ‘/r’ (or any specified message)
– Customizable sound, volume and pitch.
– Respects the difference in sound names between MC 1.9 and older
– Can specify a prefix that is necessary to get notified (e.g @kangarko)
– Only notify afk players (toggleable, requires Essentials)
### Grammar
– Capitalise sentences automatically
– Insert a dot at the end
– Respects domains and IP addresses
– Define minimum message length for capitalization and punctuation
### Chat Conversation Saver
– Save entire chat conversation to file. Unlike console output, this will save only player messages and specified commands
– Ignore certain players
### Localization
– Current available locations:
– English (en)
– Slovak (sk)
– Czech (cz)
– Spanish (es)
– German (de)
– French (fr)
– Dutch (nl)
– Swedish (se)
– Hungarian (hu)
– Bulgarian (bg)
– To customize the localization, create a file in plugins/ChatControl/localization/messages_LOCALE.yml (replace LOCALE with the short name of the localization – the one above in brackets)
– On reload, it will be filled with all the values and kept up to date with newer versions.
– If you make a localization, it would be appreciated if you send it to me via PM. Thanks!
### Groups (Permission-specific Settings)
– Apply different settings for each group (or players) with certain permission
– Example: Allow trusted players to type quickly but set the message delay for quests to, for example, 5 seconds.
– Example 2: Set different join/leave/kick message for certain players/groups.
### Lightweight & Safe
– Extremely efficient and low CPU / RAM usage
– Asynchronous updater and non-blocking features
– Safety checker to prevent malformed regular expressions running into an infinite loop and freezing the server
– Custom syntax parser
#### You can turn every feature off and change every message!
### Compatibility
– Minimum Minecraft version: Craftbukkit 1.2.5 (that is correct!) to the latest Spigot / Paper
– Minimum Java version: Java 8
– The plugin doesn’t use NMS access so it will most likely not break upon next releases (1.10.x etc)
– Cauldron & PaperSpigot compatible
**Important for Minecraft 1.7.10 and lower:** Please install BungeeChatAPI alongside ChatControl.
### Commands
See “/chc list” to display all available commands of the plugin.

### Supported Plugins
– **ProtocolLib** for custom rules in packet.txt file and preventing tab complete.
– **Essentials** or **EssentialsX** for detecting AFK players.
– **Vault** for chat formatter and taking money players in “then fine” operator in custom rules.
– **Multiverse-Core** for colored world alias in chat formatter.
– **Towny** for {nation} and {town} variables in chat formatter.
– **SimpleClans** for {clan} variable in chat formatter.
– **AuthMe** for better join/kick/quit messages.
– **PlaceholderAPI** for extra variables.
### Need help? Ask questions?
### Click here to send us a message.
### We aim to reply to all customers within 1-5 business days.