Minecraft Wiki
Регистрация
м (r2.7.2) (робот добавил: fr:Format de carte Classique)
ThermoF (обс. | вклад)
м (Interwiki)
 
(не показано 10 промежуточных версий 8 участников)
Строка 1: Строка 1:
'''Классический формат карт''' — формат хранения файлов [[Игровой мир|игрового мира]], который используется во всех версиях [[Classic]]. Для сжатия файлов используется утилита [http://ru.wikipedia.org/wiki/Gzip gzip]. Файлы карты содержать краткое заглавие, в котором содержатся объекты для Java-сериализации. В одиночной игре, этим файлам присваивается расширение "''.mine''". Уровни, которые используются сервером режима [[Creative]] и версии Classic называются "''server_level.dat''". Эти файлы поддаются [http://ru.wikipedia.org/wiki/Бэкап резервному копированию], что даёт возможность сохранять различные временные варианты файлов карты, чтобы потом, например, в случае массового [[Грифер|гриферства]], была возможность восстановления одного из старых вариантов. Также эти файлы хранения карт можно редактировать при помощи [[Редакторы карт|редакторов уровней]].
+
'''Классический формат карт''' — формат хранения файлов [[Игровой мир|игрового мира]], который используется во всех версиях [[Classic]]. Для сжатия файлов используется утилита [http://ru.wikipedia.org/wiki/Gzip gzip]. Файлы карты содержат краткое заглавие, в котором содержатся объекты для Java-сериализации. В одиночной игре, этим файлам присваивается расширение "''.mine''". Уровни, которые используются сервером режима [[Творчество]] и версии Classic называются "''server_level.dat''". Эти файлы поддаются [http://ru.wikipedia.org/wiki/Бэкап резервному копированию], что даёт возможность сохранять различные временные варианты файлов карты, чтобы потом, например, в случае массового [[Грифер|гриферства]], была возможность восстановления одного из старых вариантов. Также эти файлы хранения карт можно редактировать при помощи [[Редакторы карт|редакторов уровней]].
   
 
Поскольку формат этих карт зависит от метода сериализации данных с помощью Java, наиболее легким способом оперирования с ними является работа через сам Classic сервер, <span class="plainlinks">[http://minecraft.net/servers.jsp minecraft-server.jar]</span>. [[Классы|Сэмпл кода]] показывает как построить редактор уровней, основой для которого будет служить ''minecraft-server.jar''.
 
Поскольку формат этих карт зависит от метода сериализации данных с помощью Java, наиболее легким способом оперирования с ними является работа через сам Classic сервер, <span class="plainlinks">[http://minecraft.net/servers.jsp minecraft-server.jar]</span>. [[Классы|Сэмпл кода]] показывает как построить редактор уровней, основой для которого будет служить ''minecraft-server.jar''.
Строка 32: Строка 32:
 
Наиболее интересной частью уровня является наполнение его [[Блоки|блоками]]. Каждый байт в этом массиве данных определяет [[Нумерация данных|тип блока]], и его размещение в игровом мире. Для первого, как правило, есть два варианта доступа к массиву данных:
 
Наиболее интересной частью уровня является наполнение его [[Блоки|блоками]]. Каждый байт в этом массиве данных определяет [[Нумерация данных|тип блока]], и его размещение в игровом мире. Для первого, как правило, есть два варианта доступа к массиву данных:
   
Вы можете десериализировать ''.dat'' файл непосредственно в экземпляр файла уровня для работы внутри среды Java, что даст доступ к таким же файлам уровня, которые использует сервер игры. Это позволит Вам устанавливать блоки, размеры, точку возрождения и другие параметры карты непосредственно влияя на файлы её сохранения. Предварительная декомпрессия не требуется, потому-что Java сжимает и разжимает файлы формата gzip в реальном времени. Чтобы загрузить Ваш файл с данными обратно в class уровня, нужно интегрировать специальное "разрешение" в файл class уровня. Его включает в себя файл ''minecraft-server.jar''. Для примера, можно просмотреть страницу [[классы]].
+
Вы можете десериализировать ''.dat'' файл непосредственно в экземпляр файла уровня для работы внутри среды Java, что даст доступ к таким же файлам уровня, которые использует сервер игры. Это позволит Вам устанавливать блоки, размеры, точку возрождения и другие параметры карты непосредственно влияя на файлы её сохранения. Предварительная декомпрессия не требуется, потому что Java сжимает и разжимает файлы формата gzip в реальном времени. Чтобы загрузить Ваш файл с данными обратно в class уровня, нужно интегрировать специальное "разрешение" в файл class уровня. Его включает в себя файл ''minecraft-server.jar''. Для примера, можно просмотреть страницу [[классы]].
   
 
Другой метод основан на чтении и модификации файлов карты методом подключения к сырому массиву данных в них. Для этого вам придется разжать эти файлы, внести в них изменения, и сжать обратно. Так как Вы редактируете сырой код, вам потребуется держать первые 344 (14Е в HEX) байтов нетронутыми. Кроме того, с помощью этого способа можно изменять координаты точки спауна, если Вы знаете, где искать: есть 3 целочисленных значения начиная с позиции 284, и изменение следующих 12 байтов (3 целочисленных значения) приведет к смене места размещения точки возрождения.
 
Другой метод основан на чтении и модификации файлов карты методом подключения к сырому массиву данных в них. Для этого вам придется разжать эти файлы, внести в них изменения, и сжать обратно. Так как Вы редактируете сырой код, вам потребуется держать первые 344 (14Е в HEX) байтов нетронутыми. Кроме того, с помощью этого способа можно изменять координаты точки спауна, если Вы знаете, где искать: есть 3 целочисленных значения начиная с позиции 284, и изменение следующих 12 байтов (3 целочисленных значения) приведет к смене места размещения точки возрождения.
Строка 40: Строка 40:
 
== См. также ==
 
== См. также ==
 
* [[Для разработчиков]]
 
* [[Для разработчиков]]
* [[Alpha формат карт]]
+
* [[Alpha (формат карты)]]
* [[Beta формат карт]]
+
* Beta формат карт
* [[Файлы схем]]
+
* Файлы схем
   
  +
{{Java Edition}}
[[de:Classic Level Format]]
 
  +
{{Minecraft}}
[[en:Classic/Level format]]
 
  +
  +
[[Категория:Техническое]]
  +
 
[[de:Spielstand-Speicherung/Classic Level Format]]
 
[[en:Java Edition Classic level format]]
 
[[fr:Format de carte Classique]]
 
[[fr:Format de carte Classique]]
  +
[[nl:Classic level formaat]]
  +
[[zh:Classic世界格式]]

Текущая версия от 13:36, 23 августа 2020

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

См. также