Ошибка Internal Exception: io.netty.handler.codec.DecoderException в Minecraft обычно появляется при проблемах с сетевыми пакетами во время подключения. Чаще всего это означает, что клиент и сервер “договорились” не так, как ожидалось, или один из модов (или плагинов) отправляет/обрабатывает данные иначе. Из-за этого соединение рвется на этапе чтения пакетов.

Ниже - как быстро понять причину и что именно делать, чтобы найти виновника.

Как читать такие строки в логе

Смысл DecoderException такой: Netty не смог декодировать полученные данные. В конкретных случаях встречаются подсказки.

Примеры типовых формулировок

Фрагмент в логе Что это значит Чаще всего причина
The received string length is longer than maximum allowed (22 > 16) Сервер получил строку длиннее допустимого несовместимость модов/версий, битый/неправильно собранный мод
readerIndex(...) + length(...) exceeds writerIndex(...) Нарушена длина/границы чтения буфера несовместимая модификация протокола, баг в моде, конфликт модов
Internal Exception: ... DecoderException без деталей Netty просто не смог распарсить пакет нужно искать предыдущие строки и искать мод/плагин рядом с моментом коннекта

Если minecraft-сборка работает в одиночной игре, а на сервере падает при коннекте, почти всегда дело в том, что сервер и клиент собирают сетевые пакеты по-разному. Это как раз типичный сценарий для error-ов такого класса: в одиночке нет той же сетевой прослойки и тот же набор данных не прокачивается.

Частые причины

  1. Несовместимые версии клиента и сервера (Forge/Fabric, версия minecraft, конкретные моды).
  2. Один мод только на клиенте или только на сервере.
  3. Багнутый мод, который ломает сетевые пакеты: в логах в момент подключения часто видно, что именно происходило.
  4. Серверные плагины (если речь про Bukkit/Spigot/Paper) или их версии не под вашу сборку Minecraft.
  5. Конфликт модов: один мод корректный, но вместе с другим начинает отправлять данные не так.

В примерах с форумов фигурировали сообщения про несовместимость плагинов и невозможность загрузки jar-файлов, например строки вида “is not compatible with Minecraft … Disabling” и “Could not load … in folder plugins”. Это не Netty напрямую, но такие проблемы часто идут рядом и тоже ломают запуск/сетевую часть сервера.

Пошаговый план: как найти виновника за 30-60 минут

Шаг 1. Проверьте совместимость по версиям

Сверьте три вещи:
- версия minecraft на клиенте и сервере
- версия Forge (или Fabric) на клиенте и сервере
- версии модов

Если сервер и клиент одинаковые по версии, но моды разные - это уже причина.

Шаг 2. Смотрите лог не только на строку Netty

Важны строки до Internal Exception. Полезно искать:
- сообщения о загрузке модов
- первые строки при подключении игрока
- ошибки “Disabling” и “Could not load …”

Практика такая: обычно Netty падает “в конце цепочки”, а виновник находится в логах чуть раньше.

Шаг 3. Уберите моды по половинному делению

Если сборка большая:
1. Выключите на сервере половину модов (или часть клиентских, если вы тестите на паре “клиент-сервер”).
2. Подключите игрока и проверьте, появилась ли error.
3. Оставьте только половину, где проблема осталась.
4. Повторяйте, пока не останется один мод.

Это быстрее, чем “перебирать все руками”.

Шаг 4. Одинаковый список модов на клиенте и сервере

Если мод имеет сетевую часть, он должен совпадать:
- одинаковые версии
- одинаковые моды на клиенте и сервере
- одинаковые зависимости

Если мод работает в одиночке, это не гарантия, что он не ломает пакеты на сервере.

Шаг 5. Проверьте сборку на битые/неправильные файлы

На примерах с серверными логами встречались случаи:
- jar файл не загрузился
- лишнее расширение (например ... .jar.jar)
- неправильное имя файла

Если вы запускаете сервер с модами/плагинами, проверьте, что файлы лежат корректно и не попали “обрезанные” версии.

Если это сервер Bukkit/Spigot/Paper: что делать с плагинами

Если вы видите строки вроде:
- is not compatible with Minecraft ... - try upgrading ...
- Could not load 'plugins/SomePlugin.jar'

тогда сначала исправьте плагины:
1. поставьте версии плагинов под вашу версию minecraft
2. удалите плагины, которые сервер отключает
3. убедитесь, что jar-файлы реально загрузились

После этого повторите тест подключения. Иногда Netty-ошибка приходит как следствие сломанной надстройки, которая вмешивается в протокол или данные.

Типичные ошибки, из-за которых Netty чаще всего “падает”

  • На сервере один набор модов, на клиенте другой.
  • Мод обновили на клиенте, но не обновили на сервере.
  • Частично перенесли модпак и забыли зависимость.
  • Используют мод сборки, который требует конкретную версию Forge и молча ломается при сетевом обмене.
  • Есть конфликт двух модов, который проявляется только на сервере.

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

  • https://forum.mcmodding.ru/threads/oshibki-s-io-netty-handler-codec-decoderexception.33857/
  • https://ru-minecraft.ru/forum/showtopic-14198/
  • https://wiki.vg/ (форматы сетевых протоколов Minecraft и понятия “packets” в целом)