Содержание:

Запрос «.dat minecraft» обычно появляется, когда игрок видит файлы формата .dat в папках мира или клиента и хочет понять: что внутри, за что отвечает и как это безопасно читать. В этой статье разберём ключевые level.dat, session.lock, servers.dat и то, как в Minecraft используется NBT для хранения данных.


Почему вообще встречаются файлы .dat в Minecraft

В Minecraft Java Edition часть настроек мира, прогресса и служебных сведений хранится в отдельных .dat-файлах. Это похоже на «пакеты данных»: игра кладёт туда data о мире (world) и игроках (player), а затем читает их при загрузке.

Главная идея такая: многие .dat-файлы — это NBT-структуры (бинарные «контейнеры» с тегами). У них есть теги, список значений и вложенные compound-объекты. В описаниях форматов часто встречается NBT как «NBT Compound / JSON Object», потому что структура логически похожа на json, хотя физически файл может быть NBT-формата.


Папки мира Java Edition и где лежит level.dat

Мир в Java Edition — это папка внутри .minecraft/saves/<мир>/. У неё есть своя directory structure, где хранятся данные уровня, игроков и частей мира.

Чаще всего в корне мира лежат важные файлы:

  • level.dat
  • level.dat_old
  • session.lock
  • папки data, datapacks, dimensions, region, entities, poi и др.

Идея проста: level-параметры и «глобальные» настройки — в level.dat, а разная «мелочь» по миру — в папках и отдельных region/измерениях.


level.dat: главный файл мира (и что он хранит)

level.dat — это основной файл, где игра держит глобальную information о мире. Когда мир загружается, текущий level.dat делается резервной копией в level.dat_old.

Типичный смысл данных в level.dat:
- время и базовые настройки мира
- настройки генерации
- seed (число, которое определяет генерацию)
- название уровня (LevelName)
- игровой режим по умолчанию (GameType)
- включены ли читы (allowCommands)
- параметры мира для одиночной игры, а также различная служебная data

По формату это NBT-файл с корневым tag, где есть:
- вложенный объект Data (в нём лежит основная информация),
- списки включённых/отключённых datapack’ов,
- параметры мира, вроде seed, Time, LastPlayed,
- блоки настроек, завязанные на генерацию и измерения.

Отдельно важно, что level.dat содержит string-значения (например, название), list (например, datapack’и) и другие типы тегов.


level.dat_new и level.dat_old: зачем две копии

Во время сохранения игра пишет новый вариант данных, а потом приводит файл к «рабочему» имени:

  • level.dat_new — промежуточная версия, которую программа записывает первой
  • после этого она переименовывается в level.dat
  • level.dat_old — резервная копия предыдущего level.dat

То есть система устроена так, чтобы при сбое записи мир не «сломался» полностью.


session.lock: механизм блокировки файла мира

Файл session.lock нужен, чтобы не было двух одновременных попыток писать в один и тот же world-файл. Это защита от «перезаписи» данных.

Как работает механизм по сути:
- Minecraft открывает session.lock
- пытается захватить блокировку
- если блокировку взять нельзя, программа прекращает работу, чтобы не испортить данные

Также у этого файла есть история изменений. До версии 1.16 он содержал timestamp в формате с big endian 64-битным числом, а механизм в целом был «в стиле» контроля изменения доступа. После 1.16 формат стал другим: там записывается один символ (в описании фигурирует снежный человек ☃ в UTF-8).

Практический вывод: если вы работаете с файлами мира, важно понимать, что игра может удерживать lock, поэтому корректнее закрывать Minecraft перед чтением/изменением.


Где лежат данные игрока в файловой структуре мира

Данные конкретного игрока обычно не в level.dat, а в отдельных файлах с игроками в рамках мира. В зависимости от версии структуры могут встречаться разные форматы хранения (например, старые структуры до 1.7.6).

Внутри мира при современной логике используются файлы в формате NBT для:
- состояний игроков
- статистики
- прогресса (в том числе advancement)

