โปรแกรมแก้ไข NBT Bedrock และ 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 และอื่น ๆ ดูรายการทั้งหมด.

รองรับ Bedrock Edition พร้อมซอฟต์แวร์เซิร์ฟเวอร์ Bedrock ทุกแบบ และรองรับ Java Edition พร้อมซอฟต์แวร์เซิร์ฟเวอร์ Java ทุกแบบ รวมถึงแบบเฉพาะทาง วางไฟล์ level.dat, playerdata, .nbt, .mcstructure, .schem หรือ .schematic ลงในช่องด้านล่าง แก้ไขแท็กใดก็ได้ในโครงสร้าง แล้วดาวน์โหลดกลับในรูปแบบไบนารีเดิม ระบบตรวจหาลำดับไบต์ ส่วนหัว และการบีบอัดโดยอัตโนมัติ ทุกอย่างทำงานในเบราว์เซอร์ ไม่อัปโหลด ไม่ต้องมีบัญชี และไม่ต้องติดตั้ง

Bedrock EditionJava EditionVanillaPaperSpigotPurpurPufferfishFoliaLeavesFabricQuiltForgeNeoForgeMohistArclightSpongeBedrock Dedicated ServerPocketMine-MPNukkitPowerNukkitXNukkit-MOTCloudburstDragonflyEndstoneLeviLaminaAllayJukeboxMCGoMintGeyserWaterdogPE

วาง ไฟล์ NBT ใดก็ได้ ที่นี่

level.dat · .nbt · .mcstructure · .schem · .schematic · .dat · ข้อมูลชังก์ที่แยกออกมา

ไฟล์ NBT ทุกชนิดที่ Minecraft สร้าง

NBT (Named Binary Tag) เป็นรูปแบบเดียวที่มีการเข้ารหัสหลายแบบ โดย Minecraft แต่ละ Edition ตัวเปิดเกม และซอฟต์แวร์เซิร์ฟเวอร์ใช้ส่วนผสมต่างกัน โปรแกรมนี้รองรับทั้งหมดและเลือกแบบที่ถูกต้องจากไบต์ของไฟล์ คุณจึงไม่ต้องรู้ชนิดก่อนเปิด

ไฟล์แหล่งที่มาการเข้ารหัสการบีบอัด
level.datโลก Java — Vanilla, Paper, Spigot, Fabric, ForgeBig-endian มีชื่อรากgzip
level.datโลก Bedrock — BDS, PocketMine-MP, Nukkit, MCPELittle-endian + ส่วนหัว 8 ไบต์ไม่มี
<uuid>.datJava playerdata/Big-endiangzip
servers.dat, hotbar.nbtไคลเอนต์ JavaBig-endianไม่มี
idcounts.dat, raids.dat, map_*.datโลก Java data/Big-endiangzip
.nbtStructure Block และโครงสร้างจาก datapackBig-endiangzip
.schem, .schematicWorldEdit, Sponge, MCEditBig-endiangzip
.mcstructureStructure Block ของ BedrockLittle-endianไม่มี
เพย์โหลดของชังก์ไฟล์ Region .mca ที่แยกออกมา หรือค่า LevelDBลำดับไบต์แบบใดก็ได้zlib หรือไม่บีบอัด
ข้อมูลแพ็กเก็ตโปรโตคอล Bedrock หรือโปรโตคอล Java 1.20.2+Varint LE / BE ไม่มีชื่อรากไม่มี

วิธีแก้ไขไฟล์ NBT

  1. นำไฟล์ออกจากเซิร์ฟเวอร์หรืออุปกรณ์ เซิร์ฟเวอร์ Java เก็บไว้ใน world/, เซิร์ฟเวอร์ Bedrock เก็บไว้ใน worlds/YourWorld/, Android เก็บไว้ใน games/com.mojang/minecraftWorlds/<id>/. หยุดเซิร์ฟเวอร์ก่อน เพื่อไม่ให้มีการเขียนไฟล์ระหว่างคัดลอก
  2. วางไฟล์ลงในโปรแกรมแก้ไข ป้ายเหนือโครงสร้างจะแสดง Edition การเข้ารหัส การบีบอัด และสำหรับ Bedrock จะแสดงเวอร์ชันพื้นที่จัดเก็บจากส่วนหัว
  3. แก้ไข แตะค่าเพื่อแก้ไขตรงจุด ใช้การค้นหาเพื่อไปยังแท็กตามชื่อหรือค่า + เพื่อเพิ่มแท็กใน compound หรือ list × เพื่อลบแท็ก
  4. บันทึกและดาวน์โหลด รูปแบบเอาต์พุตและการบีบอัดจะใช้ค่าเดิมของไฟล์โดยอัตโนมัติ การแก้ไขทั่วไปจึงคงรูปแบบไบต์เดิม
  5. นำไฟล์กลับไปไว้ที่เดิมแล้วเริ่มใหม่ เก็บไฟล์ต้นฉบับเป็นข้อมูลสำรองจนกว่าโลกจะโหลดสำเร็จและทำงานถูกต้อง

