# Customise the server list entry

> Set the name, message of the day, icon and version text players see for your server in their game's server list.

Source: https://docs.coritan.com/proxies/join-addresses/server-list/

In the dashboard:

- /dashboard/proxies/game/…/branding: https://www.coritan.com/dashboard/proxies/game
- /dashboard/proxies/external/…/branding: https://www.coritan.com/dashboard/proxies/external

The edge answers the server list for your join address itself, so you can change what players see there without touching your server. The **Server list** tab of a join address, or of an external server, sets the message of the day (MOTD) while your server is up and while it is down, the icon, the version text and how long the edge reuses your server's answer. Changes also apply at a [custom domain](/proxies/join-addresses/custom-domain/) linked to the join address.

## Before you begin

- The join address is on your [Edge Proxy](https://www.coritan.com/dashboard/proxies/game) list and is not suspended. While it is suspended, the tab shows `This route is suspended` and you cannot save.
- For an external server, the join address must exist. Until Coritan sets it up, the tab shows `Not set up yet` ([How external servers work](/proxies/external-servers/)).
- For an icon, have a PNG file of 64 × 64 pixels, under about 64 KB.

## Change the server list entry

1. In the dashboard, go to [Edge Proxy](https://www.coritan.com/dashboard/proxies/game) and select the join address or external server.
2. Select the **Server list** tab.
3. Change any of these fields:
    - **Server name**: the name the dashboard shows, up to 100 characters. It cannot be empty.
    - **Version string**: the version text the entry carries while your server does not answer, up to 64 characters, such as `Paper 1.21`.
    - **While the server is online**: the MOTD players see while your server answers, in place of the server's own. Leave it empty to show the server's own MOTD.
    - **While the server is offline**: the MOTD players see while your server does not answer. Leave it empty to show the platform's ([What players see](/proxies/join-addresses/#what-players-see)).
    - **Server icon**: select **Upload PNG…** and choose the file. **Clear icon** removes it.
    - **Status cache**: how long the edge reuses your server's answer before it asks again, from `1 second` to `10 seconds`. **Platform default** uses the platform's setting.
4. Check the **Preview** card. Choose **Online** or **Offline** to see the entry in each state. The preview's player count, `12/100`, is only an example.
5. Select **Save changes**.

Each MOTD holds up to 256 characters on two lines. The game shows the first two lines only.

### Colours and styles in the MOTD

The MOTD takes Minecraft's formatting codes: a section sign `§` followed by one character. Select a button under the MOTD to insert a code where the cursor is. A coloured swatch from `0` to `f` inserts a colour, **Bold**, **Italic**, **Underline**, **Strike** and **Obfuscated** insert a style, and **Reset** inserts `§r`, which ends every code before it.

For example, `§6Survival SMP §7| §aSeason 3` shows `Survival SMP` in gold, the bar in grey and `Season 3` in green.

> [!NOTE]
> The preview also colours codes written with `&`, such as `&a`, but the game does not. Players see `&a` as typed, so use `§` codes.

## What players see

Your server's answer and your fields combine like this in a Minecraft Java server list:

| Part of the entry | While your server answers | While it does not answer |
|---|---|---|
| MOTD | **While the server is online**, or your server's own MOTD | **While the server is offline**, or the platform's |
| Icon | **Server icon**, or your server's own icon | **Server icon**, or none |
| Version text | Your server's own version | **Version string**, or the platform's |
| Players | Your server's own count | None |

Java players see the name they gave the server when they added it to their list, so **Server name** does not appear there.

Minecraft Bedrock's server list shows the two MOTDs in the same way. The **Server icon** and the **Version string** do not apply to Bedrock. While your server does not answer, the edge gives Bedrock the **Server name** as the world name.

## Result

The dashboard shows `Branding saved.`, and the caption under the form reads `No unsaved changes.` Players see the new entry the next time their server list refreshes. The **Server list** card on the **Overview** tab shows the new values.

## Troubleshooting

`Enter a server name.`
: You emptied **Server name**. Enter a name.

`The icon must be 64 x 64 pixels (this one is 128 x 128).`
: Resize the image to 64 × 64 pixels and upload it again.

`The icon is too large; keep it under about 64 KB.`
: Save the PNG with fewer colours or more compression, then upload it again.

`The icon must be a PNG.` or `That file is not a PNG image.`
: The file is another format, or a file with a `.png` name that is not a PNG. Export the image as a PNG.

The MOTD shows `&` and a letter
: The game does not read `&` codes. Replace each `&` with `§`.

The version string does not show while the server is up
: The list shows your server's own version while it answers, and the **Version string** only while it does not.

The **Status cache** does not go back to **Platform default**
: The dashboard does not save a change back to **Platform default**. Send `"status_cache_ttl_seconds": null` with the API ([With the API](#with-the-api)).

The server list shows the offline MOTD while players can still join
: **PROXY protocol** is on. The edge sends the header when a player joins, but not when it asks your server for its server list entry, so a server that requires the header does not answer that request. Joins keep working. On an external server, you can turn **PROXY protocol** off on the **Connection** tab and on your server to bring the live entry back ([Connect a server you host elsewhere](/proxies/external-servers/connect-an-external-server/)).

## Related

- [How join addresses work](/proxies/join-addresses/#what-players-see)
- [Use your own domain for a join address](/proxies/join-addresses/custom-domain/)
- [Customise the game proxy messages](/organizations/integrations/game-proxy/)

## With the API

Change the server list entry with `PATCH /api/v1/gameproxy/routes/{route_id}`. `route_id` is the join address's `id` from `GET /api/v1/gameproxy/routes`, or an external server's `route_id` ([How external servers work](/proxies/external-servers/)).

```bash
curl -X PATCH https://api.coritan.com/api/v1/gameproxy/routes/42 \
  -H "Authorization: Bearer $CORITAN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "online_motd": "§6Survival SMP\n§7Season 3 is live",
    "offline_motd": "§cBack soon",
    "version_name": "Paper 1.21",
    "status_cache_ttl_seconds": 5
  }'
```

```json
{"ok": true, "route_id": 42}
```

Send only the fields you change. A field you send as `null` goes back to its default, and so does one you empty with a `clear_*` field.

| Field | Values | Default | What it sets |
|---|---|---|---|
| `display_name` | Up to 100 characters | The subdomain | **Server name** |
| `online_motd` | Up to 256 characters | None: your server's own MOTD | **While the server is online** |
| `offline_motd` | Up to 256 characters | None: the platform's | **While the server is offline** |
| `favicon` | A `data:image/png;base64,` URI of up to 120,000 characters | None | **Server icon** |
| `version_name` | Up to 64 characters | None: the platform's | **Version string** |
| `status_cache_ttl_seconds` | `1`–`10` | None: the platform's | **Status cache** |
| `clear_online_motd` | `true` or `false` | `false` | With `true`, empties **While the server is online**. |
| `clear_offline_motd` | `true` or `false` | `false` | With `true`, empties **While the server is offline**. |
| `clear_favicon` | `true` or `false` | `false` | With `true`, removes the icon. |

The API checks only that `favicon` is a PNG data URI and not too long, so make the image 64 × 64 pixels yourself, as the game expects. A join address that is not on your account answers `404` with `Route not found`. A `favicon` that is too long answers `400` with `Favicon too large (max ~64KB PNG as data URI)`, and one in another format answers `400` with `Favicon must be a data:image/png;base64,... URI`. A value outside its range, such as a `status_cache_ttl_seconds` of `30`, answers `422`.

## API

- `PATCH /api/v1/gameproxy/routes/{route_id}`: Update my route branding (https://docs.coritan.com/api/reference/client/game-proxy/#op-patch-api-v1-gameproxy-routes-route-id)
