server-icon.png: dokładne wymagania i API do zarządzania, którego nikt nie używa
64x64, PNG, w katalogu głównym serwera — pomyl się w którymkolwiek z tych trzech, a ikona po prostu się nie pojawi. Plus API do zarządzania JSON-RPC, które zastąpiło parsowanie konsoli.
Ikona serwera to najbardziej bezlitosna mała funkcja w Minecrafcie, ponieważ każdy błąd wygląda identycznie: brak ikony, brak błędu.
Trzy wymagania, wszystkie obowiązkowe
- Dokładnie 64×64 piksele. Nie 63, nie 128. Serwer nie zmienia rozmiaru.
- Format PNG. Naprawdę PNG, a nie zmieniony JPG.
- Nazwana
server-icon.png, w katalogu głównym serwera — obokserver.properties, a nie w folderze świata.
Pomyl się w którymkolwiek z tych punktów, a serwer uruchomi się normalnie i wyświetli domyślną ikonę. Nic nie zostanie zalogowane na domyślnym poziomie.
Rzeczy, które również to psują
- Przeplatany PNG (Interlaced PNG). Niektóre edytory domyślnie zapisują pliki przeplatane; czytnik Minecrafta je odrzuca. Eksportuj ponownie jako nieprzeplatane.
- 16-bitowa głębia kolorów. Zapisz jako 8-bitową na kanał.
- Profile kolorów. Osadzony profil ICC czasami powoduje problemy z parserem. Usuń metadane podczas eksportu.
- Przezroczystość jest w porządku i renderuje się poprawnie na liście serwerów.
Klient ją buforuje
Gdy klient raz zobaczy Twój serwer, przechowuje jego ikonę. Zmiana jej po stronie serwera nie aktualizuje istniejących wpisów — Gracz musi usunąć i ponownie dodać serwer, lub poczekać, aż pamięć podręczna wygaśnie. Testowanie zmiany ikony z własnego klienta przekona Cię, że nie zadziałała, choć w rzeczywistości zadziałała.
API do zarządzania
Najnowsze wersje serwera udostępniają interfejs zarządzania JSON-RPC, który jest zatwierdzonym zamiennikiem dla parsowania danych wyjściowych konsoli lub dołączania wtyczek.
Włącz go w server.properties:
management-server-enabled=true
management-server-host=localhost
management-server-port=25585
Następnie komunikuj się za pomocą JSON-RPC przez ten port:
{ "jsonrpc": "2.0", "id": 1, "method": "minecraft:players" }
Metody obejmują listę Graczy, status serwera, białą listę i listę banów, zasady gry (gamerules), ustawienia oraz parę zapisz/zatrzymaj. Każda z nich zwraca ustrukturyzowany JSON zamiast linii tekstu, którą musisz parsować za pomocą wyrażeń regularnych.
Powiąż go z localhostem
Domyślnie jest to localhost i tak powinno pozostać. Interfejs nie jest przeznaczony do wystawiania na internet — cokolwiek, co do niego dotrze, może zatrzymać Twój serwer. Udostępnij go poprzez tunel SSH lub odwrotny serwer proxy z uwierzytelnianiem, jeśli potrzebujesz zdalnego dostępu, nigdy nie zmieniając hosta na 0.0.0.0.
Dlaczego to ma znaczenie
Pulpity nawigacyjne, boty Discorda i monitory czasu działania historycznie działały poprzez odczytywanie logów konsoli lub używanie RCON, z których oba są kruche. Typowane API oznacza, że widżet licznika Graczy nie zepsuje się, gdy zmieni się format linii logu.
Konwertuj dowolny obraz na zgodny server-icon.png i przeglądaj metody JSON-RPC w Narzędziach do ikon serwera i API.