Anleitungen / Server & Leistung
server-icon.png: die genauen Anforderungen und die Management-API, die niemand nutzt
64x64, PNG, im Server-Wurzelverzeichnis — stimmt eines der drei nicht, erscheint das Icon stillschweigend nicht. Dazu die JSON-RPC-Management-API, die das Auslesen der Konsole ersetzt.
Das Server-Icon ist das kleinste, aber uncompromisingste Feature in Minecraft, denn jeder Fehlerfall sieht identisch aus: kein Icon, keine Fehlermeldung.
Drei Anforderungen, alle verpflichtend
- Genau 64×64 Pixel. Nicht 63, nicht 128. Der Server skaliert nicht.
- PNG-Format. Wirklich PNG, kein umbenanntes JPG.
- Benannt
server-icon.png, im Server-Wurzelverzeichnis — nebenserver.properties, nicht im Weltordner.
Stimmt eines davon nicht, startet der Server normal und zeigt das Standard-Icon. Eine falsche Größe oder eine Datei, die kein echtes PNG ist, protokolliert beim Start eine Zeile — Couldn't load server icon —, aber eine falsch benannte oder falsch platzierte Datei protokolliert gar nichts. (Ohne server-icon.png greift der Server auf das icon.png der Welt zurück, falls vorhanden.)
Was es ebenfalls kaputt macht
- Interlaced PNG. Manche Editoren speichern standardmäßig interlaced; der Leser von Minecraft lehnt das ab. Neu exportieren als non-interlaced.
- 16-Bit-Farbtiefe. Als 8 Bit pro Kanal speichern.
- Farbprofile. Ein eingebettetes ICC-Profil bringt den Parser gelegentlich zum Stolpern. Beim Export Metadaten entfernen.
- Transparenz ist in Ordnung und wird in der Serverliste korrekt dargestellt.
Der Server liest es einmal
Der Server lädt server-icon.png beim Start und nie wieder. Die Datei auf einem laufenden Server zu ersetzen ändert nichts bis zum Neustart — weshalb du beim Testen einer Icon-Änderung ohne Neustart überzeugt sein wirst, dass sie nicht funktioniert hat. Nach einem Neustart übernimmt ein Client das neue Icon bei der nächsten Aktualisierung der Serverliste.
Die Management-API
Neuere Serverversionen bieten eine JSON-RPC-Managementschnittstelle, die sanktionierte Alternative zum Parsen der Konsolenausgabe oder zum Anflanschen eines Plugins.
Aktiviere sie in server.properties:
management-server-enabled=true
management-server-host=localhost
management-server-port=25585
management-server-tls-enabled=false
TLS ist standardmäßig an und benötigt einen Keystore (management-server-tls-keystore), also entweder darauf verweisen oder — nur auf localhost — wie oben abschalten; mit TLS an und ohne Keystore startet der Managementserver nicht. Auch der Port hat keinen Standardwert (25585 ist nur ein Beispiel).
Dann öffne einen WebSocket zu diesem Port, sende das management-server-secret aus server.properties als Authorization: Bearer <secret>, und sprich JSON-RPC:
{ "jsonrpc": "2.0", "id": 1, "method": "minecraft:players" }
Die Methoden decken die Spielerliste, den Serverstatus, Allowlist und Bannliste, Gamerules, Einstellungen sowie ein Save/Stop-Paar ab. Jede liefert strukturiertes JSON statt einer Textzeile, die du mit Regex zerlegen musst.
Binde es an localhost
Der Standard ist localhost und dabei sollte es bleiben. Die Schnittstelle ist nicht dafür gedacht, ins Internet zu zeigen — wer sie mit dem Secret erreicht, kann deinen Server stoppen, und das Secret ist nur so sicher wie deine server.properties. Für Fernzugriff über einen SSH-Tunnel oder einen Reverse-Proxy mit Authentifizierung bereitstellen, niemals indem der Host auf 0.0.0.0 geändert wird.
Warum das wichtig ist
Dashboards, Discord-Bots und Uptime-Monitore haben bisher die Konsolenausgabe gelesen oder RCON verwendet, beides ist fragil. Eine typisierte API bedeutet, dass ein Widget für die Spielerzahl nicht kaputtgeht, wenn eine Log-Zeile ihr Format ändert.
Konvertiere ein beliebiges Bild in ein konformes server-icon.png und durchstöbere die JSON-RPC-Methoden in den Server Icon & API Tools.