Skip to content

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.

/serverlist                     what is set
/serverlist reload
/serverlist maintenance         swap to the maintenance notice

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.

animation:
  timed: true
  frame-ms: 1500
  moving-gradient: true
  gradient-ms: 3000

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

max-players:
  mode: "above-online"
  fixed: 100
  above-online: 1
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

/serverlist maintenance

Swaps to maintenance.top and maintenance.bottom, and writes the state back to disk so it survives a restart.

In pictures