
Sable Chunk Guard
Sable Chunk Guard - патч для NeoForge, который убирает зависания Sable на незагруженных и генерируемых чанках. Сервер больше не падает до 0 TPS, а мир не висит при выходе.
Sable Chunk Guard - маленький патч для NeoForge, который лечит одну очень конкретную болячку Sable. Если коротко: сервер перестаёт уходить в глубокий фриз, когда физика конструкций трогает чанк, которого ещё нет в памяти.
Sable - это библиотека для интерактивных движущихся конструкций и физических sub-level'ов (подмиров). На ней, в частности, держится Create Aeronautics, поэтому мод в первую очередь зайдёт сборкам с дирижаблями, движущимися платформами и прочими живыми механизмами. Чем больше такого добра в мире, тем чаще движок лезет в чанки на границе прогрузки - и вот там всё и ломалось.
В чём была проблема
Когда летящая конструкция или коллизия сущности попадает в чанк, который ещё не загружен или только генерируется, старый код Sable пытался догрузить его синхронно. То есть главный поток сервера просто вставал и ждал. На практике это выглядело так:
- TPS падает в 0 на несколько секунд, игроки стоят как вкопанные
- чанки грузятся мучительно долго, будто сервер на паузе
- выход из мира зависает, окно не отвечает, приходится убивать процесс
- на сервере с десятком игроков одна неудачная конструкция утаскивает вниз всех
Самое противное, что это не краш. Ошибки в логе нет, сервер жив, просто не двигается. Играть невозможно, а причину найти сложно: триггерится только на стыке физики и границы прогруженных чанков.
Что делает патч
Логика простая и злая в хорошем смысле. Если нужного чанка нет или он ещё генерируется, опасный расчёт физики или коллизии пропускается на текущем тике, вместо того чтобы заставлять поток сервера ждать. Чанк догрузится сам, обычным порядком, а расчёт вернётся на следующем тике, когда данные уже есть.
Никакого нового контента, никаких блоков и мобов. Это чистый фикс поведения, его и видно только по тому, что фризы пропали.
Техническая сводка
| Параметр | Значение |
|---|---|
| Версия Minecraft | 1.21.1 |
| Загрузчик | NeoForge |
| Сторона | клиент и сервер |
| Категории | Optimization, Utility |
| Версия мода | 1.0.0 |
| Загрузок | около 14,9 тыс. |
| Сборок с модом | 15 (по данным Modpack Index) |
Цифра по сборкам показательна: проект ставят не сами по себе, а в комплекте с Sable, Create Aeronautics и другими Create-/Sable-дополнениями. То есть это не самостоятельный мод, а деталь пазла для тех, кто уже собрал тяжёлую техническую сборку.
Как это ощущается в игре
Разница видна не сразу, а в моменты, когда раньше всё вставало. Пролетаешь на дирижабле над неисследованным биомом - и вместо привычного зависания на пару секунд просто летишь дальше. Заходишь на сервер, где кто-то катается на поезде по краю прогрузки - и не ловишь отвал.
Для админа это ещё и меньше головной боли. Не надо объяснять игрокам, почему сервер "опять лагал", не надо перезапускать процесс вручную и молиться, чтобы мир нормально сохранился.
Важный нюанс
Пропуск расчёта - это компромисс, а не магия. В тот тик, когда физика пропущена, объект может чуть дёрнуться или на мгновение замереть. На практике чаще всего незаметно, но если у вас конструкции висят ровно на границе прогрузки и постоянно её пересекают, лёгкое подрагивание исключать нельзя.
И ещё: патч не чинит баги Sable, он их обходит. Если в новой версии библиотеки проблему решили, мод может стать лишним звеном в цепочке. Проверяйте перед обновлением.
Установка
- Ставите NeoForge для Minecraft 1.21.1.
- Кидаете jar в папку
mods. - То же самое делаете на клиенте, если играете не только на сервере.
- Убеждаетесь, что версия Sable актуальная и совпадает на клиенте и сервере.
Порядок загрузки трогать не нужно, конфига в описании нет. По сути поставил и забыл.
Совет: перед первым запуском на живом мире сделайте бэкап. Мод меняет логику расчётов, а не только косметику, и лучше иметь точку возврата. Особенно если в сборке уже десяток Create-аддонов и вы не уверены, кто с кем дружит.
Совместимость и связки
Мод заявлен для клиента и сервера, то есть на мультиплеере его нужно ставить с обеих сторон. С Fabric и Quilt он не работает - это чисто неофорджевая история, и путать не стоит.
Естественная связка: Sable + Sable Chunk Guard + Create Aeronautics и прочие Create-дополнения, которые гоняют движущиеся объекты. Если вы держите сервер с тяжёлыми техническими сборками, это скорее must-have, чем опция - цена в один jar несоизмерима с риском поймать 0 TPS в самый неподходящий момент.
С оптимизаторами и шейдерами конфликтов не заявлено, но тестировать всё равно лучше на копии мира, а не на основном.
Кому не нужно
Если в вашей сборке нет Sable - мод просто нечего исправлять, он ничего не делает. Также он бесполезен, если вы играете на ванильном сервере или на Fabric: другой загрузчик, другой код.
Важно знать
Почему сервер лагает из-за Create Aeronautics? Потому что физика движущихся конструкций обращается к чанкам напрямую, и при промахе по прогрузке главный поток начинает ждать. Sable Chunk Guard как раз убирает это ожидание.
Что делать, если TPS уже упал в ноль? Мод предотвращает такие зависания, но не лечит уже сломанное состояние. Если сервер встал, перезапускайте, а мод ставьте заранее.
Поможет ли на слабом железе? Частично. Он убирает фризы от физики, но не ускоряет генерацию мира и не заменяет нормальный хостинг.
Будет ли работать на 1.20.1? Нет, заявлена только 1.21.1 на NeoForge. Для других версий смотрите, не появилось ли отдельного билда.
Зависает выход из мира, это оно? Очень похоже. Синхронная догрузка чанков при выгрузке мира - как раз один из симптомов, которые патч убирает.
Скачать Sable Chunk Guard стоит тем, кто уже поймал хоть один такой фриз и не хочет ловить второй. Мод крошечный, ничему не мешает и делает ровно одну вещь - но делает её хорошо.
Как поиграть с друзьями с модом Sable Chunk Guard?
Мод Sable Chunk Guard куда интереснее в компании: поднимите сервер Майнкрафт с уже установленным модом, позовите друзей и играйте по своим правилам. Хостинг Майнкрафт для мода Sable Chunk Guard будет готов за пару минут - BungeeHost сделает всё за вас.
