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

**Классический формат карт** — формат хранения файлов игрового мира, который используется во всех версиях 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)

## См. также

- Для разработчиков
- Alpha (формат карты)
- Beta формат карт
- Файлы схем