Custom Join Messages | AuthMe | PlaceholderAPI | HEX colors & gradients | Much more | [1.9-1.21.7] icon

Custom Join Messages | AuthMe | PlaceholderAPI | HEX colors & gradients | Much more | [1.9-1.21.7] -----

The most feature-packed and highly customizable plugin for join/quit notifications on the market.




- Fixed sound messages not working on servers older than 1.21.3.
----------, Jun 6, 2025

- Added a config option to send private messages when vanishing/unvanishing.
- Optimized the %uniquejoins% placeholder.
----------, May 31, 2025

- 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.
----------, Apr 13, 2025

- 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.
----------, Mar 5, 2025

- 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.
----------, Dec 27, 2024

- 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.
----------, Jun 16, 2024

- Added support for 1.20.5 (no changes needed).
- Added support for Advanced Vanish.
- Fixed private messages being sent when unvanishing.
----------, Apr 28, 2024

-Fixed compatibility with CMI versions newer than 9.7.0.0. Older CMI versions are no longer supported.
----------, Apr 3, 2024

- Added support for basic legacy colour codes when using MiniMessage.
- Fixed blank chat message lines being ignored.
----------, Mar 17, 2024

- Fixed an error when trying to read player locales on non-Paper 1.20.2+ servers.
----------, Feb 24, 2024

- Fixed fake join/quit messages sending when they shouldn't when using VelocityVanish.
----------, Aug 19, 2023

- Added support for 1.20/1.20.1 (no changes required, already compatible).
- Fixed quit messages not working with AuthMe.
----------, Jun 27, 2023

- Fixed the global sound toggle being backwards.
----------, Apr 21, 2023

- 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.
----------, Apr 15, 2023

- Fixed Spigot update checker URL.
----------, Feb 11, 2023

- Fixed some incompatibilities with Java 8.
- Fixed EssentialsX vanish message showing the person who executed the command, not the person who was vanished.
----------, Feb 10, 2023

- 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.
----------, Jan 25, 2023

- Fixed an error in the update checker on < 1.17 servers.
----------, Jan 13, 2023

- 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.
----------, Dec 8, 2022

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.
----------, Nov 14, 2022

Version 16.0.2

Fixed:
- Fixed ranged messages not working.


Changed:
- Compiled against Spigot 1.16.5 & HikariCP-4.0.3.
----------, Apr 10, 2021

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.
----------, Mar 3, 2021

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 :)
----------, Dec 24, 2020

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.
----------, Dec 6, 2020

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.
----------, Dec 3, 2020

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.
----------, Nov 22, 2020

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.
----------, Nov 21, 2020

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.
----------, Nov 9, 2020

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.
----------, Nov 6, 2020

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.
----------, Nov 5, 2020

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.
----------, Nov 5, 2020

Version 15.6.5

Added:
- Support for 1.16.4.
----------, Nov 3, 2020

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.
----------, Oct 29, 2020

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.
----------, Oct 28, 2020

Version 15.6.2

Fixed:
- Issue with formatting color codes in public, non-JSON messages.
----------, Oct 23, 2020

Version 15.6.1

Fixed:
- Error when using JSON.
----------, Oct 19, 2020

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.
----------, Oct 17, 2020

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.
----------, Sep 23, 2020

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.
----------, Sep 7, 2020

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).
----------, Aug 31, 2020

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.
----------, Aug 29, 2020

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.
----------, Aug 26, 2020

Version 15.3.1

Changed:
- Permissions in Permission-Based messages are now properly registered
- Improved performance of closest color matcher
----------, Aug 8, 2020

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
----------, Aug 7, 2020

Version 15.2.3

Fixed:
- /cjm update & /cjm version update checkers not working
----------, Aug 5, 2020

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
----------, Aug 4, 2020

Version 15.2.1

Fixed:
- \n not working (as of 15.2.0)
----------, Aug 4, 2020

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
----------, Aug 4, 2020

Version 15.1.1

Fixed:
- Error when running /cjm with no arguments.
- Error when message is enabled but no messages are provided in file.
----------, Aug 3, 2020

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.
----------, Aug 3, 2020

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.



----------, Aug 2, 2020

Version 14.1.6

- Fixed only the first HEX code working

- Fixed ranged messages only sending to person who joined
----------, Jul 6, 2020

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
----------, Jul 3, 2020

Version 14.1.4

- Heavily optimized code, making .jar smaller as well :p

- Slightly changed default messages
----------, Jul 3, 2020

Version 14.1.3

- Fixed permission based quit messages not working
----------, Jun 30, 2020

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
----------, Jun 30, 2020

Version 14.1.1

- Fixed version 14.1.0 breaking support for all versions <1.16
----------, Jun 29, 2020

Version 14.1.0

- Added support for HEX color codes. The format is: {#123456}
----------, Jun 29, 2020

Version 14.0.1

- Fixed the centering of Join messages reading form First-Join
----------, Jun 28, 2020

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.
----------, Jun 27, 2020

Version 13.3.2

- Fixed PlaceholderAPI not working with quit messages on some MC versions
----------, Jun 8, 2020

Version 13.3.1

- Fixed some issues with PlaceholderAPI not registering on some versions
----------, Jun 7, 2020

Version 13.3

- Fixed /cjm joindate not working (Mojang API updates)
----------, Apr 30, 2020

Version 13.2

- Added new placeholder: %joinamount% Gets the amount of people who have joined the server
----------, Apr 27, 2020

Version 13.1

- Fixed bStats issue
----------, Apr 25, 2020

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
----------, Apr 21, 2020

Version 12.2

- Fixed Private Join Messages being broadcasted
----------, Mar 28, 2020

Version 12.1

- Fixed some typos in "/cjm help"
----------, Mar 27, 2020

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
----------, Mar 27, 2020

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
----------, Mar 17, 2020

Version 11.1

-Recompiled with the correct spigot jar
----------, Mar 12, 2020

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
----------, Mar 11, 2020

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
----------, Feb 21, 2020

Version 9.2

-Fixed default config having an incorrect value (Only for configs generated on version 9.1)
----------, Feb 20, 2020

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.
----------, Feb 20, 2020

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.
----------, Feb 17, 2020

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
----------, Jan 26, 2020

Version 7.1

-Updated messages in console when server is starting
-Added support for bstats.org
----------, Jan 25, 2020

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
----------, Jan 21, 2020

Version 6.1

-Compacted code (made file smaller)
-Plugin now shows incorrect usage if you only type /cjm
----------, Dec 19, 2019

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
----------, Nov 10, 2019

Version 5.0

-Added support for 1.8+
-Cleaned up a little bit of code
----------, Nov 8, 2019

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
----------, Oct 26, 2019

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
----------, Oct 24, 2019

Version 3.0.1

Fixed issue with startup messages
----------, Oct 23, 2019

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.
----------, Oct 22, 2019

Version 2.1
-Added reload command. usage: /cjmreload
----------, Oct 5, 2019

Resource Information
Author:
----------
Total Downloads: 63,644
First Release: Sep 27, 2019
Last Update: Jun 6, 2025
Category: ---------------
All-Time Rating:
34 ratings
Find more info at cjm.insprill.net...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings