v1 Changelog

1.1.9 // Improved out of the box configs, module data processor fix, and other various improvements


  • When reloading the plugin in-game, you'll hear a little success 'ding' if everything reloads properly!


  • Modified various default module settings and messages for improved out of the box compatibility.

  • Various code adjustments & improvements.

  • Updated old wiki link in lookup command usage.

  • Rewrote / modified various startup & reload messages sent by the plugin for improved readability and less console spam.

  • Fixed a console startup message that was sending twice.

  • Modified the update join notification message to show the latest and current version. Both the console and in-game notifications are the same now.


  • FIXED: In rare circumstances additional modules can get triggered in a domino effect when one module is triggered. This was due to how certain module checks worked in terms of modifications to the input data (some modules were still reading the old data even after it was modified). This has been fixed.

1.1.8 // Unicode remover hotfix


  • FIXED: Unicode remover doesn't initialize even when enabled in the config.


  • Added new 'block-message-header' and 'block-message-footer' entries to the misc-lang file that allows you to have a header and footer sent on every block message sent by modules. Useful if you want to have neater block messages through ex. having lines at the top and bottom.

  • Added a new 'ignore-social-handles' option to the link and ad blocker module that allows social handles with periods in chat that would otherwise be detected as links/ips.

  • Added a new 'command-whitelist' list option to the link and ad blocker config that allows you to make the filter ignore checking certain commands. Added so you can disable the filters checks in commands like /msg.

  • The link and ad blocker no longer detects and blocks common units of measurement such as 10.32m.

  • The link and ad blocker no longer detects and blocks the use of placeholder value 'x' in the end of numeric values such as "1.16.x"

  • Cleaned and optimized various code for improved performance.


  • Changed /warn and /warnings labels to /cswarn and /cswarnings to fix compatibility with other warning plugins.

    Note: For convenience & to prevent potential immediate issues after updating, the auto punisher will automatically process all '/warnings pardonallmanual' or '/warnings clearmodulewarnings' {console_cmd} entries as '/cswarnings ' commands automatically. This feature will be removed eventually, so make sure you change all your '/warnings' command labels to '/cswarnings' in the auto punisher config by that time.

  • Updated the tab completer, /kcs help output, & warning & warn usage outputs with the new /cswarn & /cswarnings labels.

  • Added a small delay before sending the update notification message when you're running an outdated version of the plugin so it doesn't get buried in on-join chat.

  • Modified various hard coded console messages for improved readability.


  • FIXED: The link and ad blocker allows un-whitelisted links through when a segment of a whitelisted domain is present in the disallowed link.

1.1.6 // Better out-of-the-box compatibility, quality & clarity improvements, small logic and knowledge modifications, & more


  • Greatly improved the preset word lists for the word and phrase filter module obtainable via the wiki: https://kixmc.gitbook.io/chatsentry-wiki/misc-info/preset-word-lists

  • Improved parts of the word and phrase filters detection logic to reduce false positives and increase positive detection rates.

  • Improved the plugins knowledge set for substitution intelligence characters.


  • Made small configuration setting & list changes/additions to the majority of the configuration files for increased out-of-the-box compatibility.

  • Decreased the amount of console messages when the plugin is reloaded.

  • Modified some startup & reload messages for better clarity.

  • Fancy new changelog layout! :D


  • ChatSentry should no longer take '/warn' & '/warning' command priority over LiteBans'. If you run LiteBans but would like to use ChatSentry's warning command, you can use /chatsentry:warn.

1.1.5 // Intelligence & performance improvements, bug fixes, and more


  • Intelligence improvements to the word and phrase filter module.


  • Reworked & tidied portions of the ChatSentry configuration engine for increased intelligence.

  • Reworked & tidied large portions of the startup logic for increased efficiency and clarity.

  • Changed various startup & reload messages for increased clarity.


  • FIXED: The invalid yml detection system fails to detect invalid ymls on plugin reloads.

  • FIXED: The invalid yml detection system repeats the same error under some circumstances upon a singular plugin reload or startup.

