Minecraft Wiki
Advertisement

Красным помечен текст который я не могу правильно перевести. Помогите кто может

Minecraft Beta 1.3 использует новый вариант для хранения блоков: начиная с бетты 1.3, каждая группа из 32 на 32 блока храниться в файле региона, а не по отдельности. Можно сказать, что регион является частью файловой системы,где заголовок позиции для каждого файла и сектор размер кластера. Система основана на моде McRegion (Scaevolus) , производитель Optimine. Формат McRegion был принят почти без изменений, за исключением добавления таблицы временных меток блоков. JahKob утверждает, что этот формат в 7 раз быстрее, чем предыдущая система.

Файлы регионов

Расположение файлов регионов

Файлы регионов находятся в папке ..\saves\имя вашего мира\region и имеют имена в виде r.x.z.mcr, где X и Z являются координатами региона. Координаты для региона кусок принадлежит могут быть найдены путем принятия этаже кусок координаты разделить на 32.

В Java:

   int localX = (int)Math.floor((double)chunkX / 32);
   int localZ = (int)Math.floor((double)chunkZ / 32);

Например, блок с координатами (30, -3) будет в регионе (0, -1), а блок с координатами (70, -30) будет в регионе(2, -1).

Структура

Файлы регионов начинаются с 8kiB заголовка, содержащую информацию о том, какие куски присутствуют в файле регионов, когда они в последний раз были обновлены, и где их можно найти. Расположенный в файле региона блок (X, Z) (координаты блока) можно найти по смешению в байтах 4 * ((x mod 32) + (z mod 32) * 32) в своем файле регионов. Его временные метки могут быть найдены 4096 байт в конце файла. Остальная часть файла состоит из данных по 1024 блокам, чередующимися с произвольным количеством свободного места.

byte 0 - 4095 4096 - 8191 8192...
описание locations (1024 entries) временные метки(1024 entries) блоки и пустое место

Расположение чанков

Location information for a chunk consists of four bytes split into two fields: the first three bytes are a (big-endian) offset in 4KiB sectors from the start of the file, and a remaining byte which gives the length of the chunk (also in 4KiB sectors, rounded up). Chunks will always be less than 1MiB in size. If a chunk isn't present in the region file (e.g. because it hasn't been generated or migrated yet), both fields will be zero.

Информация о расположении блоков состоит из четырех байт разделенных на два поля: первые три байта-смещение (с обратным порядком байтов) смещены на 4KiB от начала файла, а последний байт задает длину блока(также в 4KiB секторов, округленно). Блоки всегда будет меньше, чем 1MiB в размерах. Если блока нет в файле регионов (например, потому что он не был сгенерирован или перемещен ), оба поля будет равна нулю.

byte 0 1 2 3
описание смещение количество секторов

Блок со смещением 2 начинается сразу после таблицы временных меток.

Временные метки блоков

Записи в таблице временных меток - отдельные четырехбайтовые целые числа с обратным порядком байтов, отображают время последнего изменения блока.


byte 0 1 2 3
описание метки

Данные блока

Chunk data begins with a (big-endian) four-byte length field which indicates the exact length of the remaining chunk data in bytes. The following byte indicates the compression scheme used for chunk data, and the remaining (length-1) bytes are the compressed chunk data.

Данные о блоке начинаются с четырехбайтового поля (с обратным порядком байтов), которое указывает на точную длину остающихся данных блока в байтах. Следующий байт указывает на тип сжатия, используемую для данных блока, и последний (длина 1), байт - сжатые данные блока.

byte 0 1 2 3 4 5...
описание длина(в байтах) тип сжатия сжатые данные (длина-1 байт)

В настоящий момент есть два определенных типов сжатия:

Значение Метод
1 GZip (RFC1952) (не используется)
2 Zlib (RFC1950)

Если Вы предпочитаете считавать, данные блока сжатого методом DEFLATE Zlib-сжатbt(RFC1951), тогда пропускайте первые два байта и бросают последние 4 байта перед распаковкой

Несжатые данные находятся в формате NBT с такой же структурой как в alpha; если бы было сжато типом сжатия 1, то сжатые данные были бы идентичны формату сжатия файлов для блоков Альфы. Заметьте, что блоки всегда будут сохраняться, используя тип сжатия 2 в официальном клиенте.

Миграция и level.dat

Файл:Convert.png

Так выглядит процесс преобразования карты в новый формат.

Бета 1.3 преобразует любые "старые" блоки в файлы регионов прежде чем загрузить мир, а не во время игры. При преобразовании level.dat будет обновлен с тегом TAG_Int ("version") со значением 19132. Бета 1.3 также имеет новый тег с названием уровня(мира), TAG_String ("LevelName"). Также появился новый тег TAG_Byte ("Sleeping")в проигрывателе TAG_Compounds - level.dat в сингле, [имя игрока].dat в мультиплейере, который указывает, находится ли игрок на кровати. У него есть значения 1(true) or 0(false.

The format of level.dat is otherwise unchanged from alpha. Формат level.dat иначе неизменен относительно alpha.

Смотрите также

Advertisement