Если игрок появляется/уходит, эти data обновляются через свои NBT-файлы и хранятся рядом с прочими данными уровня.


Папка data: что именно там лежит

В папке data Minecraft хранит разнообразные данные мира. Типично туда попадает всё, что не является чисто «геометрией чанков», а относится к логике мира и расширениям.

Классические примеры:
- data/minecraft/... — базовые данные ванильной системы
- данные про игровые правила/таблицы (например, loot tables для лута)
- game_rules.dat
- scheduled_events.dat
- world_border.dat
- различные служебные tag и данные расширений
- datapacks и связанные данные могут хранить data packs-конфигурации

Отдельно важная идея: datapack’и подключаются и отключаются через данные мира, а не только через интерфейс игры — и это отражается в структуре NBT.


datapacks: как пользовательский контент попадает в мир

Папка datapacks хранит пользовательские наборы данных (data packs) и каждый пак лежит отдельной подпапкой или файловой структурой.

Механика такая:
- игрок добавляет datapack
- игра сохраняет, какие datapack’и включены
- затем в мире остаётся папка/записи, по которым мир может собрать своё world-поведение

В level.dat при этом есть списки Enabled/Disabled (то есть какие datapack’и включены и какие отключены).


dimensions: как устроены измерения

Папка dimensions содержит данные для разных измерений. Внутри лежат структуры, соответствующие «измерению» мира.

Типовая логика:
- есть секции по измерениям (Overworld/Nether/The End)
- у каждого измерения свои region-файлы (чанки)
- также там же могут быть дополнительные файлы с dimension-специфичными данными

Важный момент: структура не одна на все измерения — dimension-данные живут внутри измерений, чтобы мир был «правильно собран» при загрузке.


region: где хранятся региональные файлы чанков

Папка region хранит региональные файлы формата Anvil (в описаниях часто фигурирует расширение .mca). Это файлы, в которых собраны чанки.

Как понять «что это такое»:
- Minecraft не хранит каждый чанк как отдельный маленький файл навсегда
- чанки группируются в регионы
- файлы региона — это «пачки чанков», чтобы чтение/запись было эффективнее

То есть region — это база «географии» и состояния мира по чанкам, а level.dat — «параметры мира».


entities и poi: чем отличаются и что в них лежит

Внутри каждого измерения дополнительно встречаются папки:

  • entities
  • poi

entities хранит файлы с сущностями мира (игроки, мобы и т.п.) — то, что не сводится только к блокам в чанках.

poi — это poi (point of interest): места интереса для жителей и логика связанных объектов.
Например, в описаниях фигурируют:
- кровати, места работы и колокола
- также порталы в Нижний мир, ульи и компоновки для соответствующих систем (как точки интереса)

Отличие в простом:
- region и блоки — это «где стоит мир»
- entities — это «кто в мире»
- poi — это «какие важные места отмечает игра»


Что было до 1.7.6: устаревшие структуры уровня

В старых версиях Minecraft Java Edition структура данных была другой. В описаниях встречается период до 1.7.6, когда в папках мира могли храниться:
- старые файлы регионов
- файлы уровней и игроков в иных форматах (например, резервные копии, mcr-форматы и т.п.)

Если вы разбираете «папку уровня» из старой версии, важно учитывать, что её структура могла быть преобразована при обновлениях мира.


level.dat_mcr: что это было раньше

level.dat_mcr в описаниях относится к резервным копиям level.dat, использовавшимся до конвертации форматов регионов/уровня (например, перехода между MCRegion и Anvil).

Проще: это «старый след» предыдущего формата сохранения мира, чтобы восстановление или конвертация были возможны.


NBT в Minecraft: как хранятся данные

NBT — ключ к пониманию .dat. NBT состоит из:
- корневого tag
- compound-объектов (вложенных наборов полей)
- списков list значений
- разных типов: строк (string), чисел (int/long), массивов и т.д.

