Java Edition NBT 편집기

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로 저장하며 거의 항상 gzip으로 압축합니다. 아래에 Java 파일을 놓으세요. level.dat, playerdata UUID 파일, servers.dat, 구조물 .nbt, WorldEdit schematic을 모두 처리합니다. 편집기는 압축을 풀고 빅 엔디언으로 분석한 다음 게임이 그대로 인식하도록 다시 gzip으로 압축합니다.

VanillaPaperSpigotPurpurFoliaFabricQuiltForgeNeoForgeSponge

여기에 Java NBT 파일 놓기

level.dat · .nbt · .mcstructure · .schem · .schematic · .dat · 청크 덤프

Java 월드를 구성하는 파일

아래 파일은 모두 위 편집기에서 열 수 있습니다. 리전 파일(.mca) 자체는 단일 NBT 문서가 아니라 여러 압축 청크를 담은 컨테이너이므로 먼저 청크 페이로드를 추출해야 합니다. 편집기는 추출된 zlib 압축 청크 NBT를 읽습니다.

경로내용압축
world/level.dat월드 이름, 게임 모드, 규칙, 스폰, DataVersiongzip
world/level.dat_old같은 파일의 이전 저장본gzip
world/playerdata/<uuid>.dat인벤토리, 엔더 상자, 위치, 체력, XP, 속성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구조물 블록과 jigsaw로 배치하는 구조물gzip

Java의 NBT 인코딩 방식

  • 빅 엔디언. 모든 정수와 부동 소수점 수를 최상위 바이트부터 저장하며 Java의 DataOutputStream과 같습니다.
  • 이름 있는 루트. 파일은 태그 유형 0x0A로 시작하고, 이어서 UTF-8 길이 접두사가 붙은 루트 이름이 옵니다. level.dat에서는 전통적으로 빈 문자열입니다.
  • 수정된 UTF-8. 문자열은 Java의 writeUTF 인코딩을 사용합니다. 2바이트 길이, C0 80으로 기록하는 NUL, 두 개의 3바이트 절반으로 나누는 기본 평면 밖 문자(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는 모두 Vanilla의 NBT 구조를 사용하므로 이 페이지의 내용이 그대로 적용됩니다. 포크는 월드 옆에 paper-world.yml이나 모드 설정 같은 파일을 추가하기도 하지만, 이는 YAML 또는 TOML 파일이며 NBT와 관계없습니다.

모드와 플러그인은 level.dat 또는 playerdata 안에 자체 compound를 추가할 수 있습니다. 이 태그도 다른 태그와 똑같이 열립니다. 모드가 해당 태그를 어떻게 쓰는지 모른다면 수정하지 마세요.

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를 사용해 보세요.

1.20.2+ 네트워크 NBT를 지원하나요?

네. 1.20.2부터 프로토콜에서 루트 이름을 생략합니다. 이 구조의 덤프는 Java 네트워크 형식으로 감지되며, 네트워크 NBT 또는 일반 이름 있는 루트 파일로 다시 저장할 수 있습니다.

.mca 리전 파일의 청크를 편집할 수 있나요?

리전 컨테이너에서 추출한 뒤에는 청크 NBT를 편집할 수 있습니다. .mca 자체는 인덱스와 여러 zlib 압축 청크 페이로드로 구성됩니다. 이 편집기는 컨테이너가 아니라 하나의 NBT 문서를 처리합니다.

playerdata를 수정하면 플레이어 데이터가 손상되나요?

서버가 실행 중일 때 수정하면 문제가 생길 수 있습니다. 서버가 플레이어 상태를 메모리에 보관하고 로그아웃할 때 파일에 써서 수정본을 덮어쓰기 때문입니다. 플레이어를 오프라인으로 만든 뒤 편집하고 다시 접속하게 하세요. playerdata 편집기도 참고하세요.

level.dat는 반드시 gzip이어야 하나요?

Vanilla 로더는 gzip을 읽습니다. 압축을 gzip으로 설정해 저장하세요. 원본이 gzip이었다면 기본값도 gzip이며, 이렇게 저장하면 게임에서 인식합니다.

관련 도구