Structure Layout Optimizer - технический мод для Minecraft, который решает проблему тормозов при генерации сложных структур. Если ты замечал лаги или фризы, когда в мире появляются большие деревни, Trial Chambers или крепости - этот мод как раз для таких случаев.
Джigsaw-структуры в ванильном Майнкрафт - это механизм, который собирает постройки из кусочков (pieces). Проблема в том, что ванильный код делает это неэффективно: при добавлении нового куска он проверяет пересечения со всеми остальными кусками структуры. Чем больше постройка, тем больше проверок - и это замедляет генерацию. Structure Layout Optimizer чинит это без вмешательства в то, как выглядят сами постройки. Всё остаётся на месте, но генерируется быстрее.
Оптимизация состоит из нескольких технических улучшений:
BoxOctree вместо VoxelShape - вместо того чтобы сравнивать все вершины каждого куска при проверке пересечений, мод использует BoxOctree. Он проверяет только близлежащие куски, игнорируя те, что далеко. Это резко ускоряет проверку для структур вроде больших деревень или подземелий.
Пропуск заблокированных джigsaw-блоков - если джigsaw-блок родительского куска упирается в границу структуры или в другой кусок, у него нет места для спавна дочернего куска. Мод сообщает игре, что такой блок можно пропустить, не пытаясь подобрать к нему пару. Экономится куча проверок, особенно в структурах с сотнями джigsaw-блоков.
Оптимизация поиска пар джigsaw-блоков - в ванилле при сопоставлении джigsaw-блоков дважды вызывается getValue для получения одних и тех же данных. Мод убирает дублирование, упрощает получение joint, target и name из NBT. Плюс joint-данные теперь не конвертируются в Enum с помощью медленного byName - это даёт прирост скорости.
Ускорение загрузки больших NBT-песен - когда NBT-кусок генерируется в чанке, игра сначала загружает весь NBT-файл в память, потом несколько раз итерируется по всем позициям для StructureProcessors, а затем отбрасывает то, что не входит в текущий чанк. Мод делает проверку границ заранее - отсекает лишние позиции до того, как они попадут в процессоры. Кроме некоторых структур вроде Trail Ruins (где используется CappedStructureProcessor с переопределённым finalizeProcessing), это ускорение работает везде.
Более быстрая сортировка джigsaw-блоков (1.21.1+) - мод использует новый метод для чтения selection_priority из NBT, который получает данные один раз вместо двух. А для структур, где priority реально используется (например, Trials Chamber), новая система сортировки тоже даёт небольшой буст.
Пропуск уже проверенных SinglePoolElement - в ванилле если в пуле шаблонов указан вес 100 для дома, этот дом попадает в список 100 раз. Когда игра генерирует структуру, она копирует список, перемешивает и итерирует по нему, пытаясь поставить первый подходящий кусок. Если дом не подошёл, игра снова проверяет его дубликаты в списке. Мод запоминает, какие элементы уже не влезли в текущее место, и пропускает их. Для структур с большими весами (например, деревень) это даёт заметный прирост производительности.
Ещё есть настройка deduplicateShuffledTemplatePoolElementList - она убирает дубликаты из списка полностью, что ускоряет ещё сильнее. Но это ломает seed parity: структура будет генерироваться по-другому (хотя стабильно для того же сида). Включишь - получишь больше FPS при генерации, но расположение зданий может отличаться от ваниллы.
Palette-оптимизация памяти (1.21.4, v1.1.0+) - вдохновлено модом Glacier от contaria для 1.16.1. Когда загружается NBT-файл структуры, он превращается в StructureTemplate. Внутри него - список всех позиций с блоками и NBT-тегами. Это жрёт кучу памяти. Мод заменяет этот список на специальную palette-структуру, которая занимает гораздо меньше места. Когда нужна генерация, данные из неё распаковываются обратно в список (через WeakReference), а после завершения генерации сборщик мусора чистит лишнее. Единственный нюанс: с такой структурой нельзя вызывать add, remove или clear - будет ошибка. Но на практике моды редко трогают этот список напрямую.
Кстати, если у тебя стоит ModernFix (который делает StructureTemplate SoftReference и полностью очищает из памяти при нехватке), то эти два мода работают вместе. Structure Layout Optimizer уменьшит размер StructureTemplate в памяти, поэтому ModernFix сможет дольше держать их в кэше, не выгружая на диск. Больше кэш-хитов - меньше чтений с диска.
Сейчас мод доступен для Minecraft 1.21.1 и **Рекомендую проверить страницу загрузки - возможно, выйдут версии для 1.20 и старше. Работает на Fabric и его форках (Quilt, NeoForge частично). Если используешь Forge - глянь аналоги, вроде структуроптимизации в C2ME или Radium (Re-Read).
Важно: мод не меняет внешний вид структур - только то, как они собираются. Никаких лишних внезапных коллизий с модами на новые биомы или постройки не будет. Если заметишь баги - пиши в репозиторий, но перед этим проверь, что мод совместим с остальными утилитами в твоей сборке.
Если ты собираешь модпак с кучей структурных модов (Repurposed Structures, Towns and Towers, CTD) - Structure Layout Optimizer почти обязателен. Он реально убирает тики фризов при генерации деревень и других сложных построек. На старых компах это особенно заметно: вместо секундного подвисания при входе в новую местность - плавный подгруз. И никаких изменений в геймплее - просто Майнкрафт без тормозов.
Скачивай мод Structure Layout Optimizer для Фабрик и забудь про лаги при генерации структур. Если хочешь ещё больше производительности - настрой deduplicateShuffledTemplatePoolElementList, но учти: сиды для структур немного сменятся. В любом случае, это работает стабильно и без конфликтов.

Мод Structure Layout Optimizer оптимизирует генерацию джigsaw-структур и NBT-частей в Майнкрафт. Он ускоряет сборку деревень, крепостей и других сложных построек без изменения их внешнего вида.