Trình sửa NBT Java Edition

Hỗ trợ Minecraft Bedrock Edition và Java Edition — cùng mọi phần mềm máy chủ phổ biến hoặc ít gặp của cả hai: Vanilla, Paper, Spigot, Purpur, Folia, Fabric, Forge, NeoForge, Mohist, Sponge, Bedrock Dedicated Server, PocketMine-MP, Nukkit, PowerNukkitX, Cloudburst, Dragonfly, Endstone, LeviLamina và các phần mềm còn lại. Danh sách đầy đủ.

Minecraft Java Edition lưu dữ liệu dưới dạng NBT big-endian, gần như luôn được nén gzip. Thả tệp Java bất kỳ bên dưới — level.dat, tệp UUID trong playerdata, servers.dat, cấu trúc .nbt hoặc schematic WorldEdit — trình sửa sẽ giải nén, phân tích theo big-endian và ghi lại bằng gzip để trò chơi chấp nhận mà không thay đổi định dạng.

VanillaPaperSpigotPurpurFoliaFabricQuiltForgeNeoForgeSponge

Thả tệp NBT Java vào đây

level.dat · .nbt · .mcstructure · .schem · .schematic · .dat · dữ liệu chunk trích xuất

Một thế giới Java gồm những gì

Mọi tệp bên dưới đều mở được trong trình sửa phía trên. Bản thân tệp vùng (.mca) là vùng chứa nhiều chunk đã nén chứ không phải một tài liệu NBT, vì vậy trước tiên hãy trích payload của một chunk — trình sửa đọc NBT chunk nén zlib thu được.

Đường dẫnNội dungKiểu nén
world/level.datTên thế giới, chế độ chơi, luật, điểm sinh, DataVersiongzip
world/level.dat_oldBản lưu trước của cùng tệpgzip
world/playerdata/<uuid>.datTúi đồ, rương Ender, vị trí, máu, XP, thuộc tínhgzip
world/data/raids.dat, idcounts.dat, map_*.datTrạng thái raid, bộ đếm id thực thể, vật phẩm bản đồgzip
world/data/scoreboard.datMục tiêu, đội, điểm sốgzip
world/region/*.mcaNBT chunk trong vùng chứa regionzlib cho mỗi chunk
servers.datDanh sách máy chủ nhiều người chơi từ máy kháchkhông
hotbar.nbtCác hotbar sáng tạo đã lưukhông
*.nbt trong datapackCấu trúc được đặt bởi structure block và jigsawgzip

Cách Java mã hóa NBT

  • Big-endian. Mọi số nguyên và số dấu phẩy động đều lưu byte có trọng số cao nhất trước, đúng với DataOutputStream của Java.
  • Thẻ gốc có tên. Tệp bắt đầu bằng kiểu thẻ 0x0A, sau đó là tên gốc UTF-8 có tiền tố độ dài — trước đây thường để trống trong level.dat.
  • UTF-8 sửa đổi. Chuỗi dùng mã hóa writeUTF của Java: độ dài hai byte, NUL được ghi thành C0 80, còn ký tự ngoài mặt phẳng cơ bản được tách thành hai nửa ba byte (CESU-8). Công cụ xử lý nó như UTF-8 thường sẽ làm hỏng emoji trong tên thế giới; trình sửa này mã hóa chính xác.
  • Mặc định là gzip. NbtIo.readCompressed yêu cầu luồng gzip. Tệp không nén có thể mở trong một số công cụ nhưng không mở trong trò chơi.
  • Thẻ gốc không tên trên mạng. Từ 1.20.2, giao thức gửi NBT không có tên gốc. Bản dump theo cấu trúc này được phát hiện là Mạng Java.

Paper, Spigot, Fabric, Forge — cùng loại tệp

Fork và mod loader thay đổi cách máy chủ chạy, không thay đổi cách thế giới được ghi. Paper, Purpur, Pufferfish, Folia, Fabric, Quilt, Forge, NeoForge, Mohist, Arclight và Sponge đều dùng bố cục NBT của Vanilla, nên mọi nội dung trên trang này áp dụng nguyên vẹn. Fork chỉ thêm các tệp bên cạnh thế giới — paper-world.yml, cấu hình mod — nhưng chúng là YAML hoặc TOML và không liên quan đến NBT.

Mod và plugin có thể thêm compound riêng trong level.dat hoặc playerdata. Các thẻ đó mở như mọi thẻ khác; không sửa nếu bạn không biết mod sử dụng chúng thế nào.

DataVersion và chuyển đổi phiên bản

Thế giới Java có số nguyên DataVersion xác định định dạng thế giới, tăng theo mỗi snapshot. Một số mốc hữu ích: 1.16.5 là 2586, 1.17.1 là 2730, 1.18.2 là 2975, 1.19.4 là 3337, 1.20.4 là 3700, 1.21 là 3953. Máy khách cũ hơn phiên bản đã ghi thế giới từ chối mở chính vì thẻ này; giảm nó thủ công không hạ cấp dữ liệu chunk mà chỉ bỏ lớp bảo vệ. Hãy đọc để biết phiên bản nào đã ghi thế giới; không sửa để ép hạ cấp.

Câu hỏi thường gặp

Tôi có thể mở level.dat Java mà trò chơi không tải được không?

Thường là có — trình sửa chấp nhận byte thừa tốt hơn trò chơi và báo chính xác vị trí dừng phân tích nếu tệp bị cắt ngắn. Nếu công cụ cũng từ chối, hãy thử level.dat_old, tức bản tự động lưu trước đó.

Công cụ có hỗ trợ NBT mạng từ 1.20.2 trở lên không?

Có. Từ 1.20.2, giao thức bỏ tên thẻ gốc. Bản dump dạng này được phát hiện là định dạng Mạng Java và có thể lưu lại dưới dạng NBT mạng hoặc tệp thông thường có thẻ gốc mang tên.

Tôi có thể sửa chunk trong tệp vùng .mca không?

Bạn có thể sửa NBT của chunk sau khi trích nó khỏi vùng chứa. Bản thân .mca gồm một chỉ mục và nhiều payload chunk nén zlib; trình sửa này xử lý một tài liệu NBT riêng lẻ, không xử lý vùng chứa.

Sửa playerdata có làm hỏng người chơi không?

Chỉ khi máy chủ đang chạy trong lúc sửa — máy chủ giữ trạng thái người chơi trong bộ nhớ và ghi ra khi đăng xuất, làm mất thay đổi của bạn. Cho người chơi offline, sửa rồi để họ kết nối lại. Xem trình sửa playerdata.

level.dat có bắt buộc phải nén gzip không?

Bộ nạp Vanilla đọc gzip. Hãy lưu với kiểu nén gzip — mặc định khi tệp đầu vào dùng kiểu này — để trò chơi chấp nhận.

Công cụ liên quan