v3 Changelog


  • Fixed module bypass and exemption permissions not being respected by the plugin

  • Fixed Chat Executor warnings failing to execute if enabled

  • Fixed Chat Executor logging violation type mismatch

  • Fixed some Chat Executor entries using {text} causing issues with particular match strings

  • Fixed some Chat Executor entries using {block} causing issues with sending unrelated messages and commands

  • Updated an outdated comment in the Anti Command Prefix config file

  • Any dashes in Chat Executor flags are now underscores for consistency with action and placeholder formats, make sure you update any {only-chat}s to {only_chat}, and so forth

  • Modified various default config examples for the Chat Executor

  • Fixed the Unicode Remover not working in global chat with compatibility mode off

  • Optimized related to the Anti Statue Spambot module

3.5.0 // Major new abilities for the Chat Executor

Changes & Improvements

  • This update adds major improvements to the Chat Executor. It's highly recommended to regenerate your chat-executor config or take a look at https://wiki.chatsentry.xyz/in-depth-chat-executor-guide-and-entry-examples to see some of its new abilities!

  • In Chat Executor actions, you can now use parts of the players message with:

    • "{arg}" to get the word/argument of the players message (starting from 0): ex "{arg1}" in "FirstWord SecondWord ThirdWord" is "FirstWord", "{arg2}" is "SecondWord", etc.

    • "{multiargs}" to get all the arguments/words after a particular argument/word. Ex "{multiargs2}" of "FirstWord SecondWord ThirdWord FourthWord" is "ThirdWord FourthWord"

You can use multiple {arg} and {multiarg} placeholders in actions. If the requested argument/word is not present, it will simply be blank.

  • Renamed the set-as nodes' "{BLOCK}" option to "{block}" in the Chat Executor

  • Renamed the set-as nodes' "{DONT_MODIFY}" option to "{dont-modify}" in the Chat Executor

  • You can now prefix Chat Executor match: nodes with "{regex}" to set the match type as regex

  • You can now prefix Chat Executor match: nodes with "{text}" to set the match type as plain text

  • Using none of the above prefixes means plain text will be defaulted to

  • You can additionally prefix Chat Executor match: nodes with "{only-chat}" to set the match to only apply to global chat and not commands

  • You can additionally prefix Chat Executor match: nodes with "{only-commands}" to set the match to only apply to commands and not chat

  • Using none of the above prefixes means both global chat and commands be defaulted to

  • Fixed an issue with metrics related to the Chat Executor


  • Significantly improved Link & Ad Blocker detection logic; more fine tuned and intelligent

  • The Link & Ad Blocker will no longer falsely detects most invalid domains such as "chatsentry.c" when using context prediction

  • The Link & Ad Blocker will no longer falsely detects common file names as links (ex. "chatsentry.jar") when using context prediction

  • Fixed Chat Executor notifications and logging not working on entries with '{DONT_MODIFY}' set

3.4.0 // New Chat Executor module, major code improvements, negated node recognition, and more

Changes & Improvements

  • Major code improvements & optimizations across lots of components of the plugin

  • Fixed the unicode remover not respecting compatibility mode on signs

  • Added a new "{player_cmd}:" execution type for the Auto Punisher to be used under punishment actions to execute a command as the violator player

  • The Chat Modifier module has been significantly revamped and renamed to the Chat Executor module. Old chat-modifier configs will be kept for reference for transferring to the new chat-executor config.

  • Major reconstruction to Chat Modifier / Chat Executor entry formats: "message:" nodes are now "execute:" lists that can contain the below action types to perform different actions

  • Added new "{player_msg}:", "{console_cmd}:", "{player_cmd}:", and "{broadcast}:" action types to be used under new Chat Modifier / Chat Executor "execute:" lists

  • Renamed the set-as nodes' "{NONE}" option to "{BLOCK}" in the Chat Modifier / Chat Executor; it still works the same internally and blocks the message from being sent

  • Added a new set-as node "{DONT_MODIFY}" option for the Chat Modifier / Chat Executor that will execute the actions on the execute list, but not modify the message at all

  • Restructured permission checks for all modules & restrictions to check permissions on all players in the case they have a negated / disabled node for a module to apply to them, despite having the bypass all permission. Useful if you want a group/player to bypass all modules/checks except select ones

  • Added an option in the config to disable the functionality of particular module and restrictions' bypass permissions and force modules to apply themselves to players even with bypass permissions or op. It's recommended you do this per-player/group with permissions by simply negating/disabling the bypass permission for modules/restrictions you'd like to apply to them if they have the bypass all permission. However, this option is available as a hard override. This option is also useful for testing purposes if you don't want to have to deop yourself to test a module or restriction

  • Added new & modified some existing comments in the Auto Punisher config

  • Added a check to skip trying to load Chat Executor entries if the entry numbering is invalid

  • Updated various contexts with Chat Modifier to Chat Executor internally and externally

  • Various modifications and additions to startup console messages

  • Various modifications to metrics

