Как исправить ошибку «Internal Exception»
1. Понимание природы ошибки
Ошибка Internal Exception: java.io.IOException (или Internal Exception: java.lang.NullPointerException и подобные) — это обобщённое сообщение клиента о разрыве соединения по причине, которую сервер не смог корректно обработать. В логах сервера (latest.log) она почти всегда сопровождается стектрейсом (stack trace). Без анализа логов лечение сводится к гаданию.
Где смотреть логи на proxify.cloud:
- Зайдите в панель proxify.cloud → выберите ваш выделенный сервер → вкладка Console (консоль Proxmox) или подключитесь по SSH.
- Перейдите в директорию инстанса Minecraft (обычно
/var/lib/pterodactyl/volumes/<UUID>/или/home/minecraft/server/, зависит от способа установки). - Файл логов:
logs/latest.log.
2. Подключение к серверу и сбор диагностики
Выполните все шаги от имени пользователя, под которым запущен сервер (обычно minecraft или root в контейнере).
# 1. Подключение по SSH к выделенному серверу proxify.cloud
ssh root@<IP_ВАШЕГО_СЕРВЕРА_PROXIFY>
# 2. Если сервер в контейнере LXC (стандарт для Proxmox), зайдите в него
# Узнайте CTID: pct list
pct enter <CTID>
# 3. Переход в папку сервера (пример для Pterodactyl/Panel)
cd /var/lib/pterodactyl/volumes/<ВАШ_UUID>/
# Или если ставили вручную:
# cd /home/minecraft/server/
# 4. Просмотр последних 100 строк лога с ошибкой
tail -n 100 logs/latest.log
Что искать в логе:
- Строку
Caused by:— она указывает на корневую причину. - Имя мода/плагина в стектрейсе (например,
com.example.mod.ItemRegistry). - Тип исключения:
NullPointerException,IndexOutOfBoundsException,ClassCastException,OutOfMemoryError.
3. Классификация частых причин и исправления
3.1. Несовместимость версий модов/плагинов (Forge/Fabric/Spigot/Paper)
Симптомы: ClassNotFoundException, NoSuchMethodError, IncompatibleModException, ошибки при регистрации предметов/блоков.
Действия:
- Проверьте версию загрузчика (Forge/Fabric) в
server.propertiesили логе запуска:Forge Mod Loader version 47.2.0 for Minecraft 1.20.1. - Сравните версии модов в папке
mods/с требованиями загрузчика и Minecraft. - Удалите подозрительные моды по одному (метод бинарного поиска):
mkdir mods_disabled mv mods/<подозрительный_мод>.jar mods_disabled/ # Перезапуск сервера через панель proxify.cloud (кнопка Restart) - Обновите загрузчик до последней рекомендуемой (Recommended) сборки для вашей версии Майнкрафт.
3.2. Повреждение чанков или сущностей (TileEntity / Entity)
Симптомы: NullPointerException в ChunkMap, EntityTracker, TileEntity, ошибка возникает при заходе конкретного игрока или в конкретном месте.
Инструмент: Minecraft Region Fixer (работает с мирами Java Edition).
# 1. Остановите сервер (обязательно!)
# В панели proxify.cloud: Stop -> Kill (если завис)
# 2. Установка инструмента (нужен Python3)
apt update && apt install -y python3 git
cd /tmp
git clone https://github.com/Fenixin/Minecraft-Region-Fixer.git
cd Minecraft-Region-Fixer
# 3. Сканирование мира (замените world на имя папки вашего мира)
python3 region_fixer.py --scan /var/lib/pterodactyl/volumes/<UUID>/world
# 4. Автоисправление (удаляет битые чанки/сущности, создает бэкап .bak)
python3 region_fixer.py --fix /var/lib/pterodactyl/volumes/<UUID>/world --delete-corrupted
# 5. Если ошибка у конкретного игрока — удалите его playerdata
rm /var/lib/pterodactyl/volumes/<UUID>/world/playerdata/<UUID_ИГРОКА>.dat
rm /var/lib/pterodactyl/volumes/<UUID>/world/playerdata/<UUID_ИГРОКА>.dat_old
3.3. Утечка памяти и OutOfMemoryError (OOM)
Симптомы: Internal Exception: java.lang.OutOfMemoryError: Java heap space или Metaspace. Сервер лагает перед крашем, в консоли Can't keep up!.
Настройка JVM аргументов в панели proxify.cloud:
- Панель proxify.cloud → Ваш сервер → вкладка Startup (или Configuration → Java Settings).
- Поле JVM Arguments (или
JAVA_OPTS). Замените стандартные флаги на оптимизированные для Paper/Spigot/Purpur (пример для 8-16 ГБ RAM):
-Xms8G -Xmx12G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true
Важно: -Xmx не должен превышать 75-80% физической RAM контейнера/VM, оставите место для ОС и оффхип-памяти (Netty, Direct ByteBuffers).
- Сохраните и нажмите Restart в панели.
Диагностика утечки модов (Forge/Fabric):
- Установите мод Spark (в
mods/). - В игре/консоли:
/spark profiler --timeout 30(снимок за 30 сек). - Откройте ссылку из вывода, ищите
Heap UsageиGC Count. Если куча растет линейно без спадов после GC — мод утекает.
3.4. Проблемы с протоколом / пакетами (ProtocolSupport, ViaVersion, Geyser)
Симптомы: Internal Exception: io.netty.handler.codec.DecoderException, Packet ID out of range, ошибки при входе с разных версий клиента.
Решение:
- Обновите ViaVersion, ViaBackwards, ViaRewind, ProtocolSupport до последних версий с GitHub/Modrinth (не CurseForge, там часто устаревшие).
- Проверьте
config.ymlViaVersion:checkforupdates: true,suppress-conversion-warnings: false. - Если используете Geyser/Floodgate (Bedrock кросс-плей):
- Убедитесь, что
bedrock.portвconfig.ymlGeyser не конфликтует сserver-portвserver.properties(должны быть разными). - В панели proxify.cloud → Network (или Allocations) добавьте второй порт для Bedrock (UDP) и пропишите его в Geyser.
- Включите
clone-remote-player-entities: trueвconfig.ymlGeyser, если краши при спавне мобов.
- Убедитесь, что
3.5. Плагины/Моды, ломающие логику игры (NMS, Mixin, ASM)
Симптомы: ClassCastException, IncompatibleClassChangeError, ошибки в net.minecraft.server... или com.mojang... без упоминания конкретного плагина.
Поиск виновника:
- Плагин Spark (см. выше) →
/spark profiler→ вкладка Threads / Call Graph. Ищите методы, потребляющие много CPU или выбрасывающие исключения. - Плагин Timings (встроен в Paper/Purpur):
Откройте ссылку, анализируйте раздел Plugin Timings или Tile Entity / Entity Timings.# В консоли сервера timings on # подождите 5-10 мин или до краша timings paste - Метод «половинного деления»:
- Остановите сервер.
- Переместите половину плагинов/модов в
plugins_disabled/mods_disabled. - Запустите. Если ошибка пропала — виновник в отключенной половине. Повторите до выявления одного файла.
4. Сетевые настройки proxify.cloud (частая причина «Internal Exception: Connection reset»)
Если ошибка массовая у всех игроков одновременно — проблема в сети/файрволе.
Проверка портов в панели proxify.cloud:
- Вкладка Network / Allocations.
- Убедитесь, что порт
25565(или ваш кастомный) имеет статус Active и протокол TCP. - Для Geyser (Bedrock) нужен отдельный аллокация с UDP.
Файрвол внутри Ubuntu (UFW/iptables):
# Проверка статуса ufw status numbered # Разрешение порта Java-сервера (TCP) ufw allow 25565/tcp comment 'Minecraft Java' # Разрешение порта Geyser (UDP) — если нужно ufw allow 19132/udp comment 'Minecraft Bedrock' ufw enableПроверка BungeeCord / Velocity (прокси):
- Если сервер за прокси,
Internal Exceptionчасто значит, что бэкенд упал, а прокси держит соединение. - В
config.ymlVelocity/Bungee:player-info-forwarding: MODERN(Velocity) илиbungeecord: trueвspigot.yml/paper-global.yml. - Логи прокси смотрите отдельно:
tail -f proxy/logs/latest.log.
- Если сервер за прокси,
5. Полная переустановка чистого сервера (последний рубеж)
Если логи чистые, модов нет, а ошибка воспроизводится на ванильном клиенте:
# 1. Бэкап мира и конфигов
tar -czvf backup_$(date +%F).tar.gz world/ server.properties spigot.yml paper-global.yml plugins/ mods/
# 2. Удаление всего, кроме мира и бэкапа
# (ОСТОРОЖНО: проверьте pwd)
rm -rf *.jar libraries/ versions/ plugins/ mods/ config/ logs/ crash-reports/
#
Комментарии (0)