Как исправить ошибку «Outdated Client»

Причины ошибки

Ошибка «Outdated Client» (устаревший клиент) означает несоответствие протокола клиента и сервера. В Minecraft каждый релиз (и снэпшот) имеет уникальный Protocol Version. Сервер отвергает подключение, если версия протокола клиента не входит в диапазон, поддерживаемый сервером.

На выделенном сервере Ubuntu в панели proxify.cloud (Proxmox VE) чаще всего встречаются три сценария:

  1. Сервер запущен на старой версии ядра (Paper/Spigot/Purpur), а игрок заходит с нового клиента.
  2. Используется прокси (Velocity/BungeeCord) с устаревшим ViaVersion или без него.
  3. Файл server.properties содержит неверный параметр enforce-secure-profile или network-compression-threshold, вызывающий ложное срабатывание.

Ниже — пошаговое устранение для каждого случая.


1. Проверка текущей версии сервера

1.1. Подключение к консоли через proxify.cloud

  1. Откройте панель proxify.cloud.
  2. Выберите нужный выделенный сервер (Dedicated Server) → вкладка Console (noVNC) или подключитесь по SSH:
    ssh root@<IP-вашего-сервера>
    
  3. Перейдите в директорию сервера (стандартный путь на хостинге):
    cd /opt/minecraft/server
    # или, если используете Pterodactyl/Panel внутри VM:
    cd /var/lib/pterodactyl/volumes/<uuid>/server
    

1.2. Определение версии ядра

java -jar server.jar --version 2>&1 | head -5

Пример вывода для Paper:

Paper version git-Paper-1.20.4-488 (MC: 1.20.4)
Protocol version 765

Запишите Protocol version (765 для 1.20.4, 766 для 1.20.5, 767 для 1.20.6, 769 для 1.21, 770 для 1.21.1).

1.3. Сравнение с версией клиента

Откройте лаунчер Minecraft → Installations → выберите профиль → More OptionsVersion. Протокол клиента должен совпадать с серверным или быть выше (если установлен ViaVersion).


2. Обновление ядра сервера (Paper / Purpur / Spigot)

2.1. Остановка сервера

В панели proxify.cloud нажмите Stop или выполните:

systemctl stop minecraft
# или внутри screen/tmux:
screen -S mc -X stuff "stop\n"

2.2. Скачивание актуальной сборки

Рекомендуется Paper (наиболее стабильный для выделенных серверов).

# Переменные для 1.21.1 (протокол 770) — замените при необходимости
MC_VERSION="1.21.1"
BUILD="94" # последняя стабильная на момент написания

cd /opt/minecraft/server
wget -O paper.jar "https://api.papermc.io/v2/projects/paper/versions/${MC_VERSION}/builds/${BUILD}/downloads/paper-${MC_VERSION}-${BUILD}.jar"

2.3. Обновление стартового скрипта

Проверьте start.sh или systemd-unit:

cat > /opt/minecraft/server/start.sh <<'EOF'
#!/bin/bash
cd /opt/minecraft/server
java -Xms4G -Xmx4G -XX:+UseG1GC -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions \
  -XX:+DisableExplicitGC -XX:+AlwaysPreTouch \
  -jar paper.jar --nogui
EOF
chmod +x start.sh

2.4. Запуск и проверка

systemctl start minecraft
# или
./start.sh

В логах должно появиться:

[Server] INFO]: Starting minecraft server version 1.21.1
[Server] INFO]: Protocol version 770

3. Настройка ViaVersion / ViaBackwards / ViaRewind (если нужен доступ со старых клиентов)

Если игроки должны заходить с версий ниже серверной (например, сервер 1.21.1, клиенты 1.19.x — 1.21.x), установите плагины поддержки протоколов.

3.1. Установка плагинов

cd /opt/minecraft/server/plugins
wget -O ViaVersion.jar "https://ci.viaversion.com/job/ViaVersion/lastSuccessfulBuild/artifact/ViaVersion-Platform-Bukkit/target/ViaVersion-5.3.0-SNAPSHOT.jar"
wget -O ViaBackwards.jar "https://ci.viaversion.com/job/ViaBackwards/lastSuccessfulBuild/artifact/ViaBackwards-Platform-Bukkit/target/ViaBackwards-5.3.0-SNAPSHOT.jar"
wget -O ViaRewind.jar "https://ci.viaversion.com/job/ViaRewind/lastSuccessfulBuild/artifact/ViaRewind-Platform-Bukkit/target/ViaRewind-5.3.0-SNAPSHOT.jar"

Для Velocity (прокси) скачивайте -Platform-Velocity артефакты и кладите в plugins/ прокси.

3.2. Конфигурация ViaVersion