1.1.4 // Module intelligence improvements, performance improvements, & more


  • Registered server commands are now cached for more effective use in various functions relating to ChatSentry hooking into commands and applying module features to them.

  • Added a very useful (and time saving) ignore-detected-registered-commands option to the word and phrase filter that scans for existing commands from other plugins and allows them to go through, even if they are falsely detected due to being similar to a blocked word. Keeping this on (setting enabled by default) is highly recommended as it will prevent a lot of false positives.

  • Improvements to the intelligence of the link and ad blocker.

  • When update checking is enabled, the plugin now periodically checks for updates during runtime instead of just at startup or when it's outdated.

  • Various console startup message modifications, changes, and additions.

  • Various performance improvements.

1.1.3 // 1.1.2 Hotfixes


  • Changed /togglechat's '/tc' alias to '/tglc' due to conflictions wth Towny's town chat (/tc) command.


  • FIXED: Auto punisher configuration adds back removed default punishment sets upon reloading or restarting the plugin.

  • FIXED: On startup ChatSentry sends a console notification saying update checking is disabled even when it isn't.

1.1.2 // Bug fixes & improvements


  • Added the anti command prefix module to the '/an info' output.

  • Changed "addWarning" nodes to "enabled" in auto-punisher.yml. This rename will convert automatically & your settings will be transferred.

  • Added some new plugin startup messages & modified a bunch of existing messages.

  • Made some internal changes to how the auto punisher tries and processes punishments.

  • All string nodes in the config are now surrounded by double quotes instead of single quotes. This is for consistency with how string lists are newly formatted by the plugin. This change is completely automated and requires no action by you.


  • Fixed various issues with the configuration updater failing to update the auto punisher config.

  • Fixed a bug where the auto punisher sometimes ran punishment actions twice.

  • Fixed a bug where the auto punisher sometimes ran the wrong punishment actions.

1.1.1 - officially stable!


  • New anti command prefix module that forces players to use non-prefixed commands to get around filters. Ex. /essentials:msg instead of /msg. The module comes with exemption lists for either specific prefixed commands or all commands with a certain prefix. When this module modifies a command/gets rid of a prefix, it will appear crossed out in the notification via the command spy module. There is also options to send a message to the player when it modifies their command. New permissions can be found on the permissions page on the plugins wiki.


  • FIXED: Dead link in /kcs help command.



  • Added a new substitution intelligence option in the word and phrase filter config that, when enabled, makes the filter process lookalike numbers and symbols as letters to detect players substituting letters with numbers numbers to bypass the filter. Ex. @ = A, # = H, 3 = E, 5 = S, 6 = G, etc.

  • Significantly optimized word and phrase filter code.

  • Added a suppress pardons from console option in the auto punisher config that, when enabled, hides pardon messages from receiver players only if the command was triggered by the console. The point of this is so players don't see when their warnings are reset when triggered by the last punishment set under a module. You will have to manually add 'suppress-pardons-from-console: true' to your config if your config files have already generated from a previous version (only if you want to make use of this feature) until I can fix the config engine having some problems with the auto punisher file automatically updating.


  • Added some variations of verbose console messages for the auto punisher module which are used under more specific circumstances so they make more sense.


  • FIXED: Word and phrase filter modifiers not registering on blocked entries.

  • FIXED: Warning command usage shows even when the sender does not have permission.

  • FIXED: Dead links in /kcs resources command.

  • FIXED: Manual punishment sets fire twice or more times after set 1 when warned.



  • Major code optimizations.

  • Discontinued the message modifier option in the word and phrase filter until further notice because it significantly lowered detection rates and caused a lot of problems.


  • FIXED: Manual warnings still go through even when disabled.

  • FIXED: Modified messages become lowercase when they contain a blocked word or phrase.

  • FIXED: Violations toggled off reminder message does not send when expected.

  • FIXED: Link and ad blocker detects common faces like "o.o" as links.



  • Modified &/or added a few config comments from the word and phrase filter and admin notifier config for increased clarity.


  • FIXED: 'exact::' and 'exactcontains::' modifiers cause console errors with the word and phrase filter module.

  • FIXED: Various issues with the word and phrase filter module throwing errors.

  • FIXED: The admin notifier only sending notify messages if the exact content is identifiable.



  • Further improved the word and phrase filters detection algorithms.


  • FIXED: The word and phrase filter whitelist does not properly function under all circumstances.

  • FIXED: The word and phrase filters {BLOCKED_CONTENT} placeholder does not show the entire blocked content (or entire message if non retrievable) under all circumstances, especially with phrases.

  • FIXED: The word and phrase filters modification option does not accurately modify messages.



  • Simplified the anti chat flood config due to some options clashing with each other.

  • Corrected a typo in the misc-lang file for the warned broadcast message. ("{WANRED}" -> "{WARNED}")

  • Reworded the warning broadcast message in misc-lang.


  • FIXED: Anti chat flood modifies messages when it shouldn't.

  • FIXED: Some warn and warner placeholders do not set in the warning broadcast message.

  • FIXED: The legacy data translator/updater does not convert message entries from config.yml to the new misc-lang.yml file.

  • FIXED: Manual warnings do not work if the auto punisher is disabled.

  • FIXED: Various permission recognition issues related to the warn command and the auto punisher.



  • Added an isOp check to the event handlers ensure any modules are not ran on opped players.


  • Players names now show up in tab completion when typing /warn

  • New permission 'chatsentry.manualwarnings.exempt' to be exempt from being manually warned with /warn (Node is a child of the 'chatsentry.bypass.all' permission)


  • FIXED: Manual warn broadcast message placeholders not setting

  • FIXED: Message sent to player when warned placeholders not setting



  • FIXED: The automatic data updater does not preserve float values for config entries.

  • FIXED: The auto punisher warns players even when the module is disabled.

  • FIXED: The anti join flood and auto punisher module shows startup messages in the console that should only be shown when they're enabled when they're disabled.

