Программное обеспечение вики, MediaWiki, обновлено до версии 1.33. Подробная информация об этом обновлении доступна на Справочной вики Gamepedia. В связи с обновлением возможны некоторые технические неполадки.

We are currently performing an upgrade to our software. This upgrade will bring MediaWiki from version 1.31 to 1.33. While the upgrade is being performed on your wiki it will be in read-only mode. For more information check here.

Классический формат карт

Материал из Minecraft Wiki
Перейти к: навигация, поиск

Классический формат карт — формат хранения файлов игрового мира, который используется во всех версиях Classic. Для сжатия файлов используется утилита gzip. Файлы карты содержат краткое заглавие, в котором содержатся объекты для Java-сериализации. В одиночной игре, этим файлам присваивается расширение ".mine". Уровни, которые используются сервером режима Творчество и версии Classic называются "server_level.dat". Эти файлы поддаются резервному копированию, что даёт возможность сохранять различные временные варианты файлов карты, чтобы потом, например, в случае массового гриферства, была возможность восстановления одного из старых вариантов. Также эти файлы хранения карт можно редактировать при помощи редакторов уровней.

Поскольку формат этих карт зависит от метода сериализации данных с помощью Java, наиболее легким способом оперирования с ними является работа через сам Classic сервер, minecraft-server.jar. Сэмпл кода показывает как построить редактор уровней, основой для которого будет служить minecraft-server.jar.

Формат файлов[править | править код]

В несжатом варианте, форматы файлов следующие:

Позиция размер (в байтах) Название Описание
0 4 Magic ID «magic ID» постоянное число, целью которого является определение формата файла Minecraft. Текущее значение 0x271bb788.
4 1 Номер версии Номер версии представляет формат карт, который используется для сохранения уровня. Текущее значение составляет 2.
5 Переменная Сериализированный Java Class файл com.mojang.minecraft.level.Level Больше информации про сериализацию формата карт с помощью Java Вы можете прочитать здесь, однако, наиболее легким способом редактирования файлов карты является использование class-файлов, которые официально поддерживаются minecraft-server.jar файлом.

Доступ к массиву данных[править | править код]

Наиболее интересной частью уровня является наполнение его блоками. Каждый байт в этом массиве данных определяет тип блока, и его размещение в игровом мире. Для первого, как правило, есть два варианта доступа к массиву данных:

Вы можете десериализировать .dat файл непосредственно в экземпляр файла уровня для работы внутри среды Java, что даст доступ к таким же файлам уровня, которые использует сервер игры. Это позволит Вам устанавливать блоки, размеры, точку возрождения и другие параметры карты непосредственно влияя на файлы её сохранения. Предварительная декомпрессия не требуется, потому что Java сжимает и разжимает файлы формата gzip в реальном времени. Чтобы загрузить Ваш файл с данными обратно в class уровня, нужно интегрировать специальное "разрешение" в файл class уровня. Его включает в себя файл minecraft-server.jar. Для примера, можно просмотреть страницу классы.

Другой метод основан на чтении и модификации файлов карты методом подключения к сырому массиву данных в них. Для этого вам придется разжать эти файлы, внести в них изменения, и сжать обратно. Так как Вы редактируете сырой код, вам потребуется держать первые 344 (14Е в HEX) байтов нетронутыми. Кроме того, с помощью этого способа можно изменять координаты точки спауна, если Вы знаете, где искать: есть 3 целочисленных значения начиная с позиции 284, и изменение следующих 12 байтов (3 целочисленных значения) приведет к смене места размещения точки возрождения.

(Примечание: данный метод может изменятся в зависимости от изменений в программной среде Java)

См. также[править | править код]