Oops... looks like the spiders padded through here
Add products to your cart and remove them from here Lets buyOn this page, you will find all the placeholders you can use inside your MOTD and player count.
These work in the message, the server icon name and every Player Count option. PlaceholderAPI placeholders also work.
A name nobody recognises is left in the message exactly as you wrote it, so a stray { never eats the rest of the line.
Nobody is logged in when a ping arrives, so these come from the last player seen on that address. On a first-ever ping from an unknown address they resolve empty.
| Placeholder | Returns |
|---|---|
{player name} |
Name of the last player from that IP |
{player uuid} |
Their UUID |
{player protocol} |
Client protocol number |
{player version} |
Client version name |
{player hasPlayedBefore} |
true / false
|
{player isBanned} |
true / false
|
{player isWhitelisted} |
true / false
|
| Placeholder | Returns |
|---|---|
{server playersOnline} |
Current player count |
{server playersMax} |
Slot count |
{server host} |
Address the client pinged |
{server whitelistEnabled} |
true / false
|
{server version} |
Server version |
| Placeholder | Returns |
|---|---|
{maintenance maintenanceEnabled} |
true / false
|
{maintenance timer} |
Time left until maintenance ends |
See Maintenance for what puts the server into that state.
{date current} prints the server's clock, and the three comparisons answer true or false so they can be fed into a PlaceholderAPI condition to swap a message around a date.
The results below are what a ping arriving on 24/12/2026 at 18:30 would produce.
| Placeholder | Example result |
|---|---|
{date current} |
24/12/2026 18:30:00 |
{date current dd/MM/yyyy} |
24/12/2026 |
{date current HH:mm} |
18:30 |
{date current EEEE} |
Thursday |
{date current 'Day' D 'of' yyyy} |
Day 358 of 2026 |
{date isBefore 25/12/2026 00:00:00} |
true |
{date isAfter 2026-12-01} |
true |
{date isExact 24/12/2026 18:30:00} |
true |
The pattern after current is a Java date pattern, and anything wrapped in single quotes inside it is printed as written. A pattern that cannot be read falls back to dd/MM/yyyy HH:mm:ss.
The date the three comparisons take is written either as dd/MM/yyyy HH:mm:ss, or as 2026-12-25 for midnight on that day. A date that cannot be read answers false rather than breaking the message.
{date isExact} is true for the whole minute you name, since the seconds are ignored on both sides. A ping landing at 18:30:41 still matches 18:30:00.
Behind a proxy the ping never reaches this server, so the MOTD has to be set in the PhoenixLobby proxy config.yml under motds.motd instead. Everything above works there too, with three differences.
| Placeholder | Returns |
|---|---|
{proxy status <server>} |
Whether that backend is reachable |
{proxy players <server>} |
Players on that backend |
{proxy maxPlayers <server>} |
Slot count of that backend |
{maintenance maintenanceEnabled} and {maintenance timer} take an optional server name on the proxy, so {maintenance timer lobby} answers for that backend rather than the whole network.
{player isBanned}, {player isWhitelisted} and {server whitelistEnabled} have no proxy equivalent and are not available there.
The older ${player name} spelling, with a dollar in front, still resolves, so an existing setup keeps working. New messages should use {player name}.
Oops... looks like the spiders padded through here
Add products to your cart and remove them from here Lets buy