1.1.1-BETA-01 // Massive changes & improvements

Please report any bugs or issues to kixmc via SpigotMC or the plugins support Discord server.


  • MASSIVE code improvements and rewrites

  • Optimized a loooot of code

  • Reworked entire plugin core code including the file loading and data caching system

  • The plugin now scans all it's files with it's custom config engine to ensure the files contain all valid yml to prevent issues, errors and possible file corruption

  • Reworked internal file managing and processing system. Using custom made config manager api rather than Spigots for extended capabilities and better performance

  • Separate configuration files for modules for improved organization

  • The '/chatsentry clearchat' command is now it's own standalone command /clearchat

  • The '/chatsentry togglechat' command is now it's own standalone command /togglechat

  • The Antibot and Anticlient module has been removed. It's submodules (Anti parrot, Anti join flood, and Anti statue spambot) are now their own full modules

  • Miscellaneous plugin language moved to it's own 'misc-lang.yml' file

  • Plugin storage files (for violations, warnings, and player toggle preferences) are now stored in their own 'storage' folder within the plugin

  • Plugin modules are now stored in their own 'modules' folder within the plugin

  • Renamed a ton of config variables for consistency with the plugins naming conventions

  • Cleaned and rewrote a lot of config comments for improved clarity

  • Reworked everything related to config files with implementation of the plugins custom config engine

  • Redesigned info command contents to be more compact and clear

  • Rewrote/reformatted some hard coded messages like the update notification on join


  • Automated post update checking (to fix having to restart if you update before the Spigot API updates the new version release)

  • Notification option under the admin notifier for the anti join flood module

  • Option for configurable message count per chat-cooldown-in-ticks under chat cooldown configuration

  • Auto punisher module: Automatic per module warning system equip with complete customizable rules for punishments based on per module violations with automatic expiry

  • Manual warning system linked to customizable punishment rules for admins

  • New standalone command '/warn'

  • New standalone command '/warnings' with 3 subcommands to manage warnings in-game.

  • New standalone subcommand '/warnings pardononemanual'

  • New standalone subcommand '/warnings pardonallmanual'

  • New standalone subcommand '/warnings clearmodulewarnings'

  • Plugins commands moved from '/chatsentry' to '/chatsentry help'

  • New subcommand '/chatsentry help' to show the plugins commands neatly organized, shows only the ChatSentry commands the sender has permission for

  • New subcommand '/chatsentry resources' to show the plugins help resources quickly. Shows the wiki link, plugin page link, and support Discord link

  • New 'intelligent' option in anti parrot module that allows the module to utalize extra intelligence algorithms for increased detection with premium hacked clients

  • Greatly improved intelligent anti parrot detection algorithms, most likely the strongest in the market

  • Further improved link and ad blocker detection algorithms

  • Intelligent anti chat flood module: blocks or intelligently modifies the use of excessive repeated characters and very long "words" (ignores player names)

  • Option to [intelligently] replace blocked words / phrases with **s [option to be shortened if excessively long] instead of blocking entirely within the intelligent word and phrase filter module

  • Word/phrase whitelist for the word and phrase filter for less false positive detections with certain words

  • Further improved word and phrase filter detection algorithms

  • The plugin can now fetch and cache offline uuids through Mojangs API when needed instead of always from the player data files

  • Added various (smaller) miscellaneous new options for a lot of the modules


  • FIXED: Link and ad blocker blocks a message if it's just a period ('.')

  • FIXED: Anti parrot fails to register parroting players periodically

