- Fixed sound messages not working on servers older than 1.21.3.
- Added a config option to send private messages when vanishing/unvanishing.
- Optimized the %uniquejoins% placeholder.
- Added support for 1.21.5.
- Added support for
Folia.
- Added update checker support for Hangar builds.
- Fixed the plugin failing to initialize when the filesystem returns an invalid last modified time.
- Fixed title messages not being sent if either the primary title or subtitle are blank.
- Fixed command warning during startup on 1.20.6+ servers.
- Added support for 1.21.3/1.21.4.
- Added support for SayanVanish versions newer than v1.5.0.
-
Removed support for sound messages on servers older than 1.12.
- Added support for 1.20.6 and 1.21 (no changes needed).
- Added support for
SayanVanish.
- Fixed a harmless warning at startup when using AdvancedVanish.
- Added support for 1.20.5 (no changes needed).
- Added support for
Advanced Vanish.
- Fixed private messages being sent when unvanishing.
-Fixed compatibility with CMI versions newer than 9.7.0.0. Older CMI versions are no longer supported.
- Added support for basic legacy colour codes when using MiniMessage.
- Fixed blank chat message lines being ignored.
- Fixed an error when trying to read player locales on non-Paper 1.20.2+ servers.
- Fixed fake join/quit messages sending when they shouldn't when using VelocityVanish.
- Added support for 1.20/1.20.1 (no changes required, already compatible).
- Fixed quit messages not working with AuthMe.
- Fixed the global sound toggle being backwards.
- Fixed a warning when loading on 1.19.4 servers.
- Fixed player visited worlds being updated when world-based messages are disabled.
- Fixed the MiniMessage formatter sometimes trying to load on incompatible servers.
- Fixed the Minedown formatter being allowed to be selected on servers older than 1.12.2.
- Fixed an error when logging chat messages to console on servers older than 1.12.2.
- The legacy formatter is now the default.
- Fixed Spigot update checker URL.
- Fixed some incompatibilities with Java 8.
- Fixed EssentialsX vanish message showing the person who executed the command, not the person who was vanished.
- Added an option to change the text formatter. More information on the wiki.
- Fixed a possible bug where players wouldn't be granted the cjm.default permission.
- Fixed an error in the update checker on < 1.17 servers.
- Added support for 1.19.3 (no changes required, already compatible).
- Added an option to send public chat messages to console.
- Fixed VelocityVanish not being a soft-dependency.
17.0.1 was skipped on Spigot since it only contained a fix for the Modrinth update checker.
CJM 17 is (hopefully) the last complete rewrite of this plugin. It's now written in Kotlin,
fully open-source, and has more features than ever! From this version on, proper
semantic versioning will be followed.
With this update, there are some breaking changes. Most notably,
1.8.x is no longer supported! If you're running 1.8, please continue to use CJM 16. Please note that no support will be given for that version.
If you're unsure of how anything works in the new version, please check out the
wiki.
If you encounter any issues, please report them on the
issue tracker.
If you need help upgrading, join my
Discord server.
Support is done in my free time and is not guaranteed.
- Reformatted configuration files. Your old config will be renamed and a new one will be generated.
- Added support for formatting messages with MineDown. It may differ from what you're used to, so please check out the wiki.
- Added support for world-based messages.
- Added bossbar messages.
- Added sound "messages".
- Added automatic config reloading. Once changes are saved, they will be automatically picked up.
- Added option to not send messages for jailed players (Only supports EssentialsX and CMI jails).
- Added support for VelocityVanish, and EssentialsX's vanish.
- Added 'Min-Players' config option.
- Added 'Max-Players' config option.
- Fixed HEX colour codes not working on 1.17-1.19.x.
- Removed support for 1.8.x servers.
- Removed support for syncing toggle status via MySQL.
- Removed the "cjm debug" command.
- Removed the "cjm joindate" command.
- Removed the "cjm reload" command.
- Removed the "cjm version" command.
- Removed support for tellraw formatted JSON messages. Please use the MineDown format instead.
Version 16.0.2
Fixed:
- Fixed ranged messages not working.
Changed:
- Compiled against Spigot 1.16.5 & HikariCP-4.0.3.
Version 16.0.1
Added:
- Added support for CMI's vanish module.
Fixed:
- Fixed messages not sending for players who bypass AuthMe.
- Fixed subtitles not working.
- Fixed some issues relating to sending messages when players vanish/ unvanish.
Changed:
- MySQL now uses HikariCP for much better connection management. CJM will attempt to download the HikariCP jar, if it fails, it will revert to the old system. You can also set MySQL.Dont-Download-HikariCP to true in the config.yml to stop CJM from downloading it altogether.
Note: This version has config.yml & messages.yml changes. You can view what changed in the config
here and what changed in the messages file
here.
Version 16.0.0
16.0.0 is finally here! This is a very large update, rewriting a lot of code including all the message handling code to be much simpler & more efficient, while also adding some new features!
Fixed:
- Possible issue if a dependency plugin was on the server but not enabled.
Added:
- Actionbar & Title messages.
- Better support for SuperVanish & PremiumVanish.
Changed:
- Replaced %joinamount% placeholder with %uniquejoins%.
- New config & messages file. Your old one will be automatically renamed, with the new ones being generated.
- New MySQL table format.
Removed:
- External addon jars. Addons are now built-in.
As always, if you find any bugs or have any feature suggestions, head over to
my Discord server and create a ticket

