Ping Query Protocol - For Server Lists

Ping Query Protocol - For Server Lists

Implementation of Minecraft Ping protocol for Hytale, so serverlists know your server is online!

223.0 загрузок
Обновлён 13 дней назад

Описание

PingProtocol Minecraft Server List Ping для Hytale

Плагин Hytale, который реализует протокол Minecraft Server List Ping, позволяя клиентам Minecraft запрашивать информацию о вашем сервере Hytale и отображать ее в своем списке серверов.

Как это работает

Этот плагин создает TCP-сервер, который работает вместе с игровым сервером Hytale QUIC (UDP). Ключевой вывод заключается в том, что TCP и UDP являются отдельными протоколами.Таким образом, они могут слушать на одном и том же номере порта без конфликтов.

  • Hytale ServerИспользует протокол UDP/QUIC на порту 5520 (или настроенном порту) для игрового трафика
  • PingProtocol Плагин: Использует TCP на одном и том же номере порта для пинг-запросов Minecraft

Это позволяет клиентам Minecraft пинговать ваш сервер Hytale без переадресации портов или дополнительной конфигурации сети.

Особенности

  • Поддержка протокола Minecraft:

    • Современный протокол (1.7+) со статусом JSON
    • Протокол наследства (1.6) с отформатированными ответами §1
    • Старый протокол (Бета 1.8 - 1.3) поддержка
  • Автоматическая информация сервера:

    • Текущее количество игроков и максимальные игроки
    • Список игроков с именами и UUID
    • Серверная версия из манифеста Hytale (например, «2026.01.13»)
  • Оптимизация производительности:

    • Умное кэширование ответа (1-секундная продолжительность кэширования)
    • Кэш недействителен, когда количество игроков меняется
    • Время отклика суб-10 мс для кэшированных запросов
  • Простая конфигурация:

    • Пользовательский MOTD текст
    • Список скрытых игроков
    • Всегда использует порт игрового сервера (не требуется дополнительная конфигурация)

установка

  1. скачать PingProtocol-1.0.0.jar из выпусков
  2. Поместите его в свой Сервер Hytale модс/ справочник
  3. Запустите свой сервер или тип Загрузка плагина Гитарист: PingProtocol
  4. Настроить в mods/Hytalist_PingProtocol/config.json если это необходимо

конфигурация

Плагин создает config.json файл в Mods/Hytalist_PingProtocol/:

