Что означает ошибка

Чаще всего в логах встречается строка вида:

Internal Exception: io.netty.handler.codec.DecoderException: The received string length is longer than maximum allowed (20 > 16)

Это ошибка сетевого декодера. По смыслу она говорит: пришла строка, которая по формату не проходит проверку сервера, и соединение рвется.

По примерам из практики (и типичному тексту ошибки) чаще всего виноваты:
- неправильный ник (слишком длинный)
- ник с запрещенными символами
- мод/клиентская часть, которая отправляет данные в другом формате

Важная цифра в скобках (X > 16) обычно указывает, что длина ника больше допустимого порога.

Шаг 1. Проверь ник игрока

Если вы подключаетесь к серверу и видите DecoderException с сообщением про длину строки, сделайте так:

  1. Узнайте точный ник игрока из строки лога.
  2. Убедитесь, что ник не длиннее допустимого лимита и не содержит запрещенных символов.
  3. Если ник длинный или с необычными символами, смените его на простой латиницей и без лишних знаков, затем подключитесь снова.

По логам из разборов пользователей ошибка напрямую привязывается к тому, что ник содержит больше символов, чем разрешено.

Частые ошибки

Признак в данных Почему ломает подключение Что сделать
В логе (число > 16) и упоминается длина строки Сервер не может корректно декодировать поле (часто ник) Укоротить ник и убрать спецсимволы
Ник содержит : $ % и похожие знаки Сервер ожидает допустимый формат Поставить ник без запрещенных символов
Ник с кириллицей или нестандартными символами Может не совпасть с ожидаемым набором Использовать латинские буквы/цифры

Шаг 2. Если вы админ: сравните логи и поймайте мод, который портит сетевой формат

Когда ошибка появляется у части игроков, а не у всех, часто виноват mod или несостыковка клиент-сервер.

Что сделать:
1. Попросите игрока прислать клиентский лог и серверный лог на момент подключения (обычно достаточно фрагмента вокруг lost connection).
2. Отключайте моды на стороне сервера по одному, пока ошибка не исчезнет.
3. Если после удаления конкретного mod ошибка пропадает, оставляйте только совместимые версии.

В обсуждениях на тематических форумах встречается схема, когда после отключения модификации проблема пропадает, и в логах после коннекта появляется упоминание конкретного mod.

Шаг 3. Проверь совместимость клиент и server (особенно Forge/моды)

Для сборок Forge критично, чтобы:
- версии Forge совпадали
- версии minecraft и модов совпадали
- на клиенте и сервере стоял один и тот же набор модов (если мод требует синхронизацию)

Если у вас сборка “толстая”, а в логах мало подробностей, действуйте методом исключения: оставляйте минимум модов, затем возвращайте по одному.

Шаг 4. Если проблема похожа на таймаут или чтение

Иногда встречается другая формулировка с io.netty.handler.timeout.ReadTimeoutException. Это уже не про длину строки, а про то, что подключение “зависает” на чтении данных.

Тогда базовые действия такие:
- проверьте загрузку сервера и лаги (сервер может не успевать отвечать)
- проверьте сетевые настройки и стабильность канала
- проверьте, нет ли модов, которые клинят соединение при старте синхронизации

Отдельные темы на техплощадках показывают, что причина может быть именно в таймауте чтения, и чинится настройками/снятием конфликтующих модов.

Когда проблема не в нике

Если ник точно нормальный, а ошибка сохраняется:
- виновата модификация на клиенте или сервере
- у игрока другая конфигурация модов
- модификация отправляет данные не тем способом, который ожидает ваш server

Тогда лучше искать конкретный мод через отключение по одному и сверять набор модов у игрока и у вас.

Полезные ссылки

  • https://forum.mcmodding.ru/threads/oshibki-s-io-netty-handler-codec-decoderexception.33857/
  • https://board.aternos.org/thread/80584-internal-exception-io-netty-handler-codec-decoderexception-the-received-string-l/
  • https://rubukkit.org/threads/internal-exception-io-netty-handler-timeout-readtimeoutexception.105204/