Руководства / Строительство и ресурсы
Губка и блок-конструктор — это не один и тот же файл
.schem, .litematic и .mcstructure для Бедрока выглядят взаимозаменяемыми, пока не сконвертируешь один из них и не обнаружешь, что все сундуки, сущности и состояния блоков исчезли.
.schem и .litematic оба хранят постройку, и именно на конвертации между ними большинство игроков обнаруживает, что эти два формата никогда не сходились в том, что такое постройка на самом деле. Один хранит единственную область блоков. Другой может содержать несколько именованных областей, каждая со своей палитрой. Перенеси город между ними — и дома уцелеют, а их содержимое нет.
Что на самом деле несёт каждый формат
| Формат | Где работает | Состояния блоков | Блок-сущности | Сущности |
|---|---|---|---|---|
.schem | Java, WorldEdit/Губка | да | да | да |
.litematic | Java, Litematica | да | да | да |
.nbt structure | Java, блок-конструкторы | да | да | да |
.mcstructure | Бедрок | да | да | да |
Столбцы выглядят одинаково — в этом и ловушка. Разница в обработке палитры и координатном пространстве, а не в списке возможностей.
Палитра — хрупкая часть
Каждый из этих форматов хранит блоки как индекс в палитре — списке уникальных типов блоков, которые использует файл, где каждая позиция содержит число, указывающее в этот список. Постройка с несколькими сотнями различных типов блоков несёт палитру такого размера, а позиции — просто целые числа.
Это значит, что файл читается, только если читатель может разрешить каждую запись палитры. Блок, добавленный в более новой версии Java, вообще не имеет аналога в Бедроке, поэтому при конвертации из Java в Бедрок его приходится заменять или отбрасывать. Воздух — обычная замена, и стена с загадочно пропавшими блоками почти всегда именно это, а не повреждение.
Java и Бедрок называют один и тот же блок по-разному
Вот где Java и Бедрок действительно расходятся. Бедрок записывает состояния блоков как block_type плюс набор состояний «ключ-значение»; Java записывает ID с пространством имён плюс карту состояний. Один и тот же физический блок может быть minecraft:oak_stairs[facing=east,half=bottom] с одной стороны и weirdo_direction плюс upside_down_bit с другой — другие имена и значения состояний, а не те же самые в другом порядке.
Лестницы, плиты, заборы, стены, двери и редстоун-компоненты — вот что переворачивается. Лестница, которая после конвертации отображается вверх ногами, — это ошибка сопоставления состояний, а не плохой файл.
Блок-конструктор хранит не то, что вы думаете
Блок-конструктор, сохраняющий в .nbt, записывает ограничивающий прямоугольник, и этот прямоугольник ограничен 48 блоками по каждой оси. Игра не разбивает большую постройку — всё, что вне прямоугольника, просто не попадает в файл. Если у сконвертированной постройки отсутствует дальний конец, проверьте исходный прямоугольник, прежде чем подозревать конвертер.
Сущности хранятся отдельно от блоков в каждом из этих форматов. Рамки, стойки для брони, картины и мобы — не блоки, и конвертер, который обходит только палитру блоков, молча их отбросит.
Проверьте перед тем, как доверять
Список материалов — самая быстрая проверка на вменяемость: если количество блоков в сконвертированном файле не совпадает с исходным, что-то было заменено. Предпросмотр слоёв показывает это сразу, горизонтальный срез за срезом, без загрузки постройки в мир.
Конвертируйте между .litematic, .schem, Java structure .nbt и Бедрок .mcstructure, с предпросмотром слоёв и списком материалов, в Конвертере схем.