ChatControl - Format & Filter Chat v12.1.6

The ultimate chat formatting, filtering & anti-spam. Can replace 200+ plugins. Folia supported.
  • New | Thanks to user feedback, you can now again use %% in PlaceholderAPI variables. This is added as an option to Performance section of settings.yml and is off by default. Reason being, we use our own, faster parser that only supports {}. However, some plugins like itemsadder are not supported, so if you're using them simply enable this option to increase compatibility.
  • New | Added "/chc color default <decoration>" command option to retain the color and only change a player's decoration.
  • New | Added "require command" operator to command rules.
  • Improve | Setting a nick now changes player displayname to section letters instead of minimessage, improving third party plugin compatibility.
  • Fix | Solved "Unable to find cached database player" in player login when AuthMe is used.
  • Fix | Solved "Unable to resolve Discord username in channel".
  • Fix | Solved "delay" operator without a message used sending empty chat messages to the user.
  • Fix | Solved chat channel output not displaying in console when the message sender is not a player (i.e. console, discord, dynmap).
  • Fix | Solved error after disabling proxy server in Velocity and possibly Bukkit platforms by temporarily disabling console filters until we fully resolve the issue with Paper.
Developer diary: We're finally out of beta! Less than a month after the first v11 release!! That is a big achievement and the plugin should now be production-friendly. First and foremost a BIG THANKS to everyone participating in reporting all bugs and asking questions on GitHub, without your feedback we would have not achieved this so quickly. Thanks to our amazing community, I'm announcing the 11.1.0 is officially out!

PS: Some of you still try to report issues on Discord, please don't do it as I am not actively scrolling through hundreds of chats there. Use the above link to get in touch with me; our Discord is for chatting with other users, not to get in touch with me. Thanks!