3.3.5 // WAPF Substitution intelligence & Chat Modifier patches


  • Fixed the Word & Phrase Filter's substitution intelligence option in some cases invalidating messages that match the block list and should be blocked

  • Fixed the Chat Modifier falsely detecting messages containing colorcodes on some entries

3.3.4 // Context prediction, module intelligence improvements, bug fixes, and more

Changes & Improvements

  • [IN BETA] The main configuration file has a new 'context-prediction' option. Context prediction aims to increase positive detections and decrease false positive detections through acting as a safenet for supported modules with sophisticated logic that dynamically adjusts thresholds and options real-time to react more precisely based on predicted context of messages. Adjustments are temporary & unique to messages; they do not permanently change any config options.

  • Significantly improved the Word & Phrase Filter's substitution intelligence logic

  • Made the Word & Phrase Filter's substitution intelligence character to character set modifiable to add support for more languages and give more potential for customization

  • Fixed the Word & Phrase Filter failing to detect (sufficiently long) blocked numbers

  • Misc. improvements and updates to metrics

  • Potentially fixed a NPE related to sign processing

  • Potentially fixed a NPE related to anvil processing

  • The Link & Ad Blocker no longer falsely detects acronyms

  • Misc. intelligence improvements to the Link & Ad Blocker

3.3.3 // All-around improvements & registration fixes

Changes & Improvements

  • Added a whitelisted commands list to the Word & Phrase Filter that allows commands (including all arguments) to be under all circumstances not processed by the module

  • Improved segments of legacy configuration updation code

  • Misc. other code optimizations and improvements

  • Misc. configuration comment improvements

  • Misc. console message improvements and changes

  • Misc. improvements and updates to metrics

  • Added new metric tables for new and renamed options introduced in recent versions

  • Updated the plugins description value in correlation with the plugin page & wiki in plugin.yml

  • Updated the info commands output in correlation with new and renamed options introduced in recent versions

  • Updated any notices in configs that the feature requires enable-<context>-listener (now process-<context>) in the main config to be enabled

  • Added missing context comments in the Unicode Remover's config file

  • Fixed capitalization of some module names in the info commands output


  • Fixed "process-<context>" options in the main configuration failing to register, thus always defaulting to true

  • Fixed various issues with the command spy module failing to register certain configuration options

  • Fixed registered server commands failing to load on plugin startup (which also caused any processes that relied on them to not work properly)

3.3.2 // Ability to disable the vanilla spam kick & configuration improvements


  • Added an option to disable Minecraft's built in "Kicked for spamming" / "disconnect.spam" kick. There is no way to disable these kicks in the server configuration, however with a workaround ChatSentry can override it and prevent it from occurring. It's recommended to keep this enabled to give the auto punisher full punishment priority. This new option is enabled by default and can be found in the main configuration file.

  • Renamed "enable-context-listener" config options to "process-context". Old preferences are automatically transferred by the plugin.

3.3.1 // Anvil listener & unicode remover patches from 3.3.0


  • Fixed the unicode remover under some circumstances falsely detecting text that is not unicode

  • Fixed the unicode remover conflicting with the new anvil listener when adding enchantments to items

  • Fixed the unicode remover failing to detect unicode on items being renamed in anvils under some circumstances with compatibility mode disabled

  • Fixed a potential NPE related to the new anvil listener integrated with the Word & Phrase Filter, Link & Ad Blocker, and Unicode Remover

3.3.0 // Big update: module support to filter through signs, anvils, and books, cleanlogs command, bug fixes & more

Update Highlights

  • The Word & Phrase Filter, Link & Ad Blocker, and the Unicode Remover modules can now optionally additionally filter through signs, items renamed in anvils, and text written in books for complete complete protection across all contexts of messages! (enabled by default, disable particular contexts in config.yml)

  • New /kcs cleanlogs command! (requires new permission 'chatsentry.cleanlogs'). You can now easily delete old violation log data older than X days (or all violations) to tidy up large amounts of logged violations.

Other improvements & changes

  • Changed the default trigger messages for the Word & Phrase Filter, Link & Ad Blocker, and the Unicode Remover to make sense in the case it is triggered via a different context than chat

  • Improved a bunch of other default lang messages

  • Improved the ignore-detected-registered-commands options logic for the Word & Phrase Filter

  • Changed the default (and recommended) block-similarity-threshold in the Word & Phrase Filter to 0.84

  • Improved various configuration comments for clarity

  • Added new listener options in kcs infos output

  • Updated the dead link for the lookup command's in-depth usage in the lookup commands usage message

  • Changed various console messages for improved clarity

  • Fixed a typo in a hard coded kcs lookup message

  • Modified various hard coded messages related to the lookup command

  • Added the new /kcs cleanlogs command to /kcs helps output

