-
Notifications
You must be signed in to change notification settings - Fork 11
Greetings
Greetings are rule-based conditional messages that fire when players join the server, enter a world, or respawn. Unlike the standard join message (which is the same for everyone), greetings let you send different messages to different players based on their group, permissions, world, spawn point, or first-join status.
- Open
mods/EliteEssentials/greetings.json - Enable the feature in
config.json: setgreetings.enabledtotrue - Edit or add rules in
greetings.json - Run
/eliteessentials reload
Enable greetings in config.json:
{
"greetings": {
"enabled": false
}
}Greetings are disabled by default and won't affect existing servers until you turn them on.
Rules are stored in mods/EliteEssentials/greetings.json. The file is created with example rules on first startup.
{
"rules": [
{
"id": "vip-welcome",
"enabled": true,
"trigger": "server_join",
"broadcast": false,
"conditions": {
"groups": ["vip", "mvp"],
"permissions": [],
"worlds": [],
"spawns": [],
"firstJoin": null
},
"messages": [
"&6&lVIP Welcome!",
"&eWelcome back, {player}! Enjoy your VIP perks."
],
"delaySeconds": 0,
"stopAfterMatch": false,
"showOnce": false
}
]
}| Field | Type | Default | Description |
|---|---|---|---|
id |
string | "" |
Unique identifier for this rule |
enabled |
boolean | true |
Whether this rule is active |
trigger |
string | "server_join" |
When to fire (see Triggers below) |
broadcast |
boolean | false |
When true, message is sent to all online players instead of just the triggering player |
conditions |
object | (none) | Conditions that must match (see Conditions below) |
messages |
list | [] |
Lines to send. Supports color codes and placeholders |
delaySeconds |
int | 0 |
Seconds to wait before sending (0 = immediate) |
stopAfterMatch |
boolean | false |
If true, skip all remaining rules after this one matches |
showOnce |
boolean | false |
If true, only fire once per session even if triggered again |
| Trigger | Description |
|---|---|
server_join |
Player connects to the server |
world_enter |
Player enters or changes to a world |
respawn |
Player respawns after death |
All conditions are optional. When multiple condition types are set, they use AND logic between types and OR logic within lists.
| Condition | Type | Description |
|---|---|---|
groups |
list of strings | Player must be in at least one of these LuckPerms groups |
permissions |
list of strings | Player must have at least one of these permission nodes |
worlds |
list of strings | Current world must match at least one pattern (supports * wildcards) |
spawns |
list of strings | Player arrived at one of these named spawn points (respawn trigger) |
firstJoin |
boolean or null | If set, must match first-join status. null = don't care |
| Placeholder | Description |
|---|---|
{player} |
Player's username |
{displayname} |
Player's display name (nickname if set, otherwise username) |
{server} |
Server name (from motd.serverName config) |
{world} |
Current world name |
{playercount} |
Number of visible online players |
{group} |
Player's primary LuckPerms group |
{spawn} |
Spawn point name (respawn trigger only) |
PlaceholderAPI placeholders are also supported when chatFormat.placeholderapi is enabled.
By default, greeting messages are sent privately to the triggering player only. Setting "broadcast": true on a rule sends the message to all online players instead.
This is useful for VIP/staff join announcements where you want the whole server to see that a special player has joined.
Vanish safety: Broadcast rules are automatically skipped for vanished players, so vanish is never broken by a broadcast greeting.
{
"rules": [
{
"id": "vip-join-announce",
"enabled": true,
"trigger": "server_join",
"broadcast": true,
"conditions": {
"groups": ["vip", "mvp"]
},
"messages": [
"&6[VIP] &e{player} has joined the server!"
]
}
]
}Everyone on the server sees [VIP] PlayerName has joined the server! in gold/yellow when a VIP connects.
You can use both a private welcome and a broadcast announcement for the same group:
{
"rules": [
{
"id": "vip-join-announce",
"enabled": true,
"trigger": "server_join",
"broadcast": true,
"conditions": {
"groups": ["vip"]
},
"messages": [
"&6[VIP] &e{player} has joined the server!"
]
},
{
"id": "vip-welcome",
"enabled": true,
"trigger": "server_join",
"conditions": {
"groups": ["vip"]
},
"messages": [
"&6&lVIP Welcome!",
"&eWelcome back, {player}! Enjoy your VIP perks."
]
}
]
}The VIP sees both the server-wide announcement and their private welcome. Everyone else only sees the announcement.
{
"id": "new-player",
"enabled": true,
"trigger": "server_join",
"conditions": {
"firstJoin": true
},
"messages": [
"&a&lWelcome to the server, {player}!",
"&7Type &e/help &7to get started."
],
"delaySeconds": 2,
"stopAfterMatch": true
}{
"id": "new-player-announce",
"enabled": true,
"trigger": "server_join",
"broadcast": true,
"conditions": {
"firstJoin": true
},
"messages": [
"&a{player} has joined for the first time! Welcome!"
]
}{
"id": "arena-enter",
"enabled": true,
"trigger": "world_enter",
"conditions": {
"worlds": ["pvp_arena", "arena*"]
},
"messages": [
"&cWelcome to the Arena!",
"&7PvP is enabled here. Good luck!"
]
}{
"id": "staff-enter-announce",
"enabled": true,
"trigger": "world_enter",
"broadcast": true,
"conditions": {
"groups": ["admin", "moderator"],
"worlds": ["event_world"]
},
"messages": [
"&9[Staff] &b{player} has entered the event world."
]
}- Greetings run independently from the MOTD system. You can use both, or disable MOTD and use greetings exclusively.
- Greetings run independently from the standard join/quit messages in
joinMsgconfig. Both can be active at the same time. - Broadcast greetings are separate from the standard join message -- a VIP can have both the normal join message and a broadcast greeting.
Greeting rules are reloaded when you run /eliteessentials reload. No server restart required.
EliteEssentials by EliteScouter | GitHub | Report Issues