Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details
WARN: this project is on beta mode if you found any issue or bug please report it in our discord server and our staff will review your issue, thanks. discord
NewJoinMessage
Give every player a join and leave message that feels like theirs.
ONE JAR | MINECRAFT 1.8-26.2 | JAVA 8 COMPATIBLE | 11 PLUGIN INTEGRATIONS
NewJoinMessage is a lightweight way to replace plain join and leave notices with personal messages, colors, icons, sounds, and a simple in-game editor.
Version 6.0 brings 11 major plugin integrations - all as soft dependencies that activate automatically when the plugin is installed.
What you can customize

- A different join and leave message for every player
- Classic
&color codes on every supported version - Hex colors on server versions that support them
- A personal icon before the player's name
- Optional join and leave sounds, with old and new sound-name aliases
- Random pools of default messages
- First-join welcome messages and optional fireworks
- Messages disabled in selected worlds
- Vanish-aware broadcasts
- YAML storage by default, with optional MySQL
NEW: 11 Plugin Integrations

All integrations are soft dependencies - they work if the plugin is installed, and gracefully do nothing if not.
| Plugin | Placeholders / Features |
|---|---|
| PlaceholderAPI | All PAPI placeholders (%player_health%, %server_tps%, %vault_eco_balance%, etc.) |
| LuckPerms | %luckperms_prefix%, %luckperms_suffix%, %luckperms_group% |
| EssentialsX | %essentials_nickname%, %essentials_displayname%, %essentials_vanished%, %essentials_afk% |
| Citizens | %citizens_is_npc%, %citizens_npc_name% |
| ProtocolLib | Advanced packet manipulation for custom join/leave packets |
| WorldGuard | %worldguard_regions%, %worldguard_region% - disable/force messages in specific regions |
| Multiverse-Core | %multiverse_world%, %multiverse_world_alias%, %multiverse_world_colored% |
| DiscordSRV | %discordsrv_verified% - send join/leave messages to Discord |
| HolographicDisplays | Temporary holograms at player location on join/leave |
| MiniMessage (Adventure) | Full MiniMessage syntax: <red>text</red>, <gradient:blue:green>text</gradient>, <rainbow>text</rainbow> |
| MVdWPlaceholderAPI | All MVdW placeholders for broader compatibility |
Made to be managed in-game

Players can edit their own settings from the GUI. Staff with permission get an admin panel for browsing players and managing their messages. You can also preview a result immediately instead of reconnecting after every change.
Useful placeholders
| Placeholder | Description |
|---|---|
%player% |
Account name |
%displayname% |
Current display name |
%world% |
Current world |
%online% |
Online player count |
%max_players% |
Server capacity |
%server_name% |
Server name |
%motd% |
Server MOTD |
%server_version% |
Server version |
%time% |
Current time (HH:mm:ss) |
%prefix% / %vault_prefix% |
Vault chat prefix |
PLAYERNAME |
Legacy player-name placeholder |
Commands
| Command | Description |
|---|---|
/njm or /njm gui |
Open the GUI |
/njm set <join|leave> <message> |
Set your message |
/njm clear <all|join|leave> |
Clear your message |
/njm preview |
Preview both messages |
/njm toggle |
Enable or hide your broadcasts |
/njm icon <icon|off> |
Choose an icon |
/njm sound <join|leave> <sound|off> |
Choose a sound |
/njm language |
Choose a language |
/njm info <player> |
Inspect a player's messages |
/njm setplayer <player> <join|leave> <message> |
Edit another player |
/njm reload |
Reload configuration |
Aliases: /mjm, /modernjoinmessage, /newjoinmessage
Main permissions

| Permission | Description |
|---|---|
joinleave.* |
All permissions (OP by default) |
joinleave.admin |
Admin tools and admin GUI |
joinleave.gui |
Player GUI |
joinleave.set.join / joinleave.set.leave |
Personal messages |
joinleave.preview / joinleave.toggle |
Preview and broadcast control |
joinleave.icon / joinleave.sound |
Personal icon and sound |
joinleave.info / joinleave.setplayer / joinleave.clearplayer |
Staff management |
joinleave.reload |
Configuration reload |
Set allow-all-players: true if everyone should be able to customize messages without individual set permissions.
Showcase
Click to view showcase screenshots
Compatibility
The single jar is designed for Spigot/Paper/Folia-compatible servers from Minecraft 1.8 through 26.2. The release jar was tested at both ends of that range: Spigot 1.8.8 on Java 8 and Paper 26.2 on Java 25.
Modern Paper may call it a "legacy plugin" because the jar intentionally does not declare a modern api-version. That warning is harmless and is what allows the same file to load on 1.8-1.12.
Installing or updating
- Back up your current plugin folder.
- Replace the old jar with the new jar.
- Restart the server. Do not use
/reloadfor a jar update.
If NewJoinMessage has no player data yet and finds an older plugins/ModernJoinMessage/data.yml, it imports those messages once during startup.
Found a bug?
Send the server version, Java version, and full relevant console error in the discussion thread or on discord. I would rather see the log and fix the cause than guess.