cat > /opt/minecraft/server/plugins/ViaVersion/config.yml <<'EOF'
# Минимальная версия клиента, которую пускаем (protocol 759 = 1.19.4)
min-protocol-version: 759
# Блокировать несовместимые пакеты
block-protocols: false
# Отправлять пакеты 1.21.1 клиентам 1.19.x
suppress-conversion-warnings: true
EOF

3.3. Перезагрузка плагинов

# В консоли сервера:
plugman load ViaVersion
plugman load ViaBackwards
plugman load ViaRewind
# или перезапуск сервера
systemctl restart minecraft

4. Исправление server.properties — частые ловушки

4.1. Параметр enforce-secure-profile

С версии 1.19.1 Mojang требует подписанные чат-сообщения. Если игрок использует модифицированный клиент без подписей — сервер кикает с текстом, похожим на «Outdated Client».

sed -i 's/^enforce-secure-profile=.*/enforce-secure-profile=false/' /opt/minecraft/server/server.properties

Важно: на публичных серверах это снижает безопасность чата. Используйте только если понимаете риски.

4.2. Параметр network-compression-threshold

Значение -1 отключает сжатие и может вызывать ошибки хендшейка на некоторых прокси.

sed -i 's/^network-compression-threshold=.*/network-compression-threshold=256/' /opt/minecraft/server/server.properties

4.3. Параметр max-players и server-ip

Убедитесь, что server-ip= пустой (слушает все интерфейсы) и порт совпадает с пробросом в proxify.cloud (Firewall / Port Forwarding).

grep -E '^(server-ip|server-port|max-players)=' /opt/minecraft/server/server.properties

Ожидаемый результат:

server-ip=
server-port=25565
max-players=100

5. Работа за прокси (Velocity / BungeeCord)

Если у вас стоит Velocity на том же выделенном сервере Ubuntu, ошибка часто исходит от прокси, а не от бэкенда.

5.1. Проверка версии Velocity

cd /opt/minecraft/proxy
java -jar velocity.jar --version

Требуется Velocity 3.3.0+ для поддержки протоколов 1.20.5–1.21.1 (Protocol 766–770).

5.2. Обновление Velocity

wget -O velocity.jar "https://versions.velocitypowered.com/velocity-3.3.0-SNAPSHOT-300.jar"

5.3. Настройка velocity.tomlplayer-info-forwarding

Для современных версий (1.19+) обязателен режим MODERN:

player-info-forwarding-mode = "MODERN"
forwarding-secret = "сгенерируйте_свой_секрет_через_openssl_rand_hex_16"

На бэкенде (Paper) в spigot.yml:

settings:
  velocity-support:
    enabled: true
    secret: "тот_же_секрет"
    online-mode: true

5.4. ViaVersion на Velocity (для поддержки старых клиентов)

cd /opt/minecraft/proxy/plugins
wget -O ViaVersion.jar "https://ci.viaversion.com/job/ViaVersion/lastSuccessfulBuild/artifact/ViaVersion-Platform-Velocity/target/ViaVersion-5.3.0-SNAPSHOT.jar"
wget -O ViaBackwards.jar "https://ci.viaversion.com/job/ViaBackwards/lastSuccessfulBuild/artifact/ViaBackwards-Platform-Velocity/target/ViaBackwards-5.3.0-SNAPSHOT.jar"

Перезапустите прокси:

systemctl restart velocity

6. Проверка портов и файрвола в proxify.cloud

Ошибка «Outdated Client» иногда маскирует таймаут хендшейка из-за закрытого порта.

6.1. В панели proxify.cloud

  1. Откройте сервер → NetworkFirewall.
  2. Убедитесь, что правило для TCP 25565 (или ваш порт) имеет Action: ACCEPT и Direction: In.
  3. Если используете Cloudflare Spectrum / TCP Shield — проверьте, что прокси не режет пакеты хендшейка (включите Proxy Protocol v1/v2 в Velocity и настройте proxy-protocol: true в velocity.toml).

6.2. Локальная проверка на Ubuntu

ss -tlnp | grep 25565
# Должно показать LISTEN на 0.0.0.0:25565 или :::25565

# Тест хендшейка с клиента (установите mcstatus):
pip3 install mcstatus
mcstatus <IP> 25565 ping

Успешный ответ содержит version: {name: "1.21.1", protocol: 770}.


7. Диагностика через логи

7.1. Лог сервера

tail -n 200 /opt/minecraft/server/logs/latest.log | grep -i -e "outdated" -e "protocol" -e "handshake" -e "kick"

Типичная строка ошибки:

[Server thread/INFO]: UUID of player Steve is 123e4567-e89b-12d3-a456-426614174000
[Server thread/INFO]: Steve[/192.0.2.1:12