The server list entry¶
The two lines strangers read before they decide whether to join. On a busy list it is the whole pitch, so it gets gradients, animation, and a player count that can flatter you.
Frames¶
Each frame is two lines, in motd.yml:
frames:
- top: "<gradient:#ff8a3c:#ffca28><bold>EMBER</bold></gradient> <#7a8b99>|</#7a8b99> <white>Survival, done properly"
bottom: "<#90a4ae>Claims · Kits · Ranks <#7a8b99>·</#7a8b99> <#66d9a0>%online% online now"
%online%, %max% and %version% all work. PlaceholderAPI deliberately does
not: this runs off the main thread on every ping, including from port
scanners, and most expansions are not safe to call from there.
Dark colours vanish
The server list is drawn on black. dark_gray is #555555 and is very
nearly invisible on it; black and dark_blue are worse. If part of your
MOTD "does not show", that is almost always why. Nothing shipped goes
darker than #7a8b99.
Animation¶
The entry changes every time somebody opens or refreshes the multiplayer list.
timed reads the frame off the clock instead of counting pings. That matters:
a client pings when the multiplayer screen opens and again on refresh, so
counting pings shows one frame and sits there. Off the clock, two people
looking at the same moment see the same thing, and a refresh a few seconds
later genuinely shows a different point in the cycle.
moving-gradient slides every gradient along over time, so the colour washes
across the text. It needs no change to your frames - MiniMessage gradients
already take a phase as their last argument, and it is stamped in from the
clock as the line is built. A gradient you have given an explicit phase keeps
it.
It changes between refreshes, not while you watch
The server list is request and response: the server can only change what it says when a client asks, and a client asks when the screen opens and when somebody presses Refresh. Nothing can push an update into a list that is already drawn.
Every animated MOTD works this way. To make the motion obvious, use a lot
of frames with a small change between each and a low frame-ms - a word
shifted a space or two per frame reads as a marquee as somebody refreshes.
Text that moves in front of a player without them doing anything is the sidebar, the tab header and footer, and boss bars. Those tick.
The player count¶
| Mode | What it shows |
|---|---|
real |
The truth |
fixed |
Always this many slots |
above-online |
Always a little more than are on |
above-online is the one most servers want: the bar is never full, so the
server never looks closed, and it grows as the server does.
The hover¶
hover: replaces the player names shown when somebody hovers the count. Blank
lines are kept as spacing - each line gets its own identity, so two blank ones
do not collapse into one.
Maintenance¶
Swaps to maintenance.top and maintenance.bottom, and writes the state back
to disk so it survives a restart.
In pictures¶
What it looks like in game.
