server-icon.png: точные требования и API управления, которым никто не пользуется
64x64, PNG, в корне сервера — ошибитесь хоть в одном из трех пунктов, и иконка молча не появится. Плюс JSON-RPC API управления, заменивший парсинг консоли.
Иконка сервера — самая бескомпромиссная из мелких функций Minecraft, потому что любой сбой выглядит одинаково: нет иконки, нет ошибки.
Три обязательных требования
- Ровно 64×64 пикселя. Не 63, не 128. Сервер не изменяет размер.
- Формат PNG. Действительно PNG, а не переименованный JPG.
- Название
server-icon.png, в корне сервера — рядом сserver.properties, а не
внутри папки мира.
Ошибитесь хоть в одном, и сервер запустится нормально, но покажет иконку по умолчанию. При стандартном уровне логирования ничего не будет записано.
Что еще может вызвать проблемы
- Чересстрочный PNG. Некоторые редакторы по умолчанию сохраняют чересстрочные изображения; программа чтения Minecraft их отклоняет. Экспортируйте без чересстрочной развертки.
- 16-битная глубина цвета. Сохраняйте как 8 бит на канал.
- Цветовые профили. Встроенный профиль ICC иногда вызывает сбой парсера. Удаляйте метаданные при экспорте.
- Прозрачность допустима и корректно отображается в списке серверов.
Клиент кэширует иконку
Как только клиент увидел ваш сервер, он сохраняет его иконку. Смена иконки на стороне сервера не обновляет существующие записи — Игрок должен удалить и снова добавить сервер, или дождаться истечения срока действия кэша. Тестирование смены иконки с вашего собственного клиента убедит вас, что она не сработала, хотя на самом деле сработала.
API управления
Последние версии сервера предоставляют интерфейс управления JSON-RPC, который является утвержденной заменой для парсинга вывода консоли или подключения плагина.
Включите его в server.properties:
management-server-enabled=true
management-server-host=localhost
management-server-port=25585
Затем используйте JSON-RPC через этот порт:
{ "jsonrpc": "2.0", "id": 1, "method": "minecraft:players" }
Методы охватывают список Игроков, статус сервера, белый список и список банов, игровые правила (gamerules), настройки, а также пару для сохранения/остановки. Каждый метод возвращает структурированный JSON вместо строки текста, которую вам пришлось бы обрабатывать регулярными выражениями.
Привяжите его к localhost
По умолчанию установлено значение localhost, и оно должно оставаться таким. Интерфейс не предназначен для выхода в интернет — любой, кто получит к нему доступ, может остановить ваш сервер. Если вам нужен удаленный доступ, используйте SSH-туннель или обратный прокси-сервер с аутентификацией, но никогда не изменяйте хост на 0.0.0.0.
Почему это важно
Панели управления, Discord-боты и мониторы доступности исторически работали, читая лог консоли или используя RCON, что является хрупким решением. Типизированный API означает, что виджет количества Игроков не сломается, если изменится формат строки лога.
Преобразуйте любое изображение в соответствующий server-icon.png и изучите методы JSON-RPC в Server Icon & API Tools.