QUICK: If you enjoyed the DAILY updates almost non-stop this whole week, please drop a quick review for ChatControl, BungeeControl and VelocityControl if you use them. It really helps us keep going and motivates us to keep serving you for over 12 years!
  • New | Support RGB and gradients in console. Note that a supported environment is required (I tested it on macOS). On unsupported environments, no colors will be displayed.
  • New | Added support for [item] and other message variables in private messages.
  • New | Added a key Filter_Unknown_Mini_Tags to settings.yml to turn off our security feature. Disabling it can improve third party plugin compatibility. You do not need to disable it if using InteractiveChat as we have an inbuilt exception already.
  • Improve | Added compatibility with InteractiveChat variables in commands such as /tell.
  • Improve | No longer automatically converts hex colors in commands (such as in ChatControl's "then command"), solving command forwarding and plugin compatibility issues (i.e. using hex in /nick as alias for /tag nick caused issues).
  • Fix | Solved an issue when migrating from v10 and keeping both old and new folders.
  • Fix | Solved "Cannot invoke "SyncedCache.isIgnoringPlayer(java.util.UUID)" because "spyingReceiverCache" is null".
  • New | Added {chatcontrol_player_nick_section},{chatcontrol_player_prefix_section} and {chatcontrol_player_suffix_section} placeholder for TAB and other plugins for better compatibility in those cases where both mini and legacy are used, see https://github.com/NEZNAMY/TAB/issues/1408. These placeholders return the tag using § colors. Useful for third party plugins not supporting MiniMessage format. Using these fixes otherwise broken hex and gradient rendering.
  • Improve | No longer process invalid incoming plugin messages from other networks if proxy is disabled. This change makes it possible to have v10 on your network and have a single server with v11 where proxy.yml has Enabled on false for testing.
  • Fix | Solved "" localization keys showing up as empty messages in chat.
  • Fix | Solved "CraftPlayer cannot be cast to WrappedSender" error in /chc message list.
  • Fix | Solved VelocityControl addon breaking HuskHomes or other plugins using ForwardPlayerData BungeeCord subchannel.
  • Fix | Solved "No such tag 'X', available: Y" message printing all tags. Now, we only print available those that are actually enabled.
  • Remove | No longer translates pure #132456 in variables to mini format if Performance.Upgrade_Hex_To_Mini_In_Variables is true in settings.yml. This solves some compatibility problems and unexpected behavior. Note: The &#132456 syntax will still be converted, and you can still type #132456 and &#132456 in /tag and /chc tag and it will be converted regardless of this settings option.
NOTICE: This is a legacy ChatControl 10 version for those still using it. Once ChatControl 11 is out of beta we will be slowly sunsetting support for v10. Please help us by trying ChatControl 11 today, it's got automatic migration from v10.
  • Improve | Compatible sound names with the latest Paper builds.
Note: I rewrote some parts related to temporary data storage to solve "database player not found" issues and issues regarding Mojang username changes, so I am leaving the BETA tag for this release. The priority is to get stable and reliable as possible, if you encounter anything just please ask out on our GitHub.
  • New | Now shows the remaining time until unmute in "/mute <type>", including from LiteBans and CMI.
  • New | Added "ignore muted" rule operator that will abort the rule if the player is muted from ChatControl, Essentials, LiteBans or CMI, see https://github.com/kangarko/ChatControl-Red/wiki/Rules#ignore-muted
  • Improve | Better stability when loading mariadb driver on certain configurations.
  • Improve | You can now put "" instead of just "none" to disable sounds in parts of the plugin.
  • Improve | Significantly improved VelocityControl join message rendering speed.
  • Fix | Solved a few cases of "Unable to find cached database player" error.
  • Fix | Solved "Cache loading task already scheduled" error.
  • Fix | Solved "Could not parse CompChatColor <X>" when Gradient format is used with minimessage tags.
  • Fix | Solved "Expected String in Variables#placeholders() in {player}" in "/ch sendas".
  • Fix | Solved "IllegalStateException: Not scheduled yet" when using LiteBans integration.
  • Fix | Solved instabilities when a player changed his username with Mojang.
  • Fix | Solved chatcontrol.spy.autoenable still enabling spy to players despite Spy.Apply_On option in settings.yml being empty.
  • New | Added support for some PlaceholderAPI extensions requiring parsing variables inside of them such as ParseOther or ChangeOutput. See https://github.com/kangarko/ChatControl-Red/wiki/Variables#placeholderapi-syntax for how to use.
  • New | You can use {sender_name} and {channel_name} variables in Receiver_X conditions in a format part which are replaced before this condition is evaluated. This goes handy with the above feature.
  • New | Added variables of the remaining time a player, channel, server or the network is muted to the lang key. Those can also be used in PlaceholderAPI. Your lang wont be automatically updated if you used /chc dumploc previously, see the bottom of this update log for the variables.
  • New | The /mute <type> command now displays the remaining time until the mute is over. See previous key for if your language file will get updated automatically and see the bottom for the new keys:
  • Improve | Better compatibility with InteractiveChat.
  • Fix | Solved Litebans integration failing: "Database queries cannot be executed on the main server thread!" when mute was checked in commands.
  • Fix | Solved "Unknown database driver jdbc:mariadb" error when using mariadb custom driver.
  • Fix | Solved "Cannot invoke "String.equals(Object)" because the return value of"me.clip.placeholderapi.expansion.PlaceholderExpansion.getVersion()" is null" with certain PlaceholderAPI extensions.
  • Fix | Solved "Unable to resolve Discord username in channel X by Y" in Discord.
  • Fix | Solved nicks from Essentials having legacy HEX formatting not properly rendering in some cases.
  • Fix | Solved sounds not playing.
  • Fix | Solved language keys still being used when set to empty or "none".
  • Fix | Solved Performance.Upgrade_Hex_To_Mini_In_Variables being on true replacing hex colors in chat messages without checking for permission. Note that to use hex in chat, minimessage <#123456> syntax is required.
  • Fix | Solved "NullPointerException: input" in death messages when the original message is null.

New language keys with remaining time variables:
JSON:
"command-mute-cannot-chat-channel-muted": "Channel {channel} is muted. Remaining: {player_channel_unmute_remaining_short}",
"command-mute-cannot-chat-player-muted": "You are muted, can't chat. Remaining: {player_unmute_remaining_short}",
"command-mute-cannot-chat-proxy-muted": "The network is muted, can't chat. Remaining: {network_unmute_remaining_short}",
"command-mute-cannot-chat-server-muted": "The server is muted, can't chat. Remaining: {server_unmute_remaining_short}",
"command-mute-player-or-channel-on": " <gray>- <white>{player_or_channel} <gray>is <red>muted<gray> for {remaining_time}.",
"command-mute-proxy-on": " <gray>The network is <red>muted<gray> for {remaining_time}.",
"command-mute-server-on": " <gray>This server is <red>muted<gray> for {remaining_time}."

Our language keys are automatically updated if you didn't use /chc dumplocale and they are not present in your lang/xx_XX.yml file. If they are present you can copy the relevant placeholder from above. Please note that the {remaining_time} does not work in the keys using the longer version, and vice versa.

Tip: To customize localization of the plugin, type /chc dumploc and edit the lang/xx_XX.yml file to your likings.
Note: Happy new year! We got over 30 tickets and 240+ bug reports to process since holidays end. If you have not been answered yet note we are actively working through the queue. Please do not double post or email us if you have already opened a ticket. Thanks for your patience.
  • New | Added an option to purge old mails.
  • Improve | Now intelligently uses double quotes when a setting value contains single quotes. Removes the need for double quotes '' in scripts.
  • Fix | Solved comments being removed and |- being converted to \n when saving variables.
  • Fix | Solved Clear_Data_If_Inactive key not working.
  • Fix | Solved a null pointer exception when private messaging players from the console.
  • Fix | Solved "Database queries cannot be executed on the main server thread!" when using LiteBans.
  • Fix | Attempt to solve "Cannot invoke "org.mineacademy.chatcontrol.SyncedCache.isIgnoringPlayer(java.util.UUID)" because "spyingReceiverCache" is null" in spying.
Buy a license now
$29.97
EULA
Standard EULA
Use on any projects you own with attribution
Support
Standard
Includes:
Download the resource
Access new updates
Support from the creator
Support duration
Lifetime
Extras
Witty Death Messages Pack
+ $9.99
Advanced Swear & Offensive Words Filters
+ $9.99
Share and earn
Refer this resource and earn a 10% commission.
287,802 Views
2,258 Purchases
3,160 Downloads
Dec 13, 2020 Published
Jun 22, 2026 Updated
5.00 star(s)
Average rating (129)
2.2 MB File size
Open source
  1. No
DRM-free
  1. Yes
Unobfuscated
  1. Yes
Game mode
  1. Survival & SMP
  1. Creative
  1. Minigame
Type
  1. Chat
  1. Protection
  1. Staff
Game mode
  1. Survival
  1. Creative
  1. Minigame
Game mode (legacy)
  1. Survival
  1. Creative
  1. Minigame
Supported software
  1. Bukkit
  1. Spigot
  1. Paper
  1. Folia
  1. Purpur
Supported versions
  1. 26.1
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
  1. 1.20
  1. 1.19
  1. 1.18
  1. 1.15
  1. 1.14
  1. 1.13
  1. 1.12
  1. 1.11
  1. 1.10
  1. 1.9
  1. 1.8
Supported languages
  1. English
Includes DRM
No
Source access (legacy)
Open source
Creators
Owner
Recommended for you
Advanced custom monsters & AI plugin with skills system and a clean UI. Folia supported.
5.00 star(s) 53 ratings
777 purchases
An addon for ChatControl to allow cross-network features and player messages.
5.00 star(s) 6 ratings
469 purchases
Procedurally destroyable arenas with classes, tier system & Velocity support.
4.50 star(s) 8 ratings
173 purchases
Protect your economy against raids, duplicated items or zero-day exploits.
4.00 star(s) 7 ratings
144 purchases
Add snow particles & terrain snow, spawn snowmen, place gift chests and much more!
5.00 star(s) 6 ratings
138 purchases
Share and earn
Refer this resource and earn a 10% commission.
287,802 Views
2,258 Purchases
3,160 Downloads
Dec 13, 2020 Published
Jun 22, 2026 Updated
5.00 star(s)
Average rating (129)
2.2 MB File size
Open source
  1. No
DRM-free
  1. Yes
Unobfuscated
  1. Yes
Game mode
  1. Survival & SMP
  1. Creative
  1. Minigame
Type
  1. Chat
  1. Protection
  1. Staff
Game mode
  1. Survival
  1. Creative
  1. Minigame
Game mode (legacy)
  1. Survival
  1. Creative
  1. Minigame
Supported software
  1. Bukkit
  1. Spigot
  1. Paper
  1. Folia
  1. Purpur
Supported versions
  1. 26.1
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
  1. 1.20
  1. 1.19
  1. 1.18
  1. 1.15
  1. 1.14
  1. 1.13
  1. 1.12
  1. 1.11
  1. 1.10
  1. 1.9
  1. 1.8
Supported languages
  1. English
Includes DRM
No
Source access (legacy)
Open source
Creators
Owner
Recommended for you
Advanced custom monsters & AI plugin with skills system and a clean UI. Folia supported.
5.00 star(s) 53 ratings
777 purchases
An addon for ChatControl to allow cross-network features and player messages.
5.00 star(s) 6 ratings
469 purchases
Procedurally destroyable arenas with classes, tier system & Velocity support.
4.50 star(s) 8 ratings
173 purchases
Protect your economy against raids, duplicated items or zero-day exploits.
4.00 star(s) 7 ratings
144 purchases
Add snow particles & terrain snow, spawn snowmen, place gift chests and much more!
5.00 star(s) 6 ratings
138 purchases
Top