- fix bug causing config to reset on server boot
- updated config dependency to work with 1.20
- fix incorrect help command formatting
- plugin command for velocity now uses brigadier
- updated dependencies
- made bukkit module compatible with folia
- fix errors when using regex expressions in commands
- dropped protocollib support for command list send. If someone goes out of their way to inject their commands like that, all power to them, but that means they're probably nuts.
- made protocollib message on boot a warning. Once again I'm reminding ya'll that it's not supposed to be used unless absolutely necessary.
- fixed a bug causing dump command to replace content of config instead of creating dump file
- added dump subcommand, that allows you to dump all available commands on the server to a file in CommandWhitelist config folder
- velocity version now can tab-complete available commands in add subcommand
- restore the ability to use clickevent and keybind tags in message formatting
Full Changelog:
v2.3.1...v2.3.2
- Change how MiniMessage is shaded into the plugin, hopefully leading to less issues in the future
- Updated MiniMessage
- Velocity version requires build #116 or above. Older versions of velocity are not supported from now on.
Full Changelog:
v2.2.6...v2.3.0
- fixed NoSuchMethodError while tab completing /cw command on spigot servers
Whaaaa? skipped .4?! Yes. Yes it did. What are you gonna do about it?
- Hopefully got rid of protocollib error when server tries to send command list to temporary (not yet logged in) players
- fix ArrayOutOfBounds when tab completing cw command on velocity
- plugin will now display a warning and ignore commands that were placed in subcommands section to prevent errors and unexpected behavior
- Update minimessage format docs link by @rymiel in #49
- Markdown is no longer getting parsed for minimessage formatting due to issues with other tags.
Full Changelog:
v2.2.0...v2.2.1
What's Changed
- fix useProtocolLib by @kforbro in #40
- fix tab complete with useProtocolLib by @kforbro in #41
- protocollib handling now includes command declaration (sending the list of commands to the client)
- updated adventure and relocated to prevent errors with conflicting versions
New Contributors
Full Changelog:
v2.1.1...v2.2.0
Fixed an issue with subcommands not being completed
Plugin has been completely rewritten to fully optimize it and make it so it's easier to add support for different types of server software if need arises. Versions below 2.0 are from now on considered legacy and will not be supported anymore.
Each implementation now has its own jar file, so make sure you're getting the version you want!
Permissions changed! See plugin wiki to not be confused.
Configs from legacy versions are not compatible and will NOT be automatically migrated. You need to do it yourself. It's not that hard, you only need to move some stuff around to conform to the new naming. New naming has been applied to the config so there will be (hopefully) no more confusion about the options and sections. There are also safeguards that will correct you if you do get something wrong, like inputting a subcommand into command list etc 
A HUGE Thank You for all the people who helped to test the new version in the alpha stages and to all people supporting the development of the plugin and giving feedback.
Fixes subcommand blocker for commands that included part of the subcommand.
If you use subcommand blocker, you should update.
Fixed logic still firing when PlayerCommandPreprocessEvent was cancelled by another plugin.
The version skip from 1.7.5 to 1.7.7 is because the previous version (.6) introduced a small bug which this release fixes

From now on I am not actively supporting versions <1.13 (marked as legacy mode when server boots up)
This is the last fix those versions are going to get.
Apparently, somehow, some plugins manage to dispatch player commands without the / on bukkit based servers. CW now can handle that. But seriously, how?
Fixed a bug preventing the plugin from blocking execution of commands in legacy mode.
You can safely skip this if you're not using legacy mode.
This update fixes legacy mode registering wrong events. You can skip this version if you're on server version 1.13+
Some plugins *
cough* essentials *
cough* are adding their tab completions multiple times instead of just once. Proper workaround has been implemented for spigot-based plugin.
Certain plugins don't register their aliases properly and instead make the player execute the main command.
Added use-protocollib-to-detect-commands config option. This will make the plugin use protocollib for command filter instead of built-in event, which seems to fix the issue. If you don't have issues with aliases you don't need to do anything.
The command for reloading config on velocity is /vcw reload
Velocity version is a little bit different (makes more sense) because of the velocity api. There is no "no such command" message as velocity just passes the command to backend server and uses a message from there.
Default group is now always granted and it doesn't use permission anymore, so you don't have to grant default permission on any platform
Subcommand blocker now fails gracefully when it tries to block suggestions that were not registered at all (there is no way of fixing this, if one of your plugins caused errors with commandwhitelist seek to replace it asap!)
Prevented commands beings saved to file multiple times when repeating /cw add command.
Added:
- Ability to add blocked subcommands on spigot servers. If you want bungee/waterfall subcommand blocker PRs are welcome.
- Default messages for config data in case something goes wrong
For blocking subcommands properly the base command needs to be whitelisted.
You need to provide full command string for the subcommand, so for example to block /help about you need to add help about in config.
You might want to regenerate the config to see new sections.
Added commands to manage whitelisted commands in-game
/cw add <group> <command> - adds <command> to whitelist <group>
/cw remove <group> <command> - removes <command> from whitelist <group>
command should be specified without the "/"
Both commands have full support for tab-completions and can be accessed by players with permission commandwhitelist.admin
WARNING: Using those commands will automatically re-save the config, which means it will wipe all changes made in config since last config reload. Make sure to reload your config each time you make changes in the file!
Well, this is awkward...
- Fixed plugin triggering bukkit legacy plugin mode on 1.13+
- No longer compiling protocolib (how did I miss that 0_0)
removed console spam when tab completing in legacy mode
- Removed debug when tab completing in legacy mode
- Fixed commands not being sent at all in legacy mode
Added bStats and improved overall code quality.
Plugin now supports versions 1.8 - 1.12 in
legacy mode.
This means that the plugin supports Spigot 1.8-1.16 and most bungeecord versions now. Thank you for all the feedback and reviews!
If you want tab-completion blocker to work in
legacy mode, you need
ProtocolLib.
Plugin will function virtually the same in legacy mode.
This release adds bungeecord support. Just drop the jar into your bungeecord plugins folder and restart it.
Configuration looks exactly like the spigot version.
There are a couple of things you have to know:
- Plugin on bungee server blocks only bungee commands. To block spigot commands use this plugin on spigot server.
- You need to set bungeecord permissions for groups to work on bungee. (try luckperms)
- To block bungee command tab completion you need to run Waterfall, FlameCord or other waterfall fork.
- Bungee tab completer will not refresh itself on reload, players need to relog to see changes in completion.
Added /commandwhitelist reload (or /cw reload) command. This will load new configuration and refresh the command whtelist for all online players, so no relog is needed to see the changes.
WARNING: If you're updating from earlier versions you need to regenerate the config file for it to work properly!
Plugin should now work on versions 1.13+
Keep in mind I only tested it on 1.15 and 1.16, so no idea how it will do on 1.13 and 1.14
You can safely ignore this update if you're on 1.16 server
Slightly improved command execution filter
Shifted event priorities to block most of the commands, because some of them were getting through the block.
commands can now be put in wHaTeVeRcAsE in config and filter will still work