Your cart is empty
Looks like the spiders padded through here. Pick a plugin and it will show up here. Continue shoppingSet the server list message, icon and player count, and the placeholders they accept.
This module is configured in modules/motd.yml inside the PhoenixLobby folder.
The MOTD is what anyone who has your server saved sees in their list before joining: two lines of text, an icon, and the player count next to them. Open it from Editor > Modules > MOTD.
Everything here is read fresh on every ping, so an edit shows up the next time the list refreshes without a restart.
Behind a proxy the ping never reaches the lobby, so this module stands down and the network motd is served from BungeeCord or Velocity, where the same options live in its config.yml. See MOTD behind a proxy.
With this option, you can edit the message itself. Each entry is one variant of two lines, and one of them is picked at random every time somebody pings the server, so a list of four means four different messages your players can land on. Adding a variant, and editing or removing an existing one, is all done from here.

MOTD (Add MOTD)
With this option, you can change the icon shown next to the message. Drop a 64x64 png into the servericons folder inside the plugin folder and write its name here, without the .png. A larger image is scaled down for you. Leaving it empty keeps the server's own server-icon.png.

MOTD (Server Icon)
This module is configured in modules/motd.yml inside the PhoenixLobby folder, under player-count.
By default the server list shows the real numbers, and hovering them lists a sample of who is online. Every part of that can be overridden or hidden here. Open it from Editor > Modules > MOTD > Player Count.

MOTD (Player Count)
Leaving an option empty keeps the real value, so only what you actually fill in is replaced.
With this option, you can replace the two numbers with free text, which is what a server showing Open! or a queue length in that spot is doing.

Player Count (Player Count Text)
The client only draws text there when it thinks the server is a version it cannot join, so filling this in also puts the red incompatible-version marker on your entry in the list. Leave it empty if you would rather keep the normal numbers.
With this option, you can override the first number. A placeholder that resolves to something other than a number is ignored and the real count is used, which leaves vanished staff out.

Player Count (Online Players)
With this option, you can override the second number, which is otherwise the slot count from server.properties.

Player Count (Max Players)
With this option, you can report the maximum as however many players are online plus this amount, so the server never looks full no matter how busy it gets. It is ignored while Max Players is set, since that one wins.

Player Count (Extra Players)
With this option, you can replace the player sample that appears when the count is hovered with lines of your own. It is the one place in the list where more than two lines of text fit, which is what makes it useful for a rules note or a vote link.

Player Count (Hover Lines)
With this option, you can drop the count from the ping entirely, so nothing is drawn where the numbers usually are.

Player Count (Hide Players)
With this option, you can remove the hover list without touching the numbers, which keeps the count honest while keeping your players' names off it.

Player Count (Hide Hover)
Player Count Text, Online Players, Hover Lines, Hide Players and Hide Hover need Paper or a fork of it, because Spigot's ping event cannot express any of them. On plain Spigot the module says so once on startup and applies what is left: the message, the icon, Max Players and Extra Players.
Every MOTD placeholder works in these options as well. While a maintenance is running, its own player count and hover messages take over when they are turned on.
With this option, you can turn the MOTD off completely, which hands the message, the icon and the count back to the ones in server.properties.

MOTD (Feature State)
The message, the server icon name and every player count option accept placeholders, from the name of whoever is pinging to the current date. 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 |
{server playersOnline} leaves vanished staff out, and on a proxy it is the whole network rather than one backend.
| 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 |
{proxy players <server>} leaves vanished staff out as well, unless that backend has no PhoenixLobby on it to report who is hidden.
{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}.
Your guide to the docs
Ask me anything about Phoenix Lobby. I know these docs inside out, check the latest versions and changelogs, and can read your server logs.
Try asking
Your cart is empty
Looks like the spiders padded through here. Pick a plugin and it will show up here. Continue shopping