Version 15.7.3
Fixed:
- <center> not being removed from messages.
- First-Join section being wrong in newly created messages.yml files.
Notes:
If your messages.yml was generated from version 15.7.0 please compare it to the one on
GitHub to make sure it's correct.
Version 15.7.2
Added:
- Config option to fix empty messages being (sometimes) sent when using EssentialsX. (Add '
Empty-Message-Fix: true' to the bottom of the config.)
Changed:
- Remove the 'CenterMessage' config option. Now just put "<center>" at the start of each message to center it.
- Config files are now included in
/cjm debug.
Note:
This should be the last update before 16.0.0.
Version 15.7.1
Added:
-
/cjm debug command which creates a Hastebin link with some info about the plugin & server. This is mostly to make support easier.
Version 15.7.0
Fixed:
- Various fixes relating to MySQL.
Changed:
- Fully rewrote MySQL support. Any current tables won't work anymore.
- Players are any added to the data file or MySQL database if they change a setting.
- Changed how addons work.*
- Updated AuthMe addon.
Misc:
- Minor code improvements.
Removed:
- Auto re-formatting for the messages.yml to the new format introduced in 15.4.0.
*There is now an
Addons folder in the main CJM folder. Addons will now be put in there instead of with all other plugins. Addons are only loaded on server restart/ reload.
Version 15.6.9
Fixed:
- Memory leak relating to storing what players are online.
- Fixed URL connection not getting closed if the update checker throws an error.
Changed:
- Update checker now uses HTTPS.
- Update checker now uses my updated API.
Version 15.6.8
Changed:
- Updated required version of the AuthMe addon. (can download
here)
- Added version bypass for the AuthMe addon for troubleshooting in the future.
Version 15.6.7
Changed:
-
/cjm reload no longer fully disables & enables the plugin, instead just doing what is actually necessary.
- Reload message is no longer
bold and
italics.
Version 15.6.6
Added:
- Check to ensure the AuthMe addon installed is compatible with the installed version of CJM.
Changed:
- Updated URL to AuthMe addon.
- Better handling of shutting down & starting threads.
Version 15.6.5
Added:
- Support for 1.16.4.
Version 15.6.4
Fixed:
- /cjm reload breaking the plugin.
- Brackets not getting removed from HEX colors.
NOTE:
If you're running CJM 15.6.3 and up, please update the AuthMe addon if you're using it. It can be downloaded
here.
Version 15.6.3
Fixed:
- Messages being disabled by default if the player isn't in the data file & has played before.
Changed:
- Massively improved the creation & handling of threads.
Version 15.6.2
Fixed:
- Issue with formatting color codes in public, non-JSON messages.
Version 15.6.1
Fixed:
- Error when using JSON.
Version 15.6.0
Added:
- Full support for AuthMe! (addon plugin can be found
here).
Fixed:
- Error being throw from incompatibility checkers.
- Some cases where connections & streams wouldn't be closed if an exception was thrown.
Removed:
- Check to see if the player is still online before sending messages.
Other:
- Reduced chance of the same message being show twice with random messages.
- Massively improve
/cjm joindate speed.
-
/cjm joindate will now match for the closest player to what you typed if an exact match was not found.
- If the priority for permission-based messages can't be parsed, it will now get the next highest.
- Big optimization for file manager.
Version 15.5.2
Fixed:
- Possible MySQL bug from prepared statements getting overwritten before executed.
Changed:
- Compiled against Spigot 1.16.3.
- Big under the hood MySQL optimizations & improvments.
- Messages will now be sent if toggle status for player wasn't found in MySQL database.
Version 15.5.1
Added:
- HEX codes can be used in the "text" field of JSON messages again.
-
/cjm version now shows the operating system.
Fixed:
- Fixed JSON messages with multiple "text" fields not working.
- A rare error from the update checker.
Changed:
- The plugin now checks if player is still online before sending message, mostly for if an auth plugin kicks them.
- Tabcomplete now only shows commands you have permission to use.
Version 15.5.0
Added:
- Auto re-formatting for the messages.yml to the new format introduced in 15.4.0. You can just drop in this .jar and it will update your messages.yml to the current version.
Fixed:
- Some issues with colors and JSON messages.
- Centered messages with JSON.
- "\n" breaking JSON messages.
- Possible issue with JSON messages if another plugin overrides the /tellraw command.
- Issue with centered messages and "\n".
- Console messages not splitting on "\n"
- NullPointer when using permission-based join messages
Removed:
- Horribly inaccurate HEX -> pre 1.16 color matcher. It will now just remove the hex code.
Changed:
- How %displayname% gets names. you may need to add a bit of delay if essentials nicknames aren't applying (~250ms).
Version 15.4.0
Added:
- Unknown command message.
Fixed:
- %displayname% not getting users nicknames set by Essentials.
Changed:
- Improved incompatibility check for running regular Bukkit.
- Changed messages.yml format - Compare to the
GitHub wiki for the latest. This was mostly done to make it easier to edit messages and so you can have multiple lines with JSON, or have a mix of regular and JSON messages.
NOTE:
- messages.yml has been updated! Please compare and update yours to the
GitHub wiki. If you don't update the format, no messages will be sent! Also, read the comments at the top of the updated file, it has more instructions on how the new format works.
Version 15.3.2
Fixed:
- Possible issue with permission-based messages if a player joins while the priority calculator is still running (a window of like 5ms).
- The plugin taking upwards of 40 seconds to load if there is no internet connection or if my servers are down.
Added:
- A few incompatibility checks, if a server is running Java 7, MC <=1.7, or CraftBukkit (lemme know if y'all have any issues with these).
Changed:
- When using MySQL, if there is an issue connecting to the database like incorrect login info, it will now also print the stacktrace.
- Clicking on the update message now takes you to the updates page instead of the home page.
Notes:
- Confirmed support for 1.16.2.
- I am aware of the issue with Vanish plugins, if you are vanished and the server restarts or reloads, messages will be sent. You then have to unvanish and revanish again to fix it. I am looking into a fix.
Version 15.3.1
Changed:
- Permissions in Permission-Based messages are now properly registered
- Improved performance of closest color matcher
Version 15.3.0
Added:
- Ability to convert HEX codes to closest regular color for <1.16 servers
Fixed:
- Permission-based messages always trying to get permission from quit section
Changed:
- When using HEX codes, the messages in the console will convert the HEX color to the closest regular color
Version 15.2.3
Fixed:
-
/cjm update &
/cjm version update checkers not working
Version 15.2.2
Fixed:
-
\n only working in public messages
Changed:
- Update checker now uses my API instead of Spigot's so it updates instantly
- Made update message much less intrusive
Version 15.2.1
Fixed:
-
\n not working (as of 15.2.0)
Version 15.2.0
Added:
- Support for JSON messages. Uses the same format as the
/tellraw command. Find more info in the
updated comments.
Fixed:
- Centering private messages not working
Version 15.1.1
Fixed:
- Error when running
/cjm with no arguments.
- Error when message is enabled but no messages are provided in file.
Version 15.1.0
Fixed:
- Custom prefix not applying to
/cjm joindate.
- No help or placeholders message being show if the plugin couldn't fetch an updated one. It will now give a little warning and show the default one.
Changed:
- How permission-based messages are handled. Now only the message with the highest number will be sent. Reference
updated comments for further instructions.
NOTE:
- Updated a few comments in messages.yml. No changes are necessary but you can update them if you'd like. Reference messages.yml can be found
here.
Version 15.0.0
Added:
- Ability to toggle join/ quit message per player (supports MySQL or YAML).
- Option to disable join/ quit messages getting sent to console.
- A bunch of new permission nodes which you can see here.
- Added "no-permission" message.
- Option to change the prefix.
- Ability to use CJM placeholders in other plugins with PlaceholderAPI (info
here)
Fixed:
- Regular '&' style colors not showing in console.
- Ranged messages getting sent to all players.
Changed:
- Message delay is now in milliseconds, instead of ticks.
- The plugin now runs entirely on its own threads, so it will have no impact on server performance whatsoever.
- Optimized how messages are created and sent.
- Now if players don't have the permission "cjm.use" it will not tab complete and will show default Spigot no permission message if executed.
- The output of /cjm help and /cjm placeholders are now fetched from a web server (only when the plugin loads). If you have any issues with this please let me know.
NOTE:
config.yml and messages.yml have been updated! Please reference the GitHub wiki for the updated ones. If you find any bugs please report them here.
Version 14.1.6
-
Fixed only the first HEX code working
-
Fixed ranged messages only sending to person who joined
Version 14.1.5
-
Fixed all private messages reading centered value from wrong config entry (as of 14.1.4)
-
Fixed players without the
bukkit.broadcast permission not seeing messages
Version 14.1.4
- Heavily optimized code, making .jar smaller as well 
- Slightly changed default messages
Version 14.1.3
-
Fixed permission based quit messages not working
Version 14.1.2
-
Fixed update notification not going away
-
Fixed
/cjm version showing incorrect plugin version (as of 14.1.1)
-
Removed some unused code
Version 14.1.1
-
Fixed version 14.1.0 breaking support for all versions <1.16
Version 14.1.0
-
Added support for HEX color codes. The format is:
{#123456}
Version 14.0.1
-
Fixed the centering of Join messages reading form First-Join
Version 14.0.0
CJM 14.0.0 is a full recode, optimizing everything to be more efficient and easier to work on when it comes to updates
-
Added support for 1.16/1.16.1
- Added ability to have different messages based on permission (more info on the GitHub page)
- Fixed a bug when hooking into PAPI
- Fixed %joinamount% returning completely inaccurate numbers
- Removed the ability to edit the config in game. This may return later, not sure.
- Fully reformatted both config.yml and messages.yml. You can find the current file on the GitHub page or delete them and let CJM re generate them.
Version 13.3.2
- Fixed PlaceholderAPI not working with quit messages on some MC versions
Version 13.3.1
- Fixed some issues with PlaceholderAPI not registering on some versions
Version 13.3
- Fixed /cjm joindate not working (Mojang API updates)
Version 13.2
- Added new placeholder: %joinamount% Gets the amount of people who have joined the server
Version 13.1
- Fixed bStats issue
Version 13.0
- Added Java version to "/cjm version"
- Added ability to only send messages within a certain range of the player who joined/ left
- Added radius config options to "/cjm messagetypes"
- Added command "/cjm joindate <player>" to get the date a player joined
- Changed update link so i can change the title on the spigot page
- Changed update checker so now it shows the latest version & your version
- Fixed "/cjm reload" not reloading the messages.yml
- Optimized how commands are run from console, taking away a large portion of unnecessary code
Version 12.2
- Fixed Private Join Messages being broadcasted
Version 12.1
- Fixed some typos in "/cjm help"
Version 12.0
- Added random messages (get new messages.yml from my GitHub or let it regenerate)
- Added support for SuperVanish, PremiumVanish, VanishNoPacket and a few other vanish plugins
- Added support for "\n" in messages to start a new line
- Added "/cjm messagetypes" to view all the different types of messages
- Added "/cjm get <message type> <id>" so you can see what ID corresponds to what message
- Changed "/cjm set" to "/cjm add" and "/cjm remove"
- Cleaned up "/cjm help" so its less spammy (thanks to "/cjm messagetypes")
- Changed Autoreload so now fully reloads the plugin & shows how long it took
- Fixed private join message showing on quit instead of quit message
- Fixed error if there isn't a message for a specific message type
Version 11.2
- Fixed some issues with PlaceHolderAPI
- Fixed error when a players prefix was null
- Added alias /cjm ver
- Fixed incorrect message being sent when when a player runs /cjm disable updatenotification
Version 11.1
-Recompiled with the correct spigot jar
Version 11.0
-Added new file, messages.yml. Now all messages are stored in there and all settings are stored in the config (You can find them on my GitHub and on the Spigot page)
-Added option to disable update notification
-Improved Tabcomplete
-/cjm version now also shows Vault and PlaceholderAPI versions
-/cjm reload now disabled then enables the plugin so if you delete a file and reload the plugin, it will generate a new one
-Fixed some plugin messages having the wrong prefix
-Fixed issues when Vault or PlaceholderAPI wasn't installed
Version 10.0
-New system for tab completion that is
way better than before
-New system for checking if the plugin is up to date
-New command: /cjm update - Checks if plugin is up to date
-Fixed default placeholders not working for Quit messages
-Updated default messages
-Added messages for when CJM hooks into Vault & PAPI
-No config changes
Version 9.2
-Fixed default config having an incorrect value
(Only for configs generated on version 9.1)
Version 9.1
URGENT
-Fixed ALL players being able to use all /cjm commands even without the corresponding permission
-Temporally removed all permission node except cjm.admin
-Tabcomplete is now permission specific. So if a player has cjm.set then only "set" will appear in the tab complete.
-You can no longer set blank messages
-No config Changes.
Version 9.0
-Added support for PlaceholderAPI
-Added new messages for unknown/ incomplete commands
-Removed Vault as a
required dependency
-Fixed issues when running commands from console
-Recompiled with the latest version of Spigot
-No config Changes.
Version 8.0
-Recompiled with 1.15.2
-Added support for Vault prefixes and suffixes
-Added auto tab complete feature
-Fixed issue with bstats.org
-Updated start messages again
-Added new permissions
-Fixed issue where only
%displayname% would work
-Recoded a few things here and there to fix a few bugs and make things more reliable
Edit: Yes i am aware that if you type in a incomplete command it throws an error in console. Just ignore this as I'm working on a fix but wanted to get this update out
Version 7.1
-Updated messages in console when server is starting
-Added support for bstats.org
Version 7.0
-Added update checker
-Fixed incorrect line in /help
-Added /cjm placeholders to view all placeholders
-Added /cjm version to view current version of plugin (mostly for troubleshooting)
-Fixed some bits of code that had some beginner mistakes
-Plugin now shows the first help page if you just type /cjm
Version 6.1
-Compacted code (made file smaller)
-Plugin now shows incorrect usage if you only type /cjm
Version 6.0
New commands:
- cjm (enable/ disable) firstjoinmessage - Enables or disables the first join message
- cjm (enable/ disable) joinmessage - Enables or disables the join message
- cjm (enable/ disable) privatefirstjoinmessage - Enables or disables the private join message
- cjm (enable/ disable) privatejoinmessage- Enables or disables the private join message
- cjm (enable/ disable) quitjoinmessage - Enables or disables the quit message
Split help into 2 pages:
-cjm help 1
-cjm help 2
-Removed incorrect line in config
-Cleaned up code
Version 5.0
-Added support for 1.8+
-Cleaned up a little bit of code
Version 4.1
- Fixed the private messages not working
- Fixed the permission node not working
- Fixed default Minecraft join/ quit message being displayed with the custom one
- Fixed JoinMessage not working if FirstJoinMessage was set to false
Version 4.0
New commands:
- cjm set firstjoinmessage <message > - Sets the first join message
- cjm set joinmessage <message> - Sets the join message
- cjm set privatefirstjoinmessage <message> - Sets the private join message
- cjm set privatejoinmessage <message> - Sets the private join message
- cjm set quitjoinmessage <message> - Sets the quit message
Note: The commands do support color and formatting codes such as &a or &o
Version 3.0.1
Fixed issue with startup messages
Version 3.0
Command Changes:
- cjm reload - reloads the config
- cjm help - open help page
Permissions:
- cjm.use - allows players to use the above commands
Note: If a player is OP, they do not need cjm.use
Cleaned up code
Updated messages when running commands, when the plugin is starting, etc.
Added option to send private messages to players when they join for the first time or have played before.
Version 2.1
-Added reload command. usage: /cjmreload