Из чего состоит мир Java
Все перечисленные ниже файлы открываются в редакторе. Файлы регионов .mca содержат много сжатых чанков, а не один документ NBT, поэтому сначала извлеките данные отдельного чанка. Редактор прочитает полученный NBT со сжатием zlib.
| Путь | Содержимое | Сжатие |
world/level.dat | Название мира, режим игры, правила, спавн, DataVersion | gzip |
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/*.mca | NBT чанков внутри контейнера региона | zlib для каждого чанка |
servers.dat | Список серверов клиента | нет |
hotbar.nbt | Сохранённые панели творчества | нет |
*.nbt в датапаках | Структуры для структурных блоков и пазлов | gzip |
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. Старый клиент отказывается открывать более новый мир именно по этому тегу. Ручное уменьшение значения не преобразует данные чанков, а только снимает защиту. Используйте тег для определения версии, но не для принудительного отката.