Skip to content

Status Adapter

The status adapter controls what players see in the Minecraft server list — the MOTD, player count, version, and favicon. Each route can use a different status adapter.

Returns a static, preconfigured status response.

routes:
- hostname: "mc.example.net"
status:
type: fixed
name: "My Network"
description: "\"Welcome to our server!\""
favicon: "data:image/png;base64,..."
enforces_secure_chat: true
preferred_version: 777
min_version: 766
max_version: 1000
FieldTypeDefaultDescription
namestring"Passage"Server name displayed in the version field
descriptionstring"\"Minecraft Server Transfer Router\""MOTD as a JSON text component
faviconstring(built-in icon)Base64-encoded 64x64 PNG (data:image/png;base64,...)
enforces_secure_chatbooltrueWhether the server enforces secure chat
preferred_versioninteger777Protocol version shown in the server list
min_versioninteger0Lowest protocol version reported as compatible
max_versioninteger1000Highest protocol version reported as compatible

The description field uses Minecraft’s JSON text component format:

# Simple text
description: "\"Welcome!\""
# Colored text
description: '{"text":"Welcome!","color":"gold"}'
# Multi-line with formatting
description: '{"text":"","extra":[{"text":"My Network\n","color":"gold","bold":true},{"text":"Join now!","color":"gray"}]}'

Generate a favicon from a 64x64 PNG image:

Terminal window
echo -n "data:image/png;base64,$(base64 -w 0 server-icon.png)"

Some reference points:

VersionProtocol
26.3777
26.2776
26.1775
1.21.11774
1.21.9773
1.21.6771
1.21.2768
1.21767
1.20.5766

766 (1.20.5) is the lowest version that supports the transfer packet. See the protocol version list on the Minecraft Wiki for the current, complete table.


Fetches status from an HTTP endpoint. Responses are cached to avoid hitting the endpoint on every server list ping.

routes:
- hostname: "mc.example.net"
status:
type: http
address: "https://api.example.com/minecraft/status"
cache_duration: 60
FieldTypeDefaultDescription
addressstring"http://localhost:8080"HTTP endpoint URL
cache_durationinteger60Cache duration in seconds

The endpoint must accept a GET request and return JSON matching the Minecraft status response format:

{
"version": {"name": "My Network", "protocol": 777},
"players": {"online": 42, "max": 100, "sample": []},
"description": "{\"text\":\"Welcome!\",\"color\":\"gold\"}",
"favicon": "data:image/png;base64,...",
"enforcesSecureChat": true
}

Only version is required. players, description, favicon and enforcesSecureChat may be omitted or null.


Delegates status generation to an external gRPC service for full control over the response.

routes:
- hostname: "mc.example.net"
status:
type: grpc
address: "http://status-service:50051"
FieldTypeDefaultDescription
addressstring""The gRPC service endpoint URL

The service must implement the Status service from status.proto:

service Status {
rpc GetStatus(StatusRequest) returns (StatusResponse);
}

The StatusRequest includes:

  • client_address (Address): The client’s network address
  • server_address (Address): The address the client connected to
  • protocol (uint64): The client’s Minecraft protocol version

See the gRPC Protocol Reference for full message definitions and the Custom gRPC Adapters guide for implementation examples.


Use CaseRecommended Type
Static server with fixed MOTDfixed
Dynamic player count or rotating MOTDhttp
Complex logic (per-player status, A/B testing)grpc