ความสามารถของโปรแกรมแก้ไขนี้

การเข้ารหัสห้าแบบในช่องเดียว

Java big-endian, Bedrock little-endian, NBT เครือข่ายแบบ varint ของ Bedrock, NBT เครือข่ายแบบไม่มีชื่อรากของ Java 1.20.2+ และ level.dat. ระบบตรวจหาจากไฟล์ ไม่ได้คาดเดา

gzip และ zlib ในเบราว์เซอร์

การคลายและบีบอัดใหม่ใช้ Compression Streams API ของเบราว์เซอร์ ดังนั้นไฟล์ Java level.dat จึงบันทึกกลับเป็นไฟล์ที่เกมยอมรับโดยไม่เปลี่ยนรูปแบบ

ค่า long 64 บิตจริง

TAG_Long จะเก็บเป็น BigInt. ค่า seed ของโลกและครึ่งหนึ่งของ UUID จึงไม่เสียจากการปัดเศษ floating-point ซึ่งเป็นปัญหาในเครื่องมือ NBT บนเบราว์เซอร์จำนวนมาก

การเข้ารหัสสตริงที่ถูกต้อง

Java ใช้ modified UTF-8 (CESU-8) ส่วน Bedrock ใช้ UTF-8 มาตรฐาน โปรแกรมเข้ารหัสตาม Edition ทำให้อีโมจิและชื่อโลกที่ไม่ใช่อักษรละตินยังคงถูกต้อง

รองรับไฟล์ขนาดใหญ่

อาร์เรย์เก็บเป็น typed array และโครงสร้างแสดงผลแบบทยอยครั้งละ 200 รายการ ไฟล์ NBT ของชังก์ขนาดหนึ่งเมกะไบต์จึงเปิดได้โดยแท็บไม่ค้าง

ค้นหาทั่วทั้งโครงสร้าง

ค้นหาแท็กตามชื่อหรือค่าจากทุกตำแหน่งในไฟล์ แล้วไปยังแท็กนั้นพร้อมขยายพาธ

ส่งออก SNBT

ส่งออกโครงสร้างทั้งหมดเป็น SNBT ซึ่งเป็นรูปแบบข้อความที่ใช้โดย /data และ datapack เพื่อเปรียบเทียบ แชร์ หรือวางในคำสั่ง

แปลงรูปแบบ

อ่านไฟล์ Bedrock แล้วเขียนเป็น Java big-endian gzip หรือทำกลับกัน เหมาะกับงานโปรโตคอล การทดสอบ และการพัฒนาเครื่องมือ

ข้อมูลไม่ออกจากอุปกรณ์

ไฟล์ถูกอ่านด้วย FileReader, แยกข้อมูลด้วย JavaScript และส่งกลับเป็น blob ในหน่วยความจำ ไม่มีปลายทางสำหรับอัปโหลด

ซอฟต์แวร์เซิร์ฟเวอร์ที่รองรับ — ทุกแบบ

เกมเป็นผู้เขียน NBT ไม่ใช่ตัวซอฟต์แวร์เซิร์ฟเวอร์ ดังนั้นซอฟต์แวร์ใดที่เก็บโลก Minecraft ก็ต้องใช้การเข้ารหัสแบบใดแบบหนึ่งที่โปรแกรมนี้อ่านได้ รายการด้านล่างจึงครอบคลุมจริง เพราะซอฟต์แวร์ที่เขียนโลกต้องใช้โครงสร้างแบบ Vanilla เพื่อให้ไคลเอนต์อ่านได้

Bedrock Edition — NBT แบบ little-endian พร้อมส่วนหัว level.dat ขนาด 8 ไบต์

Bedrock Dedicated Server (BDS), PocketMine-MP (PM3, PM4, PM5), Nukkit, Nukkit-MOT, PowerNukkitX, Cloudburst Server, Dragonfly, Endstone, LeviLamina และ BDSX, Allay, JukeboxMC, GoMint, Sculk, ElementZero, LiteLoaderBDS, รวมถึงไคลเอนต์ MCPE และ MCBE บน Android, iOS, Windows, คอนโซล และ Switch ซึ่งใช้ worlds/<World>/level.dat, ส่วนหัวเดียวกัน และแท็กเดียวกัน — ดู ขั้นตอนสำหรับเซิร์ฟเวอร์.

Java Edition — NBT แบบ big-endian และ gzip

Vanilla, CraftBukkit, Spigot, Paper, Purpur, Pufferfish, Folia, Leaves, Gale, Petal, Airplane, Sponge (SpongeVanilla, SpongeForge), Fabric, Quilt, Forge, NeoForge, Mohist, Arclight, Magma, Ketting, Banner, Cardboard, Glowstone, Thermos, Uberbukkit รวมถึง fork, เซิร์ฟเวอร์ modpack และรุ่นเก่าอื่นทั้งหมด หากเขียนไฟล์ world/level.dat, โปรแกรมนี้ก็เปิดได้ — ดูรายละเอียด.