Permission changes

  • The bypass node for the cap limiter module has changed from 'chatsentry.excessivecaps.bypass' to 'chatsentry.caplimiter.bypass'

  • The bypass node for the link and ad blocker module has changed from 'chatsentry.linkblocker.bypass' to 'chatsentry.linkandadblocker.bypass'

  • The bypass node for the spam blocker module has changed from 'chatsentry.spam.bypass' to 'chatsentry.spamblocker.bypass'

  • The bpyass node for the chat cooldown module has changed from 'chatsentry.cooldown.bypass' to 'chatsentry.chatcooldown.bypass'

  • The bypass node for the anti statue spambot module has changed from 'chatsentry.statuespambot.bypass' to 'chatsentry.antistatuespambot.bypass'

  • The bypass node to allow chatting while chat is toggled has changed from 'chatsentry.togglechat.bypass' to 'chatsentry.togglechat.exempt'

New permissions

All the new permissions can be found on the wiki page: https://kixmc.gitbook.io/chatsentry-wiki/pac


  • An automatic data updater has been programmed to detect legacy data + module settings and translate all of it to the new format, no need to reconfigure stuff!

1.1.0 // File optimizations


  • Major code optimizations to significantly improve efficiency in preparation for new feature additions and changes.

1.0.9 // Big update: new Antibot & Anticlient protection module with 3 submodules, various improvements, optimizations & more.


  • The config is now parsed to ensure the yml format is valid prior to attempting to load it. If it's not valid, you will be notified in-game and in console when reloading the plugin or when the plugin starts. This is to stop the Spigot from resetting the config file if the yml is ever invalid.

  • Any reload errors shown in the console now additionally show to the player who ran the reload command in-game. (excludes stacktrace due to it's size)

  • Added a new module setting to the spam blocker 'block-repeated-message-similarity-threshold'; If a players message isn't similar to one of the messages on the phrase-whitelist, this individual threshold value is now used instead of the same threshold value as the phrase whitelist similarity value.

  • New Antibot & Anticlient module - blocks various chat spam and join flooding techniques commomly utilized by bots and players using hacked clients. Composed of 3 submodules with their own settings that must be enabled as well in order to function.

  • Added submodule to antibot & anticlient module: Anti parrot - Blocks hacked clients that automatically "parrot" (copy) other players chat messages.

  • Added anti parrot notification and logging option (logging of this violation type is not recommended) under the admin notifer and core settings sections of the config. Anti parrot violations can be looked up with the violation type "anti-parrot-block".

  • Added submodule (and various submodule settings) to antibot & anticlient module: Anti join flood - Blocks more than a set amount of players joining every minute to prevent bot join flooding to lag & crash the server.

  • Updated /an info command output accordingly.

  • The block-chat-on-join-until-movement setting has now been moved under the Antibot & Anticlient module.

  • The block-chat-on-join-until-movement setting now blocks commands as well as messages until movement.

  • The block-chat-on-join-until-movement setting now goes by it's submodules name anti statue spambot. With this, the bypass permission node has been changed to "chatsentry.statuespambot.bypass".

  • The block-chat-on-join-until-movement setting now has a join-command-whitelist command list that allows you to whitelist commands to be ran on join before movement.


  • Cleaned unnecessary config comments or bits within comments that contained outdated information.

  • Rewrote the majority of config comments to improve user friendliness.


  • The block-chat-on-join-until-movement setting now respects the "chatsentry.bypass.all" permission.

  • The commandspy module now respects now respects the "chatsentry.bypass.all" permission.

  • The clearchat command now respects the "chatsentry.bypass.all" permission.

1.0.8 // Command listener support on all modules, compatibility changes, bug fixes, & more

Entries highlighted in bold may require your action after updating to this version.


  • The command listener now works with all applicable ChatSentry's modules! This means all ChatSentry's filtering abilities can be used in commands as well. To enable the command listener, set 'enable-command-listener' to true at the top of the config.

  • Added configurable affected command lists under the Cap Limiter, Spam Blocker, and Chat Cooldown modules as conflictions may arise if all commands are filtered by them. (for example, the spam blocker blocking someone using a warp command twice) It's recommended you set these lists only to your servers private messaging commands. If you want to apply the module to all commands (highly not recommended), the lists can be to "[]".


  • Chat handling system reworked to add compatibility for chat modification plugins that intensely change how chat works such as chat channel plugins. Most plugins similar to the previously mentioned should no longer override ChatSentry's filters and checks.

  • Large portions of code have been optimized and tidied.

  • The 'enable-command-listener' setting in the config is now set to true by default.

  • The 'enable-violations-log' setting in the config is now set to true by default.

  • For consistency with the new command lists, the commandspy command whitelist and blacklist now requires commands to be properly formatted with a "/" at the start.

  • Modified and added some configuration comments for clarity.


  • FIXED: The admin notifier module fails to send notifications to the console (when send-to-console: true) if nobody with admin notifier recipient permissions is online.


  • FIXED: Link and ad blocker no longer respects whitelisted domains.

  • FIXED: Link and ad blocker always displays the first domain in the block message; meaning if one allowed domain and one non-whitelisted domain was present in a message, the whitelisted link would be displayed instead of the non-whitelisted link in the block message.


  • A bunch of mini improvements have been made to link and ad blocker modules code for maximum protection and minimal false positive detections.

  • Admin notifications that come from the link and ad blocker module will now try and section out the domain or ip that was blocked (instead of always just showing the entire message) in the notification for better readability.

  • Added a new 'modify-message' option under the cap limiter module. When set to true, the messages caps will be replaced with lowercase letters and sent. When set to false the detected message will be blocked entirely (like it behaved previous to this update). Defaults to true.

  • Added a new 'send-blocked-message-when-modified' option under the cap limiter module that works with the the 'modify-message' option to allow you to fine tune when the blocked message should be sent.


  • The hex placeholder format is now "&#hexvalue" instead of "&{#hexvalue}" in order to keep consistency with other plugins such as EssentialsX.

  • Added a "{BLOCKED_CONTENT}" placeholder to the 'blocked-link-or-ip-message' message in the config. This allows you to include the domain or ip that was detected in the blocked message. Tip: With this new placeholder, it's recommended you change your 'blocked-link-or-ip-message' to something like '&cThe domain or numeric ip ''&4{BLOCKED_CONTENT}&c'' is not allowed in chat."


  • FIXED: Link and ad blocker detects "Mr. name", "Mrs. name", and "Ms. name" as domains/ips.

  • FIXED: Link and ad blocker detects abbreviated numeric values like 3.4k or 1.2b as domains/ips.

  • FIXED: Link and ad blocker detects some text faces like "o.o" or "-.-" as domains/ips.

  • FIXED: Link and ad blocker on extra sensitivity mode detects any length sequences of periods with spaces ". . . ." as domains/ips.

  • FIXED: Metric instances failing communicate with bStats.

1.0.5 // Hex color support, violation notifications toggle command & more


  • Added support for hex colors! If you're using 1.16 or above, you can use hex values for custom colors in chat with "&{#hexvalue}". Regular preset colorcodes still work. For example: "&{#bc42f5}Custom color message! &dPreset color message!". You can easily find hex values with Googles color picker tool: https://www.google.com/search?q=color+picker

  • Added a new command that allows players to change their violation notification preferences. You can now use "/kcs tvn" or "/kcs toggleviolationnotifs" to toggle off or on seeing violation notifications from the admin notifier module.

Players will need the new permission node "chatsentry.violations.togglenotifs" in order to access the toggle violation notifications command.

  • Added new module options to change the messages for toggling on and off violation notifications under the admin notifier module.

  • Added a new module option to the admin notifier module to remind players with permission when they join if they have admin/violation notifications turned off. This boolean also comes with an option to change the reminder message.


  • Modified (and added) some lookup hard coded messages so they're easier to understand.

  • The plugin prefix is no longer appended to the lookup command usage message.


  • Fixed a few messages not appending the message prefix before the content.


  • A large portion of the link and ad blocker module has been rewritten for better accuracy and efficiency.


  • The link and and ad blocker module has a new "extra-sensitive" option that is enabled by default. When this option is enabled, common exploits to bypass link / ip filters will be blocked. For example, "google(dot)com" and "youtube {D_O_T}com". You can usually safely turn this off you don't lot of advertisers or bots. Since having this on makes the filter extra sensitive, the filter is more liekly to block things when it shouldn't.


  • The link and ad blocker (laab) module now properly distinguishes between links/ips and numeric values such as "1.16.2" or "$12.13". These kinds of values are properly handled now along with detecting and blocking links & numeric ips. Numeric values will not be blocked.

  • Fixed various issues with the laab module not detecting and blocking links when it should.

1.0.3 // New placeholders for messages & optimizations

New Features

  • Additional player placeholders added to the admin notifier module and command spy module. Violation & command spy messages can now display player displaynames with their original color or stripped of their original color; see the config for more info.


  • Optimized portions of various modules code.

1.0.2 // Minor fixes, optimizations, changes, and more.

New Features

  • Added new config option "check-for-updates" to set whether you'd like to be notified when new updates are available.


  • FIXED: '/kcs lookup all' not finding any results, even when violation data is present.


  • Corrected a typo ("violatiions") in a hard coded message within the lookup command.

  • Optimized a large portion of the lookup input parser code further.

  • Improved various sections of the violation lookup engines logic.

  • Lookup results will now display the UUID of the violator in place of their username (instead of "null") if their username is not able to be retrieved via the servers playerdata files.

  • Days are no longer abbreviated as "ds" in lookup results.

1.0.1 // New violation lookup command, bug fixes, and more.


  • The violation logging system has been reworked. violations.txt has been replaced with violations.yml allowing for better data structuring. With this the configurable formats for how violations are logged have been removed from the config, as data is logged in YAML format now.

New features

  • Added a '/kcs lookup ' command that allows violations to be viewed in-game. It utilizes a custom data parsing engine that comes with advanced filtering capabilities based on player, time range, or type (or multiple of of the previously mentioned 'flags'). Name changes are supported as it's UUID based.

Players will need the new permission node "chatsentry.lookup" in order to access the lookup command.

  • Automatic version checking is now active.


  • Data-persistent command aliases now register under the same instance in order to fix multiple instances of command classes being created when they shouldn't (which in some cases broke data-persistence).

  • Modified EventHandler priorities; all necessary handlers are set to HIGHEST now to fix confictions with some custom chat plugins.

  • The link and ad blocker module no longer will block version strings such as "1.15.2".


  • Some config comments tidied for better readability.

  • The word replacer module is no longer case-insensitive.

1.0.0 // Hello world!

Plugin accepted by Spigot and is now available for purchase. 🎉

Last updated