MC Toolkit

Руководства / Серверы и производительность

server-icon.png: точные требования и management API, которым никто не пользуется

64x64, PNG, в корне сервера — ошибётесь хоть в одном из трёх пунктов, и иконка молча не появится. Плюс JSON-RPC management API, пришедший на смену парсингу консоли.

Серверная иконка — самая неумолимая мелкая функция в Minecraft, потому что все варианты провала выглядят одинаково: иконки нет, ошибки нет.

Три требования, все обязательные

  1. Ровно 64×64 пикселя. Не 63, не 128. Сервер не масштабирует.
  2. Формат PNG. Именно PNG, а не переименованный JPG.
  3. Имя server-icon.png, в корне сервера — рядом с server.properties, а не внутри папки мира.

Ошибётесь хоть в одном — сервер запустится как обычно и покажет иконку по умолчанию. Неверный размер или файл, который на самом деле не PNG, всё же пишут одну строку при запуске — Couldn't load server icon — а вот файл с неправильным именем или не на своём месте не логирует ничего. (Если server-icon.png нет вообще, сервер откатывается к собственному icon.png мира, если он есть.)

Что ещё это ломает

  • Чересстрочный PNG. Некоторые редакторы сохраняют чересстрочно по умолчанию; читатель Minecraft это отвергает. Переэкспортируйте без чересстрочности.
  • 16-битная глубина цвета. Сохраняйте как 8 бит на канал.
  • Цветовые профили. Встроенный профиль ICC иногда сбивает парсер. Удаляйте метаданные при экспорте.
  • Прозрачность допустима и корректно отображается в списке серверов.

Сервер читает её один раз

Сервер загружает server-icon.png при запуске и больше никогда. Замена файла на работающем сервере ничего не меняет до перезапуска — поэтому тестирование смены иконки без перезапуска убедит вас, что она не сработала. После перезапуска клиент подхватит новую иконку при следующем обновлении списка серверов.

Management API

Свежие версии сервера предоставляют интерфейс управления JSON-RPC — санкционированную замену парсингу вывода консоли или прикручиванию плагина.

Включите его в server.properties:

management-server-enabled=true
management-server-host=localhost
management-server-port=25585
management-server-tls-enabled=false

TLS включён по умолчанию и требует хранилища ключей (management-server-tls-keystore), так что либо укажите на него, либо — только на localhost — отключите, как выше; с включённым TLS и без хранилища ключей сервер управления не запустится. У порта тоже нет значения по умолчанию (25585 — просто пример).

Затем откройте WebSocket на этот порт, отправив management-server-secret из server.properties как Authorization: Bearer <secret>, и говорите на JSON-RPC:

{ "jsonrpc": "2.0", "id": 1, "method": "minecraft:players" }

Методы покрывают список игроков, статус сервера, allowlist и бан-лист, игровые правила, настройки и пару save/stop. Каждый возвращает структурированный JSON вместо строки текста, которую надо разбирать регуляркой.

Привяжите его к localhost

По умолчанию — localhost, и так должно остаться. Интерфейс не предназначен для выхода в интернет — любой, кто дотянется до него с секретом, может остановить ваш сервер, а секрет надёжен ровно настолько, насколько надёжен ваш server.properties. Открывайте доступ через SSH-туннель или обратный прокси с аутентификацией, если нужен удалённый доступ, и никогда — меняя хост на 0.0.0.0.

Почему это важно

Дашборды, Discord-боты и мониторы аптайма исторически работали, читая лог консоли или используя RCON — и то и другое хрупко. Типизированный API означает, что виджет с числом игроков не сломается, когда строка лога сменит формат.

Конвертируйте любое изображение в соответствующий требованиям server-icon.png и изучайте методы JSON-RPC в Server Icon & API Tools.

Иконка сервера и API →

Другие руководства

Смотреть все →