Редактор NBT Java Edition

Поддерживаются Minecraft Bedrock Edition и Java Edition, а также все их серверные ядра, популярные и редкие: Vanilla, Paper, Spigot, Purpur, Folia, Fabric, Forge, NeoForge, Mohist, Sponge, Bedrock Dedicated Server, PocketMine-MP, Nukkit, PowerNukkitX, Cloudburst, Dragonfly, Endstone, LeviLamina и остальные. Полный список.

Minecraft Java Edition хранит данные в NBT с порядком big-endian и почти всегда со сжатием gzip. Перетащите ниже любой Java-файл: level.dat, UUID-файл playerdata, servers.dat, структуру .nbt или схему WorldEdit. Редактор распакует и прочитает его, а затем снова запишет с gzip в формате, который принимает игра.

VanillaPaperSpigotPurpurFoliaFabricQuiltForgeNeoForgeSponge

Перетащите NBT-файл Java сюда

level.dat · .nbt · .mcstructure · .schem · .schematic · .dat · дампы чанков

Из чего состоит мир Java

Все перечисленные ниже файлы открываются в редакторе. Файлы регионов .mca содержат много сжатых чанков, а не один документ NBT, поэтому сначала извлеките данные отдельного чанка. Редактор прочитает полученный NBT со сжатием zlib.

ПутьСодержимоеСжатие
world/level.datНазвание мира, режим игры, правила, спавн, DataVersiongzip
world/level.dat_oldПредыдущее сохранение того же файлаgzip
world/playerdata/<uuid>.datИнвентарь, эндер-сундук, позиция, здоровье, опыт, атрибутыgzip
world/data/raids.dat, idcounts.dat, map_*.datСостояние рейдов, счётчики id сущностей, картыgzip
world/data/scoreboard.datЦели, команды, очкиgzip
world/region/*.mcaNBT чанков внутри контейнера регионаzlib для каждого чанка
servers.datСписок серверов клиентанет
hotbar.nbtСохранённые панели творчестванет
*.nbt в датапакахСтруктуры для структурных блоков и пазловgzip

Как Java кодирует NBT

  • Big-endian. В каждом целом числе и числе с плавающей точкой старший байт идёт первым, как в Java DataOutputStream.
  • Именованный корень. Файл начинается с типа тега 0x0A, затем идёт длина имени корня в UTF-8 и само имя; в level.dat оно обычно пустое.
  • Модифицированный UTF-8. Строки используют кодирование Java writeUTF: двухбайтовую длину, NUL как C0 80, а символы вне основной плоскости — как две трёхбайтовые половины (CESU-8). Обычный UTF-8 повреждает эмодзи в названиях миров; редактор кодирует их правильно.
  • gzip по умолчанию. NbtIo.readCompressed ожидает поток gzip. Несжатый файл открывается в некоторых инструментах, но не в игре.
  • Безымянный корень в сети. Начиная с 1.20.2 протокол передаёт NBT без имени корня. Такие дампы определяются здесь как Сетевой Java.

Paper, Spigot, Fabric и Forge используют те же файлы

Форки и загрузчики модов меняют работу сервера, но не формат мира. Paper, Purpur, Pufferfish, Folia, Fabric, Quilt, Forge, NeoForge, Mohist, Arclight и Sponge используют структуру NBT Vanilla, поэтому эти сведения применимы к ним без изменений. Дополнительные файлы вроде paper-world.yml и конфигураций модов имеют формат YAML или TOML и к NBT не относятся.

Моды и плагины могут добавлять собственные compound-теги в level.dat или playerdata. Они открываются как обычные теги; не изменяйте их, если не знаете, как их использует мод.

DataVersion и перенос между версиями

В мире Java хранится целое DataVersion, обозначающее формат мира и меняющееся с каждым снапшотом. Примеры: 1.16.5 — 2586, 1.17.1 — 2730, 1.18.2 — 2975, 1.19.4 — 3337, 1.20.4 — 3700, 1.21 — 3953. Старый клиент отказывается открывать более новый мир именно по этому тегу. Ручное уменьшение значения не преобразует данные чанков, а только снимает защиту. Используйте тег для определения версии, но не для принудительного отката.

Частые вопросы

Можно открыть Java-файл level.dat, который не загружается в игре?

Обычно да. Редактор допускает лишние байты в конце и сообщает место остановки разбора повреждённого файла. Если файл не открывается, попробуйте предыдущее автосохранение level.dat_old.

Поддерживается сетевой NBT версии 1.20.2+?

Да. Начиная с 1.20.2 протокол не передаёт имя корня. Такой дамп определяется как Сетевой Java и сохраняется как сетевой NBT либо обычный файл с именованным корнем.

Можно изменить чанк из файла региона .mca?

Да, после извлечения NBT чанка из контейнера региона. Сам .mca состоит из индекса и множества сжатых zlib блоков; редактор работает с одним документом NBT, а не с контейнером.

Редактирование playerdata может повредить игрока?

Только если сервер запущен: он держит состояние игрока в памяти и при выходе перезапишет файл. Отключите игрока, внесите изменения и разрешите подключение. См. редактор playerdata.

Для level.dat обязательно сжатие gzip?

Загрузчик Vanilla читает gzip. Сохраняйте файл со сжатием gzip — этот вариант выбирается автоматически, если исходный файл был сжат, — и игра его примет.

Связанные инструменты