Chunksmith
Chunksmith - мод и плагин для быстрой и безопасной предгенерации мира в Minecraft. Адаптивно снижает нагрузку на тики сервера, работает при онлайн-игроках и заодно строит LOD-данные для Distant Horizons и Voxy.
Chunksmith - это предгенератор чанков для Minecraft, который делает одну вещь, но делает её хорошо. Он генерирует мир заранее, чтобы игроки не упирались в лаги генерации при входе и не смотрели на пустой туман на горизонте. Звучит просто, но именно мелочи отличают его от десятка других похожих инструментов.
Если коротко: ставите Chunksmith, запускаете предгенерацию, и пока она идёт, тот же самый проход попутно собирает данные LOD для Distant Horizons или Voxy. Один запуск - два результата. Мир, который грузится мгновенно, и мир, который видно до самого горизонта.
Проект вырос из Chunky от pop4959, но с тех пор развивается самостоятельно и независимо. Всё, что умел Chunky, ЧанкСмит тоже умеет - об этом ниже.
Какую проблему решает Chunksmith
Генерация чанков в Майнкрафт - тяжёлая штука. Когда игрок идёт в новую сторону, сервер в реальном времени просчитывает рельеф, биомы, структуры и пещеры. Именно поэтому на свежем мире лаги фризят при каждом шаге в неизведанное. Предгенерация решает это заранее: мир уже посчитан и лежит на диске.
Обычно за это приходится платить - либо предгенерация жрёт все ресурсы и на сервере невозможно играть, либо она идёт медленно и растягивается на сутки. Chunksmith пытается усидеть на обоих стульях.
Что добавляет Chunksmith
LOD-данные строятся прямо во время предгенерации
Никакого второго прохода. Не нужно перечитывать region-файлы заново. Не нужно отдельно гонять генерацию LOD потом. Ставите Distant Horizons или voxy, запускаете предгенерацию - и дальний рельеф просто появляется сам.
Включается автоматически. Если рендерер установлен, генерация LOD уже работает. Искать ключ в конфиге не придётся.
Уже всё сгенерировано раньше? Запустите ту же предгенерацию снова. Chunksmith построит LOD из тех чанков, что уже есть, - он их не пересоздаёт и пропускает всё, что уже сделано. Прогенерировали мир сегодня, поставили рендерер через месяц - ничего не потеряли.
LOD для мультиплеера без мода-компаньона. Игроки, заходящие на сервер, скачивают готовые LOD-данные и видят весь мир на расстоянии, даже если ни разу там не ходили. Один и тот же jar - это сразу две половины: серверная и клиентская. Плагин для Paper/Spigot тоже раздаёт данные, так что связка "модифицированный клиент + сервер на плагине" работает нормально.
Генерация не мешает играть
Большинство предгенераторов ставят перед выбором: либо скорость, либо играбельный сервер. Chunksmith меряет то, что он добавляет к времени тика, а не ориентируется на абсолютное время тика. Смысл простой: если сервер и без того тормозит по своим причинам, Chunksmith не станет душить сам себя за нагрузку, которую не создавал.
Каждый онлайн-игрок дополнительно урезает лимит - пустой сервер пашет на полную, а загруженный постепенно уступает. Если сервер всё равно не тянет, прогон сам встаёт на паузу с указанием причины и продолжается, когда станет легче. А ваша команда /cs pause всегда имеет приоритет над автоматикой.
Он измеримо быстрее
Параметр dispatchMaxConcurrent задаёт, сколько запросов чанков держится в воздухе одновременно, и он масштабируется под ваш CPU вместо фиксированного потолка. На выделенном сервере с 8 ядрами поднятие этого значения со старых 50 до 200 дало +39% - с 31,6 до 43,9 чанков в секунду. Меняется на лету.
Постройки других модов реально строятся
Предгенератор, который выбрасывает чанк сразу после генерации, ломает любой мод, реагирующий на "появился новый чанк" и достраивающий что-то на следующем тике - к тому моменту земля уже исчезла из памяти. Замер с Millenaire на предгене для 1.21.1: 309 попыток размещения, 309 отложенных, ноль деревень.
Chunksmith держит чанк, пока не появятся все восемь его соседей, и только потом отпускает. Ничего специфичного для конкретных модов - правило про чанки, так что выигрывают все, кто что-то строит на новых землях.
Он подскажет, когда генерация сбоит
Есть обнаружение выхода за границы и определение виновника среди структурных модов. Сломанный мод генерации мира становится тем, что можно опознать, а не просто терпеть.
Всё меняется на лету
Любая настройка читается и задаётся прямо в игре - без рестарта, без правки файлов, без простоя сервера. Серверные параметры - через /cs set, те, что относятся к вашему клиенту, - через /csclient set. Это правило, которого проект держится сам себя: есть тест, который падает, если настройку добавили без команды для неё.
Что осталось от Chunky
Гибкие фигуры (квадрат, круг, ромб, треугольник, звезда и другие), с центровкой по координатам, спавну мира или границе мира. Несколько миров. Живой прогресс, скорость, ETA и необязательный босс-бар. Пауза, продолжение, отмена и продолжение после рестарта. Обрезка мира. API для разработчиков на события прогресса и завершения.
Все эти возможности никуда не делись - Chunksmith просто надстроен сверху.
Установка и совместимость
Обязателен на сервере - или в одиночной игре, где сама игра и есть сервер. Установка на клиент необязательна.
На клиенте он нужен только для LOD в мультиплеере - чтобы видеть предсгенерированный дальний ландшафт на сервере, где вы не ходили. Для одной только предгенерации на клиенте не нужно ничего.
Поставляется как мод для Fabric, Forge и NeoForge и как плагин для Paper / Spigot. Проект поддерживает линейку Minecraft от 1.20 до 1.21.x, включая свежие сборки под новые версии. Актуальный файл под самый новый релиз - это уже 3.18.2+26.3 для Fabric.
Folia не поддерживается. Начиная с 4.0.0 плагин вообще не загрузится на Folia - он больше не объявляет folia-supported, так что Folia отвергает его, вместо того чтобы запускать платформу, которую никто не тестирует. Непроверяемое заявление хуже, чем его отсутствие.
Сервер и клиент должны работать на одной мажорной версии. В 4.0.0 сменился протокол передачи LOD, и смешанная пара 3.x/4.x выключает LOD в обе стороны: клиент не запрашивает, сервер не отдаёт. Всё остальное продолжает работать - не приходит именно дальний ландшафт, и обе стороны честно об этом сообщают, а не падают непонятно как.
Что стоит знать перед обновлением: лаунчер предложит 4.0.0 всем, кто на 3.x, так что клиент может обновиться до несовпадения без единого касания сервера. Двигайте обе стороны вместе.
Ставьте рендерер на клиент, и только на клиент. Distant Horizons и Voxy рисуют дальний ландшафт, а рисует что-либо только клиент - сервер лишь отдаёт данные. Рендерер на сервере строго не рекомендуется, и с 3.18.1 сервер скажет об этом красным при запуске. Он конкурирует за тот же CPU, на котором Chunksmith генерирует чанки, и дублирует LOD, который игрокам и так отправляют. Серверный Distant Horizons вдобавок забивает консоль предупреждениями вида [SharedApi] No DH level provided .... Выигрыша ноль. Если LOD на сервере ведёт себя странно, проверяйте это в первую очередь.
Таблица совместимости
| Платформа | Тип | Примечание |
|---|---|---|
| Fabric | мод | основная линия разработки |
| Forge | мод | полная поддержка |
| NeoForge | мод | полная поддержка |
| Paper / Spigot | плагин | раздаёт LOD серверно |
| Folia | не поддерживается | начиная с 4.0.0 не загружается |
Быстрый старт
/cs world <world> # выбрать мир
/cs spawn # центрировать на спавне
/cs radius 5000 # докуда генерировать
/cs start # поехали
/cs progress - следить за процессом, /cs pause и /cs continue - по необходимости.
Важный нюанс. Если хотите увидеть предсгенерированный дальний рельеф на сервере, ставить Chunksmith нужно и на клиент тоже. Без клиентской части предгенерация отработает как обычно, но горизонт останется пустым.
Совет. На слабом железе не задирайте
dispatchMaxConcurrentсразу до больших значений. Поднимайте постепенно и следите за TPS - адаптивный троттлинг подстрахует, но запас по CPU всё равно не бесконечный. И держите рендерер только на клиенте: серверный Distant Horizons - самая частая причина странного поведения LOD.
Важно знать
Нужен ли мод игрокам на сервере для самой предгенерации? Нет. Для одной предгенерации на клиенте не нужно ничего - достаточно серверной части. Клиентский мод подключается только ради мультиплеерного LOD.
Можно ли играть, пока идёт генерация? Да. Именно ради этого и сделан адаптивный троттлинг: прогон уступает нагрузке и сам встаёт на паузу, если сервер не справляется.
Что если обновить только одну сторону? Смешанные 3.x и 4.x отключат передачу LOD в обе стороны. Всё остальное продолжит работать.
Можно ли потом снести мод? Да. Предгенерация пишет обычные region-файлы и не привязывает мир к себе. Удаление мода сам мир не сломает.
Где это особенно пригодится
Если вы держите публичный сервер или просто хотите открыть мир с друзьями, предгенерация избавляет от вечных "подожди, у меня фризит" на старте. Игроки заходят и сразу играют, а с клиентским LOD ещё и видят весь пройденный мир на горизонте, не обходя его пешком. Как раз тот случай, когда связка Chunksmith плюс Distant Horizons или voxy раскрывается полностью.
Для сетевой игры удобно развернуть всё это на BungeeHost - там Хостинг Серверов Майнкрафт поднимается в один клик, а плагин для Paper/Spigot встаёт без возни с конфигами. Если думаете арендовать сервер Майнкрафт под предгенерацию большого мира, берите запас по CPU: генерация - задача, которая любит ядра. Запустить сервер Майнкрафт на слабом тарифе можно, но предгенерация займёт заметно дольше, и адаптивный троттлинг будет резать скорость сильнее.
Лицензия
GPL-3.0-only. Оригинальный Chunky (c) pop4959. Модификации Chunksmith (c) Kishku7.
Короче, Chunksmith - это не просто "ещё один предгенератор". Это предгенератор, который думает о сервере, о модах, которые строят на новых чанках, и о ваших глазах, которым хочется видеть горизонт. Скачайте Chunksmith, прогоните свой мир заранее - и забудьте про лаги генерации раз и навсегда.
Часто задаваемые вопросы
Совместимость
Minecraft: Java Edition
Поддерживаемые окружения
Зависимости
Создатели
Детали
Версии плагина Chunksmith
Доступно 602 версий. Сначала показаны самые популярные и самые свежие.