Из-за того, что NBT структурно напоминает JSON, часто объясняют «NBT Compound / JSON Object», но это именно представление структуры. На практике Minecraft читает именно NBT-формат данных.


GameType в level.dat: игровые режимы в виде чисел

В level.dat поле GameType хранит игровой режим одиночной игры по умолчанию при появлении игрока:
- 0 — Survival (выживание)
- 1 — Creative (креатив)
- 2 — Adventure (приключение)
- 3 — Spectator (наблюдатель)

При этом в описаниях отмечается нюанс: для одиночных миров поле GameType не всегда используется, чтобы «помнить», в каком режиме игрок находится прямо сейчас — оно про базовое значение.


Как в level.dat хранится версия мира

В level.dat есть информация о том, под какую версию Minecraft был сохранён мир: через блок Version, где присутствуют идентификаторы версии (data version, строковое имя и признак snapshot).

То есть level.dat содержит information не только о содержимом мира, но и о «контексте», как именно он был записан.


generatorOptions: как влияет на создание мира

Поле generatorOptions отвечает за параметры генератора мира в Overworld (актуально для некоторых версий). По сути, это настройки, которые определяют тип генерации.

Формат отличается от типа мира, например:
- для Buffet описывается biome_source, biomes, размеры и распределение биомов, параметры chunk generator и т.п.
- для Superflat описываются слои блоков и структуры генерации


Buffet и Superflat: примеры параметров generatorOptions

Для Buffet:
- biome_source и список биомов (biomes)
- размер биомных квадратов (size)
- тип распределения биомов

Для Superflat:
- слои с параметрами блока и высоты
- настройки structures (какие структуры и как создаются)
- иногда встречается строковое поле, связанное с generator-settings

Это важно, потому что generatorOptions хранит «рецепт мира», а не просто конечные результаты.


servers.dat в Java Edition: файл серверов в списке

В Java Edition отдельно есть servers.dat. Это файл, где хранятся сведения о серверах, которые игрок добавил в список серверов в клиенте.

Что servers.dat НЕ делает:
- он не хранит IP-адреса для прямого подключения из вариантов «как сейчас»
- не предназначен для хранения LAN-серверов

Где лежит:
- в корне папки, указанной в профиле лаунчера (по умолчанию .minecraft/servers.dat)

Как хранится:
- это тоже NBT-файл (в описании подчёркивается uncompressed NBT)
- структура содержит список servers, по одному набору данных на каждый сервер


Структура NBT в servers.dat и ключевые теги

В servers.dat обычно встречаются такие поля:
- servers — список серверов
- icon — кэш иконки (в виде Base64 PNG данных)
- ip — адрес сервера
- name — имя сервера, как его видит игрок
- acceptTextures — 1 или 0 (как сервер обрабатывает resource packs)
- в историях фигурируют теги наподобие hideAddress (скрывать адрес в списке)

Также отмечается, что можно добавлять цветные коды в названия через name — если использовать форматирующие коды, поддерживаемые клиентом.


Что означает acceptTextures в servers.dat

Тег acceptTextures управляет тем, что клиент будет делать с ресурсными пакетами сервера:
- если значение соответствует выбранному поведению, клиент может «всегда принимать» или «никогда не принимать» (в описаниях используется логика true/false как 1/0)


Итог: как быстро понять любой .dat в Minecraft

Если вы видите .dat minecraft, ориентируйтесь по месту в папке и названию файла:

  • level.dat — глобальные настройки и параметры мира (NBT, tag, compound, seed, GameType, Time)
  • session.lock — блокировка, чтобы не было одновременной записи в мир
  • data и datapacks — логические данные мира и включённые data packs
  • dimensions, region, entities, poi — структура измерений, блоки по чанкам, сущности и точки интереса
  • servers.dat — список серверов клиента (NBT, поля name, ip, icon, acceptTextures)

Так вы сможете не гадать «что это», а понимать, какой именно кусок мира или настроек хранит конкретный .dat-файл, и за что он отвечает в игре.