Bug fixes

  • Fixed an issue that caused the Word & Phrase Filter to fail to filter the contents of commands with the command listener enabled

  • Fixed the potential for particular whitelisted entries conflicting with substitution intelligence in the Word & Phrase Filter

  • Fixed the potential for particular whitelisted entries conflicting with blocked entries in the Word & Phrase Filter

  • Fixed the low potential of a NPE error occuring when particular command arguments do not meet the syntax

3.2.0 // Major configuration improvements and other misc. improvements

Changes in this build

  • Improved lots of module configuration comments for better readability and consistency across the plugins files

    • Rewrote almost all module descriptions in config.yml

    • Reorganized module toggles in config.yml to be consistently ordered with the documentation

    • Synchronized repeated comments to be consistent across all files

    • Rewrote portions of various files

  • Improved default affected-commands lists in:

    • anti-chat-flood.yml

    • cap-limiter.yml

    • anti-chat-flood.yml

  • Added an affected-commands list to the auto grammar module to fix command incompatibilities

  • Fixed list indentation across applicable module configurations

  • Improved default commandspy-command-whitelist list in command-spy.yml

  • Updated base command version tag logic

  • Updated the beta console notification message with the new wiki domain

  • Changed the disable-join-flood-check-on-startup option duration from 1 min 30 secs to 2 mins 30 secs

  • Modified the anti statue spambots default join-command-whitelist list

3.1.1 // Unicode remover intelligence improvements

Changes in this build

  • Improved the unicode removers dataset for alphanumeric lookalike unicode. Virtually all alphanumeric lookalike unicode supported by MC chat (and used by clients) is now able to be detected and blocked by the module.

Changes in this build

  • Virtually all modules now support processing any languages, whether the word or phrase filter, anti chat flood, etc!

  • Significant optimizations to the word and phrase filter module

  • Fixed various issues with the word and phrase filter failing to correctly process certain characters

  • Fixed whitelisted word entries in the word and phrase filter with more than one word potentially not being registered properly under some instances

3.0.6 // LAAB false positive fixes & misc. code improvements

Changes in this build

  • Improved various bits of plugin logic for increased intelligence and or efficiency

  • Fixed the LAAB module blocking whitelisted domains in emails

  • Fixed the LAAB module falsely detecting very exact numbers (ex. 1.123456789101112131415)

  • Fixed an issue with a utility method commonly used in command logic that caused the potential to (in rare circumstances) work improperly with particular command arguments

3.0.5 // Invalid lang key output with cswarning command fix, gendebug improvements, config improvements, and more

Changes in this build

  • Fixed cswarning related messages trying to send an invalid lang key from lang.yml

  • Fixed config comments appearing in some sections of csdebug output

  • Modified cs gendebug info outputs and various related console messages

  • Heavily modified comments in the word and phrase filter config, guide moved to the wiki and made more in-depth

  • Updated link in help page 2 output to new domain

  • Updated old wiki domain links in various configuration files to the new domain

  • Updated old wiki domain links in the changelog file to the new domain

  • Modified some configuration file comments for better clarity in various files

  • Added a new default example to the chat modifier

3.0.4 // Tiny change to where metric collection preferences are modified

Changes in this build

  • Removed the collect-anonymized-metrics option from the config file; if you wish to disable metrics, use the bStats global config file

3.0.3 // Config comment improvements, internal message improvements, & metric bug fix

Update Summary

This update adds some improvements to various config file comments, changes some hard coded messages, and fixes an issue with metrics.

Changes in this build

  • Fixed the currently running version comment in config.yml showing the wrong plugin version

  • Removed and or modified various comments in some configuration files for improved clarity

  • Modified the join update notification message

  • Modified the running latest version console notification message

  • Fixed an issue which prevented metrics from sending when the option was enabled

3.0.2 // Default & internal message modifications and other improvements

Update Summary

This update adds improvements to many default plugin messages found in lang.yml as well as some internal hard coded messages and some other misc. improvements. If you wish to use the updated modifiable messages, delete your lang.yml file & run '/chatsentry reload' to generate a fresh lang file.

Changes in this build

  • Modified a lot of default messages in lang.yml for better clarity and appearance

  • Updated '/chatsentry resources' output with the new wiki and plugin site links

  • Updated the update notification message with the new plugin update link

  • Updated plugin.yml plugin website value

  • Updated plugin.yml plugin description value

  • Misc. other internal message modifications

  • Better organized some of the lang.yml structure for consistency throughout the file

  • Fixed a problem with metric collection

  • Improvements to the plugins ability to detect and fail safe in the case there is corrupt / externally modified bytecode