พร็อกซีและบริดจ์

Geyser, WaterdogPE, Waterfall, Velocity และ BungeeCord ไม่ได้เก็บโลก แต่ส่ง NBT ผ่านเครือข่าย ข้อมูลที่จับจากซ็อกเก็ตเป็น NBT เครือข่าย ได้แก่ varint little-endian ฝั่ง Bedrock และ big-endian แบบไม่มีชื่อรากใน Java 1.20.2+ ซึ่งเปิดที่นี่ได้โดยตรงทั้งคู่

ซอฟต์แวร์อื่นที่ไม่อยู่ในรายการ

ไม่ว่าจะเป็น fork ที่ปรับเอง ซอฟต์แวร์ส่วนตัว โครงการสอน หรือเซิร์ฟเวอร์ที่เขียนเอง หากไฟล์เป็น NBT โปรแกรมจะตรวจหาหนึ่งในห้าการเข้ารหัสแล้วเปิดไฟล์ โดยไม่อ้างอิงชื่อซอฟต์แวร์

ใช้ตัวแยกข้อมูลจากโค้ดของคุณ

หน้านี้เปิดให้เข้าถึงเอนจินผ่าน window.NBT, จึงสั่งตัวแยกข้อมูลเดียวกับที่ UI ใช้จากคอนโซลเบราว์เซอร์ หรือนำไปใช้ซ้ำใน userscript ได้:

const bytes = new Uint8Array(await file.arrayBuffer());
const { root, format, compression, headerVersion } = await NBT.read(bytes);

root.value.find(t => t.name === "LevelName").value = "New World";

const out = await NBT.write(root, format, { compression, headerVersion });

แท็กเป็นออบเจ็กต์ทั่วไป — { type, name, value, listType } — อาร์เรย์ใช้ Int8Array, Int32Array และ BigInt64Array, และค่า long ใช้ BigInt. เอกสาร อ้างอิงรูปแบบ NBT อธิบายแท็กทุกชนิดและความแตกต่างของแต่ละการเข้ารหัส

คำถามที่พบบ่อย

โปรแกรมแก้ไข NBT นี้ใช้ฟรีหรือไม่?

ใช่ และเป็นโอเพนซอร์สภายใต้สัญญาอนุญาต MIT ไม่มีแพ็กเกจแบบชำระเงิน ไม่ต้องสมัคร และไม่จำกัดการอัปโหลด เพราะไม่มีส่วนประมวลผลฝั่งเซิร์ฟเวอร์ โปรแกรมทั้งหมดเป็นหน้าสแตติกหนึ่งหน้าและไฟล์ทรัพยากรสองไฟล์

รองรับทั้ง Java Edition และ Bedrock Edition หรือไม่?

รองรับทั้งคู่ ไฟล์ Java Edition เป็น big-endian และมักบีบอัดด้วย gzip ส่วนไฟล์ Bedrock เป็น little-endian และ level.dat มีส่วนหัวเพิ่ม 8 ไบต์ โปรแกรมตรวจหาแบบของไฟล์และเขียนกลับเป็นแบบเดิมเมื่อบันทึก

ไฟล์โลกของฉันถูกอัปโหลดไปที่ใดหรือไม่?

ไม่ ไฟล์ถูกอ่านภายในอุปกรณ์ด้วย FileReader API และสร้างไฟล์ดาวน์โหลดจาก blob ในหน่วยความจำ เมื่อโหลดหน้าแล้วคุณตัดการเชื่อมต่อเครือข่ายและยังใช้งานต่อได้

ใช้บน Android หรือ iOS ได้หรือไม่?

ได้ รูปแบบหน้าออกแบบสำหรับมือถือ มีพื้นที่แตะ 44 px และแถบคำสั่งคงที่ บน Android เลือกไฟล์โลกจากตัวจัดการไฟล์ได้โดยตรง ส่วน iOS ต้องนำไฟล์ไว้ในแอป Files ก่อนเนื่องจาก sandbox

NBT กับ SNBT ต่างกันอย่างไร?

NBT คือรูปแบบไบนารีที่ Minecraft เก็บบนดิสก์ ส่วน SNBT คือรูปแบบข้อความซึ่งใช้เขียนในคำสั่ง เช่น /data merge. โปรแกรมนี้อ่าน NBT ไบนารีและส่งออก SNBT ได้ เพื่อเปรียบเทียบสองไฟล์หรือวางโครงสร้างในคำสั่ง

เครื่องมือนี้ใช้แทนโปรแกรมใดได้บ้าง?

โปรแกรมแก้ไข NBT บนเดสก์ท็อป เช่น NBTExplorer และเครื่องมือเว็บเฉพาะงานที่รองรับเพียง Edition เดียว ดู การเปรียบเทียบ NBTExplorer ออนไลน์ เพื่อดูฟังก์ชันที่รองรับและไม่รองรับ

เครื่องมือที่เกี่ยวข้อง