ChatControl - Format & Filter Chat v12.1.6

The ultimate chat formatting, filtering & anti-spam. Can replace 200+ plugins. Folia supported.
Note: This is a MASSIVE internal update focused on big networks, increasing performance and stability (big time). It took me many weeks to do, if you appreciate it please consider dropping a review!

Future of ChatControl: We got 300+ votes! Thank you! Most people voted for Minecraft 1.21.11 and Java 21 as the new ceiling, but I understand 1.8.8 still has a small user base go so I won't be dropping it today. But if any of the future releases demand complicated hacks or rewrites, it will break. Same goes for BungeeCord - 80% of you voted to drop support. I decided to push this release with it as a courtesy (please drop a review hehe!), but if a future demands a bigger rewrite/hacks to keep it supported, it will get dropped.

Getting near-instant support: Please use my bot on GitHub to get near-instant answers - the Claude Opus setup there has access to plugin's source code and docs. For example, you can just ask him "how can i configure /helpop to chat in helpop channel" etc. it's surprisingly good and I am still replying everywhere manually and checking everything!

PS: Make sure to update your VelocityControl and BungeeControl too!
  • Major | Reworked proxy sync to be more reliable on large networks. Solves #346, #964, #1107, #1566, #1798, #2054, #2540, #2626, #2756, #3297, #3575, #3591 and #3595.
  • Major | Reworked database pooling to use HikariCP for improved performance and reliability. Also solves race on /chc reload on big networks or when too many players were joining at once.
  • Misc | Now requires Java 21 or greater.
  • Misc | Now uses PacketEvents instead of ProtocolLib (you can remove this plugin if you don't use it for any other integration). Please install PacketEvents jar as a plugin to use our tab and packet features.
  • Misc | Updated to Adventure 5.
  • New | Added support for Simple Voice Chat and PlasmoVoice so muted players can't chat.
  • New | Added support for Nexo. Works automatically like ItemsAdder.
  • New | Ignore.Stop_Private_Messages now supports "silent" option, which will not send "You're blocked!" message to the player who DM's someone that is ignoring him. Instead the plugin will pretend the message came through.
  • New | Added Spanish localization! Set Locale to es_ES in settings.yml to take effect!
  • New | Support auto switching channels on region enter/leave. Configurable in settings.yml.
  • Improve | ItemsAdder and Nexo are now supported in format hovers.
  • Fix | Solved duplicated chat messages typed rapidly getting out of sync in some cases.
  • Fix | Solved console not accepting hex colors in /chc color.
  • Fix | Solved removing messages with [X] unreliable across proxy servers.
  • Fix | Solved relational variables not being hidden over proxy and not translated in spying.
  • Fix | Solved region tools conflicting with my other plugins in certain edge cases.
Performance test (400 players connected on 1 Folia server, 15-min stress test - note the TPS drop was my computer going poof, ChatControl was running smoothly):
Screenshot 2026-05-07 at 20.12.08.png


Survey results:
Screenshot 2026-05-07 at 20.09.41.png
Screenshot 2026-05-07 at 20.09.46.png
PLEASE READ IN FULL, THIS IS VERY IMPORTANT:

Our plugins support 10+ years of backward compatibility which is becoming increasingly unstable, buggy and slow to update.

1. I want to keep loving making plugins and make sure they are stable, fast and simple to use (even on large networks and Folia), and I am considering raising the minimum compatibility from currently Java 8 and Minecraft 1.8.8.

2. I am also considering dropping BungeeCord support from ChatControl and Foundation because it has been in decline for a long time. Waterfall (a fork of BungeeCord) from Paper team has announced end of life 2 years ago.

Sunset Legacy Support Vote > https://forms.gle/58ggoV7h8ab19beB6

Dropping BungeeCord Vote > https://forms.gle/z4br1PnaaunPtMNJ6

Voting closes in 48 hours, please vote FOR BOTH as soon as possible.

Many thanks,
kangarko

There's no plugin update in this update post. The jar is the same as in the last version.
Please update your BungeeControl and VelocityControl too.
  • Improve | Improved performance of proxy data sync by caching the SyncType values list
  • Improve | Improved chat formatting performance by caching the sender's name when evaluating receiver conditions and permissions
  • Improve | Faster database reconnects by skipping the transitive Maven dependency resolver after the first library load
  • Improve | LiteBans mute detection now performs a synchronous fallback lookup if the initial async lookup failed, so a brief LiteBans DB outage no longer lets muted players chat
  • Fix | Solved "NullPointerException" when replying to a mail whose subject was empty
  • Fix | Solved "NumberFormatException" on update check when the latest version on BuiltByBit contained non-numeric characters
  • Fix | Suppressed the auto-crash report when the plugin's .paper-remapped JAR is deleted while the server runs (antivirus quarantine, manual cleanup) and aborted the reload with an actionable message instead
  • Fix | Solved a JDBC driver hijack where another plugin's shaded driver could intercept the database connection, by connecting through the resolved driver directly
SPARK REPORTS NEEDED

I am rewriting ChatControl to be more performant, optimized and async. And I'd like to check how it performs on your server today to see where the biggest gaps are!

If you run a server of any size, can you please run a spark report and email the URL privately to mineacademy.org/contact?

No worries how big or slow if your server - the more reports I get the more I can optimize the plugin!

Your report will stay private.

Thanks,
Matej

(There's no new version in this update, the JAR is the same 11.8.10 as last time.)
  • Improve | External chat mutes from LiteBans, AdvancedBan, BanManager, Essentials and CMI are now always enforced when a player tries to chat, even when ChatControl's own mute is disabled or the player has chatcontrol.bypass.mute. Previously the external mute check was skipped in those cases
  • Improve | Added AdvancedBan to softdepend so its hook loads in the correct order
  • Fix | Solved {player_unmute_time_remaining} showing nonsense (negative or wildly wrong) values when the mute came from an external plugin. The remaining time is now calculated as end-minus-now instead of inverted
  • Fix | /mute status output now shows the correct remaining time for externally-muted players, matching the placeholder fix above
  • Fix | Solved "Cannot instantiate SerializedMap in mode YAML from (ArrayList)" auto-reporting as a crash when formats/*.yml had its Parts: section written as a YAML list (e.g. - Part: ...) instead of a map of named parts. The file is now skipped with a clear console warning naming it and pointing to the docs (#3626)
Please update your BungeeControl and VelocityControl too.
  • New | Added {player_chat_gradient_open} and {player_chat_gradient_close} placeholders. They expand to / when the player has a chat gradient set, or to empty strings otherwise. Wrap any portion of a format line (name, message body, etc.) in them to paint that portion in the player's gradient only when one is configured, without breaking the format when it isn't
  • Improve | Default formats/chat.yml and formats/global-chat.yml now wrap {message} with {player_chat_gradient_open} / {player_chat_gradient_close}, with {player_chat_color} and {player_chat_decoration} placed outside the wrap so that per-character gradient colors render correctly when a plain chat color is also set
  • Improve | Hide the gradient button in the /chc color menu for players who have no chatcontrol.guigradient.* permissions
  • Fix | Solved a crash on player join/quit/kick when a messages/*.rs file contained a group with no messages: entries (#3621). Misconfigured groups are now skipped with a console warning so operators can correct them
  • Misc | Removed the implicit wrap around {message} that shipped in 11.8.7. Gradient control now lives entirely in format files, same as {player_chat_color}. If your formats/chat.yml was regenerated under 11.8.7, delete it to pull the new default, or add {player_chat_gradient_open}{message}{player_chat_gradient_close} manually around the portion you want painted (#3619)
  • New | Chat color and gradient can now be used together. Selecting a gradient no longer wipes your {player_chat_color}, so format lines that use that variable for name colors or other parts keep working while the gradient paints only the {message}. Credits to for the suggestion (#3619)
  • New | Added three placeholders for custom formats: {player_chat_gradient_from} (start hex, e.g. #FF5555), {player_chat_gradient_to} (end hex), and {player_chat_gradient_name} (preconfigured name like Sunset or none)
  • Improve | /chc color status now lists the chat color and the gradient side-by-side when both are set, instead of hiding the color behind the gradient
  • Improve | The glass "Reset chat color" button in /chc color menu now only resets the solid color. Use the reset button inside the Gradients submenu to clear the gradient. /chc color reset still clears both, as before
  • Improve | IP filter rewrite in rules/global.rs: now validates every octet is 0-255 before matching, so dates (2026-04-20-09), phone numbers and version strings no longer fire the advertisement group. Added an ignore string for chat framing words (coord, tp, pos, warp, build, version, buying, selling, etc.) that precede legitimate 4-number tuples
  • Improve | Domain filter now ignores English compounds and programming identifiers that look like domains (log.in, sign.in, System.in, String.to, File.is), preventing false positives in tech discussions and casual phrases
  • Improve | Swear filter now catches compounds (motherfucker, clusterfuck) in addition to base words and obfuscated variants
  • Fix | Solved rules with ignore players only matching whole-message equality against one player name. The operator now strips every online player's name from the text before running the pattern, so a flood/spam rule no longer trips on messages that merely mention a player whose nickname contains the matching characters (e.g. Lexiiiiiik tripping a repeated-character filter). Credits to Lanya from the #3324 thread
  • Misc | Internal: ignore-players stripping now compiles a single alternation pattern per message (instead of one Pattern per online player) and sorts names longest-first so overlapping prefixes like Ab vs Abc don't leave stray tails
  • Improve | /spy off and per-feature selections from /spy menu and /spy toggle no longer get wiped on every login for players with the chatcontrol.spy.autoenable permission. Auto-enable now runs only on first login; after that the player's chosen sections (commands, mails, signs, books, anvil, private messages, channels) persist across rejoins.
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,719 Views
2,257 Purchases
3,159 Downloads
Dec 13, 2020 Published
Jun 22, 2026 Updated
5.00 star(s)
Average rating (129)
2.2 MB File size
Open source
  1. Yes
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
Supported versions
  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,719 Views
2,257 Purchases
3,159 Downloads
Dec 13, 2020 Published
Jun 22, 2026 Updated
5.00 star(s)
Average rating (129)
2.2 MB File size
Open source
  1. Yes
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
Supported versions
  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