3.0.1 // Less performance toll with lots of internal optimizations & improvements

Update Summary

ChatSentry is speedier than ever! This update adds tons of all-around optimizations and internal code improvements, including but not limited to the core data cacher and sub cachers in all modules, module data processors, the violation indexing engine, and more. Though the performance toll was already low, you can now expect even less of a toll from the plugin. You may also notice faster plugin reloads and startups.

Changes in this build

  • Code improvements and optimizations to almost every internal class

  • Improved the overall file structure of the plugin

  • Updated plugin.yml description value

Bug fixes

  • Fixed the (very small) chance of a NPE error on plugin startup

3.0.0 // The most polished and awesome version of ChatSentry yet!

About this release

Update 3.0.0 introduces major internal reworks and overhauls to how messages are dealt with and sent to users along with a large amount of other various improvements & optimizations.

This version is fully compatible with previous versions*: the plugins auto updater will take care of moving your current messages to the new file without data loss. * legacy update notice: the plugin can no longer version jump on the same config files and folder from versions before 1.1.2 to this version. If you're running a version before 1.1.2, update to 2.7.1, then to this version to prevent config data loss. Or better, do a clean reinstall of the plugin.

ChatSentry's terms of use have been updated; by continuing to use the plugin you confirm you accept them and will abide by them, effective the date of this release. The updated terms can be found here: https://kixmc.gitbook.io/kixmcs-product-resources/

Fun fact: though this update doesn't seem that big, it took over 30 hours of development work! (psst, please consider leaving a review as a thank you, it helps a lot!)

Changes in this build

  • Major changes & optimizations to plugin in-game message handler. All modifiable messages now go through a custom message handler engine instead of individually accessing the message file, allowing for a lot more flexibility and customization.

  • All previously modifiable messages (ex. block messages from modules) have been moved to the new lang.yml file to create a master language file where all modifiable strings can be found and edited. This makes it a ton easier to edit lots of the plugins messages quickly. The plugins auto updater will take care of moving your current messages to the new file without data loss.

  • Whether or not the plugins prefix is appended to message strings is now individually changeable per string, instead of hard coded to some strings and not others.

  • Any lang string in lang.yml can now be disabled entirely by setting it to "".

  • Any lang string in lang.yml now supports multi-line messages with the '{NL}' placeholder.

  • Quality of life feature: if the message-prefix is set to "" and there are other entries starting with "{PREFIX} ", the space after the prefix will be automatically removed to prevent a gap at the start of the message (this is to allow you to keep '{PREFIX} ' on lang entries seamlessly if the message-prefix is disabled).

  • The plugin now collects misc. anonymized data about your server & your use of ChatSentry to help improve the plugin. Data collected includes but is not limited to: whether or not you use particular plugin features (ex. the modules you have enabled), server version, java version, server region, and so forth. ChatSentry never collects data that could identify anybody or your server. All data gets sent and stored anonymously. You can disable the collection of metrics any time by turning metric collection off in the config.yml file.

  • Improvements to event handling and registration system.

  • Optimized the fetching of embedded commonly needed strings.

  • Major improvements to tons of core code and overall project structure.

  • Deleted misc-lang.yml.

  • Improvements to the legacy data updaters algorithms.

  • Deleted large amounts of legacy code related & other code unrelated to the new messaging system.

  • Further optimized various portions of remaining old code related to messaging (after the new system was integrated).

  • Modified various files comments for better clarity.

  • Tweaked various hard coded plugin messages sent in-game for better clarity.

  • Modified some existing console messages sent by the plugin.

  • Added some new console messages sent by the plugin under particular circumstances.

  • Turned a few previously modifiable messages into hard coded messages as editing them didn't make sense.

  • Added the plugins tagline to the console startup message.

  • Added the Chat Modifier module to /kcs info's output.

  • Added the Auto Grammar module to /kcs info's output.

  • Added the update checker to /kcs info's output.

  • Organized /kcs info's output and added pages.

  • Removed the word replacer from /kcs info's output.

  • Corrected the command bracket syntax on a few command usage outputs.

  • Updated /kcs help pages with command aliases for the pardononemanual, pardonallmanual, clearmodulewarnings, toggleviolationnotifs, and togglecommanyspy subcommands.

  • The Word and Phrase Filter module's default similarity threshold is now set to 0.83 on fresh installations of the plugin.

  • The Anti Chat Flood module's default repeated-character-limit is now set to 12 on fresh installations of the plugin.

Bug fixes

  • The tab completer no longer tries to auto complete 'clearchat', 'cc', 'togglechat', and 'tglc' after the plugins base command (which is an invalid command as these commands were made standalone a while back and are no longer ran with the plugins command in front of them)

Last updated