{
"мотд": "",
«ShowPlayerList»: правда
?

Варианты конфигурации

Вариант по умолчанию Описание
мот "" Сообщение дня, отображаемое клиентам Minecraft (пустая строка, если не установлена)
Разработчик:PlayerList истинный Список игроков шоу, когда он парит над количеством игроков

Плагин автоматически:

  • Использует тот же порт, что и ваш сервер Hytale (TCP / UDP может совместно использовать тот же порт)
  • Протокол протокола версии 0 для указания сервера, не относящегося к Minecraft
  • Считывает серверную версию из манифеста Hytale и хэш сборки полос (например, «2026.01.13-dcad8778f» становится «2026.01.13»)

Протокольная поддержка

Современный протокол (Minecraft 1.7+)

Плагин реализует полный современный протокол Server List Ping:

  1. Рукопожатный пакет (0x00): Клиент отправляет версию протокола, адрес сервера, порт и следующее состояние
  2. Запрос статуса (0x00): статус сервера клиентских запросов
  3. Ответ на вопрос о статусе (0x00): Сервер отправляет JSON с версией, плеерами, описанием
  4. Пинг запрос (0x01): Клиент отправляет метку времени
  5. Реакция Pong (0x01): Сервер перекликается с меткой времени и закрывает соединение

Пример ответа JSON:

{
"версия": {
"имя": "2026.01.13",
"Протокол": 0
?
"Игроки": {
"макс": 100,
"онлайн": 5,
"образец":
{
"Имя": "Имя игрока",
"id": "uuid-here"
?
]
?
"Описание": {
Оригинальное название: My Hytale Server
?
?

Протокол о наследии (Minecraft 1.6)

Плагин также поддерживает устаревший протокол ping для старых клиентов:

  • Обнаружить 0xFE 0x01 0xFA Магические байты
  • Отвечает с 0xFF пинковый пакет
  • Формат: §1\0protocol\0version\0motd\0online\0max

Очень старый протокол (Beta 1.8 - 1.3)

Поддерживает самый старый протокол пинг:

  • Обнаружить 0xFE волшебный байт
  • Отвечает с 0xFF пинковый пакет
  • Формат: Mott §online §max

Выступление

Плагин оптимизирован для ответов с низкой задержкой:

  • Ответ кэшированиеРеакции состояния кэшируются в течение 1 секунды
  • Умная инвалидацияКэш недействителен, когда количество игроков меняется
  • Типичные времена отклика:
    • Первый запрос (промах кэша): ~10-50 мс
    • Запросы в кэше: <10 мс
    • Cache избегает дорогостоящих операций, таких как получение полного списка игроков и сериализация JSON на каждом пинге.

Технические детали

Архитектура

Плагин использует Netty (уже доступный на сервере Hytale) для создания TCP-сервера:

  1. PingServerBootstrap управляет сервером Netty
  2. Разработчик MinecraftPingHandlerГосударственный обработчик, который обрабатывает пакеты
  3. Статус кэшОбщий кэш для ответа на статус для минимизации дорогостоящих операций
  4. MinecraftПротокол: Удобства для кодирования / декодирования VarInt и чтения / записи пакетов
  5. StatusResponseКлассы данных для сериализации JSON

Почему это работает

Использование Minecraft Server List Ping TCPПока Hytale использует Куик который пересекает UDP. Поскольку это разные транспортные протоколы, они могут связываться с одним и тем же номером порта:

  • TCP-пакеты, управляемые плагином PingProtocol
  • UDP-пакеты, управляемые QUIC-сервером Hytale

Строительство из источника

./gradlew jar

И будет создан в build/libs/PingProtocol-1.0.0.jar.

устранение неполадок

Не удалось запустить пинг-сервер на порту X

Причина: Еще одна служба TCP использует порт.

Решение:

  • Проверьте, подключен ли другой сервис к порту TCP.
  • Убедитесь, что ваш брандмауэр позволяет подключаться к TCP в порту
  • Плагин использует тот же номер порта, что и Hytale, но на TCP (Hytale использует UDP)

Клиенты Minecraft «Не удается подключиться к серверу»

ПричинаБрандмауэр блокирует соединения TCP или плагин не запущен

Решение:

  • Убедитесь, что плагин успешно запущен в журналах сервера
  • Проверка брандмауэра позволяет TCP-трафик на порт сервера
  • Добавление сервера в формате IP:port в Minecraft

Список игроков не показывает

ПричинаНастройка конфигурации или отсутствие игроков онлайн

Решение:

  • Настройка «ShowPlayerList»: правда в конфигурации
  • Убедитесь, что игроки действительно онлайн на сервере Hytale.
  • Список игроков отображается только тогда, когда CurrentPlayerCount 0

Медленное время отклика пинг

Причина: Кэш не работает или первый запрос

Решение:

  • Первый запрос строит кэш и может занять 10-50 мс
  • Последующие запросы должны быть <10 мс
  • Кэш аннулирует каждую секунду или когда количество игроков меняется
  • Если последовательно медленно, проверьте производительность сервера Hytale

Кредиты

Показать оригинальное описание (English)

PingProtocol - Minecraft Server List Ping for Hytale

A Hytale plugin that implements the Minecraft Server List Ping protocol, allowing Minecraft clients to query your Hytale server information and display it in their server list.

How It Works

This plugin creates a TCP server that runs alongside Hytale's QUIC (UDP) game server. The key insight is that TCP and UDP are separate protocols, so they can both listen on the same port number without conflicts:

  • Hytale Server: Uses UDP/QUIC protocol on port 5520 (or configured port) for game traffic
  • PingProtocol Plugin: Uses TCP on the same port number for Minecraft ping requests

This allows Minecraft clients to ping your Hytale server without any port forwarding or additional network configuration.

Features

  • Full Minecraft Protocol Support:

    • Modern protocol (1.7+) with JSON status responses
    • Legacy protocol (1.6) with §1 formatted responses
    • Very old protocol (Beta 1.8 - 1.3) support
  • Automatic Server Information:

    • Current player count and max players
    • Player list with names and UUIDs
    • Server version from Hytale manifest (e.g., "2026.01.13")
  • Performance Optimized:

    • Smart response caching (1-second cache duration)
    • Cache invalidates when player count changes
    • Sub-10ms response time for cached requests
  • Simple Configuration:

    • Custom MOTD text
    • Show/hide player list
    • Always uses game server port (no extra configuration needed)

Installation

  1. Download PingProtocol-1.0.0.jar from releases
  2. Place it in your Hytale server's mods/ directory
  3. Start your server or type /plugin load Hytalist:PingProtocol
  4. Configure in mods/Hytalist_PingProtocol/config.json if needed

Configuration

The plugin creates a config.json file in mods/Hytalist_PingProtocol/:

{
  "motd": "",
  "showPlayerList": true
}

Configuration Options

Option Default Description
motd "" Message of the Day displayed to Minecraft clients (empty string if not set)
showPlayerList true Show player list when hovering over player count

The plugin automatically:

  • Uses the same port as your Hytale server (TCP/UDP can share the same port)
  • Reports protocol version 0 to indicate a non-Minecraft server
  • Reads the server version from Hytale's manifest and strips build hash (e.g., "2026.01.13-dcad8778f" becomes "2026.01.13")

Protocol Support

Modern Protocol (Minecraft 1.7+)

The plugin implements the full modern Server List Ping protocol:

  1. Handshake Packet (0x00): Client sends protocol version, server address, port, and next state
  2. Status Request (0x00): Client requests server status
  3. Status Response (0x00): Server sends JSON with version, players, description
  4. Ping Request (0x01): Client sends timestamp
  5. Pong Response (0x01): Server echoes timestamp and closes connection

Example JSON response:

{
  "version": {
    "name": "2026.01.13",
    "protocol": 0
  },
  "players": {
    "max": 100,
    "online": 5,
    "sample": [
      {
        "name": "PlayerName",
        "id": "uuid-here"
      }
    ]
  },
  "description": {
    "text": "My Hytale Server"
  }
}

Legacy Protocol (Minecraft 1.6)

The plugin also supports legacy ping protocol for older clients:

  • Detects 0xFE 0x01 0xFA magic bytes
  • Responds with 0xFF kick packet
  • Format: §1\0protocol\0version\0motd\0online\0max

Very Old Protocol (Beta 1.8 - 1.3)

Supports the oldest ping protocol:

  • Detects 0xFE magic byte
  • Responds with 0xFF kick packet
  • Format: motd§online§max

Performance

The plugin is optimized for low-latency responses:

  • Response Caching: Status responses are cached for 1 second
  • Smart Invalidation: Cache is invalidated when player count changes
  • Typical Response Times:
    • First request (cache miss): ~10-50ms
    • Cached requests: <10ms
    • Cache avoids expensive operations like fetching full player list and JSON serialization on every ping

Technical Details

Architecture

The plugin uses Netty (already available in Hytale server) to create a TCP server:

  1. PingServer: Bootstrap and manages the Netty server
  2. MinecraftPingHandler: Stateful handler that processes packets
  3. StatusCache: Shared cache for status responses to minimize expensive operations
  4. MinecraftProtocol: Utilities for VarInt encoding/decoding and packet reading/writing
  5. StatusResponse: Data classes for JSON serialization

Why This Works

Minecraft Server List Ping uses TCP, while Hytale uses QUIC which runs over UDP. Since these are different transport protocols, they can both bind to the same port number:

  • TCP packets → Handled by PingProtocol plugin
  • UDP packets → Handled by Hytale's QUIC server

Building from Source

./gradlew jar

The JAR will be created in build/libs/PingProtocol-1.0.0.jar.

Troubleshooting

"Failed to start ping server on port X"

Cause: Another TCP service is using the port

Solution:

  • Check if another service is bound to the TCP port
  • Ensure your firewall allows TCP connections on the port
  • Note: The plugin uses the same port number as Hytale but on TCP (Hytale uses UDP)

Minecraft client shows "Can't connect to server"

Cause: Firewall blocking TCP connections or plugin not started

Solution:

  • Verify the plugin started successfully in server logs
  • Check firewall allows TCP traffic on the server port
  • Try adding server using IP:port format in Minecraft

Player list not showing

Cause: Config setting or no players online

Solution:

  • Set "showPlayerList": true in config
  • Ensure players are actually online on the Hytale server
  • Player list is only shown when currentPlayerCount > 0

Slow ping response times

Cause: Cache not working or first request

Solution:

  • First request builds the cache and may take 10-50ms
  • Subsequent requests should be <10ms
  • Cache invalidates every second or when player count changes
  • If consistently slow, check Hytale server performance

Credits

Последние версии

PingProtocol-1.1.2.jar

Early Access 20.01.2026 2.1 МБ
Скачать

PingProtocol-1.1.1.jar

Early Access 19.01.2026 2.0 МБ
Скачать

PingProtocol-1.1.0.jar

Early Access 19.01.2026 2.0 МБ
Скачать

PingProtocol-1.0.0.jar

Early Access 16.01.2026 2.0 МБ
Скачать