- Версия ядра сервера
- 1.21+
Всем привет
Нужна помощь с очень странной проблемой на Minecraft 1.21.11.
Кратко:
при включённом vanilla locator bar у игроков периодически происходит disconnect / Network Protocol Error. По клиентским логам видно, что клиент получает waypoint UPDATE, но у него нет соответствующего waypoint в локальной Map, из-за чего происходит NPE и disconnect.
Отключать locator bar как решение не хочу, потому что это важная PvE-фича сервера. Хочу понять первопричину и нормальный способ исправления.
Связка:
Проблемный backend:
Paper 1.21.11 build 131
Пример версии:
Paper version 1.21.11-131-ver/1.21.11@6d5b910
Build date: 2026-05-03
Непроблемный backend:
Paper 1.21.11 build 69
Пример версии:
Paper version 1.21.11-69-main@94d0c97
Build date: 2025-12-30
То есть версия Minecraft одинаковая — 1.21.11, но Paper build разный.
Velocity:
Velocity 3.4.0 build 566
Плагины на проблемном backend:
Также был самописный WaypointHotfix, который пытался блокировать waypoint-пакеты. Он уменьшал количество вылетов, но полностью проблему не решал. Есть подозрение, что такой подход может сам создавать рассинхрон, если блокируется TRACK, а UPDATE проходит.
Суть проблемы
Когда gamerule locatorBar=true, особенно после:
начинается сильный поток ClientboundTrackedWaypointPacket.
После этого часть игроков получает disconnect.
Серверный лог часто показывает просто:
<player> lost connection: Disconnected
или на Velocity:
Connection reset by peer
В вашем подключении произошла внутренняя ошибка
Но клиентский лог показывает настоящую причину.
Фрагмент из latest.log клиента:
[Render thread/WARN]: Unsupported Waypoint update operation: class net.minecraft.class_11200$class_11201
[Render thread/ERROR]: Failed to handle packet class_11173[operation=UPDATE, waypoint=net.minecraft.class_11200$class_11201@139422ca], disconnecting
java.lang.NullPointerException: Cannot invoke "net.minecraft.class_11200.method_70766(net.minecraft.class_11200)" because the return value of "java.util.Map.get(Object)" is null
[Render thread/WARN]: Client disconnected with reason: Ошибка сетевого протокола
По смыслу это выглядит так:
Клиент получил waypoint UPDATE
↓
Клиент попытался найти этот waypoint в Map
↓
Map.get(...) вернул null
↓
Клиент получил Network Protocol Error
↓
Disconnect
То есть клиент получает UPDATE для waypoint, которого у него нет. Либо TRACK до клиента не дошёл, либо waypoint уже был UNTRACKed/очищен после телепорта или смены мира.
На Velocity в этот момент обычно видно только reset:
Exception caught while decoding frame for /<ip>:<port>
io.netty.channel.unix.Errors$NativeIoException: recvAddress(..) failed with error(-104): Connection reset by peer
[connected player] <player> has disconnected: В вашем подключении произошла внутренняя ошибка.е
если нужны будут подробные логи - скину
Нужна помощь с очень странной проблемой на Minecraft 1.21.11.
Кратко:
при включённом vanilla locator bar у игроков периодически происходит disconnect / Network Protocol Error. По клиентским логам видно, что клиент получает waypoint UPDATE, но у него нет соответствующего waypoint в локальной Map, из-за чего происходит NPE и disconnect.
Отключать locator bar как решение не хочу, потому что это важная PvE-фича сервера. Хочу понять первопричину и нормальный способ исправления.
Связка:
- Velocity + Paper backends
- Backend-серверы стоят на отдельном VDS
- Velocity и часть других backend-серверов стоят на другом VDS
- Панель: Pterodactyl
Проблемный backend:
Paper 1.21.11 build 131
Пример версии:
Paper version 1.21.11-131-ver/1.21.11@6d5b910
Build date: 2026-05-03
Непроблемный backend:
Paper 1.21.11 build 69
Пример версии:
Paper version 1.21.11-69-main@94d0c97
Build date: 2025-12-30
То есть версия Minecraft одинаковая — 1.21.11, но Paper build разный.
Velocity:
Velocity 3.4.0 build 566
Плагины на проблемном backend:
- FancyNpcs
- GSit
- packetevents
- Spartan
- Themis
- ViaVersion
- ViaBackwards
- Simple Voice Chat
- Multiverse-Core
- WorldGuard
- LuckPerms
- Warp/Home/Spawn/RTP плагины
- и другие обычные плагины
Также был самописный WaypointHotfix, который пытался блокировать waypoint-пакеты. Он уменьшал количество вылетов, но полностью проблему не решал. Есть подозрение, что такой подход может сам создавать рассинхрон, если блокируется TRACK, а UPDATE проходит.
Суть проблемы
Когда gamerule locatorBar=true, особенно после:
- /warp
- /home
- /spawn
- /rtp
- /tpaccept
- /tp
- смены мира
- respawn
- join
- elytra / резкого перемещения
начинается сильный поток ClientboundTrackedWaypointPacket.
После этого часть игроков получает disconnect.
Серверный лог часто показывает просто:
<player> lost connection: Disconnected
или на Velocity:
Connection reset by peer
В вашем подключении произошла внутренняя ошибка
Но клиентский лог показывает настоящую причину.
Фрагмент из latest.log клиента:
[Render thread/WARN]: Unsupported Waypoint update operation: class net.minecraft.class_11200$class_11201
[Render thread/ERROR]: Failed to handle packet class_11173[operation=UPDATE, waypoint=net.minecraft.class_11200$class_11201@139422ca], disconnecting
java.lang.NullPointerException: Cannot invoke "net.minecraft.class_11200.method_70766(net.minecraft.class_11200)" because the return value of "java.util.Map.get(Object)" is null
[Render thread/WARN]: Client disconnected with reason: Ошибка сетевого протокола
По смыслу это выглядит так:
Клиент получил waypoint UPDATE
↓
Клиент попытался найти этот waypoint в Map
↓
Map.get(...) вернул null
↓
Клиент получил Network Protocol Error
↓
Disconnect
То есть клиент получает UPDATE для waypoint, которого у него нет. Либо TRACK до клиента не дошёл, либо waypoint уже был UNTRACKed/очищен после телепорта или смены мира.
На Velocity в этот момент обычно видно только reset:
Exception caught while decoding frame for /<ip>:<port>
io.netty.channel.unix.Errors$NativeIoException: recvAddress(..) failed with error(-104): Connection reset by peer
[connected player] <player> has disconnected: В вашем подключении произошла внутренняя ошибка.е
если нужны будут подробные логи - скину