วิธีแก้ level.dat ที่เสีย

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

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

การวินิจฉัยlevel.dat_oldส่วนหัวการบีบอัดไฟล์ขาด

วาง level.dat หรือ level.dat_old ที่นี่

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

ส่วนที่เสียจริง

อาการสาเหตุวิธีแก้
ตัวแก้ไขรายงาน "Unexpected end of data"ไฟล์ขาด — โปรเซสหยุดระหว่างบันทึกหรือพื้นที่ดิสก์เต็มคืน level.dat_old หรือข้อมูลสำรอง ไบต์ที่ขาดไปไม่สามารถกู้คืนได้
เกมแจ้งว่าโลกเสีย แต่ตัวแก้ไขโหลดได้ตามปกติเครื่องมืออื่นเขียนการบีบอัดหรือลำดับไบต์ผิดบันทึกใหม่ที่นี่ด้วยรูปแบบที่ถูกต้องสำหรับ Edition นั้น
โลก Bedrock หายจากรายการความยาวในส่วนหัวไม่ตรงกับ payloadเปิดและบันทึกที่นี่ ระบบจะคำนวณความยาวใหม่โดยอัตโนมัติ
บันทึกเซิร์ฟเวอร์แสดงข้อผิดพลาด class-cast หรือชนิดข้อมูลขณะโหลดมีการเปลี่ยนชนิดแท็กด้วยตนเอง เช่น ใช้ Byte ในตำแหน่งที่ต้องเป็น Intเปลี่ยนแท็กกลับเป็นชนิดที่เกมต้องการ
โลกโหลดได้แต่พาไปเกิดในโลกใหม่level.dat ถูกแทนที่ด้วยไฟล์ที่สร้างใหม่คืนข้อมูลสำรอง โดยทั่วไป chunk ใน region/ หรือ db/ ยังใช้ได้
อ่านไม่ได้ทั้งไฟล์หลักและ _oldพื้นที่เก็บข้อมูลเสีย — ระบบไฟล์ส่งค่าศูนย์หรือข้อมูลขยะของทั้งสองไฟล์คืนจากข้อมูลสำรองที่อยู่นอกเครื่อง และตรวจดิสก์ก่อนเชื่อถือโฮสต์อีกครั้ง

กู้โลกเมื่อไม่มี level.dat

ภูมิประเทศ หีบ และผู้เล่นของโลกไม่ได้อยู่ใน level.dat แต่อยู่ใน region/ (Java) หรือ db/ (Bedrock) หากไฟล์ข้อมูลเมตาเสียเกินซ่อม ให้สร้างโลกใหม่ด้วยเวอร์ชันและการตั้งค่าเดียวกัน แล้วย้ายข้อมูล chunk เข้าไป จากนั้นตั้ง LevelName พิกัดจุดเกิด และกฎเกมในไฟล์ใหม่ คุณจะเสียเฉพาะข้อมูลเมตา ไม่ใช่สิ่งปลูกสร้าง ต้องยืนยันเวอร์ชันก่อน โลก Java มี DataVersion และไฟล์ที่สร้างใหม่ต้องไม่เก่ากว่า chunk ที่นำเข้า

ป้องกันไม่ให้เกิดซ้ำ

  • หยุดเซิร์ฟเวอร์ก่อนคัดลอกหรือแก้ไข ความเสียหายส่วนใหญ่มาจากการคัดลอกไฟล์ขณะที่กำลังเขียน
  • สร้าง snapshot ตามกำหนดเวลาและเก็บไว้นอกเครื่อง ข้อมูลสำรองบนดิสก์เดียวกันไม่รอดจากความเสียหายของพื้นที่เก็บข้อมูลที่เป็นต้นเหตุ
  • ใช้ save-off / save-all ก่อนและหลัง snapshot ขณะระบบทำงาน เพื่อคัดลอกโลกในช่วงที่ไม่มีการเขียนข้อมูล
  • ตรวจพื้นที่ดิสก์ ดิสก์เต็มทำให้ไฟล์บันทึกขาดโดยไม่มีการแจ้งเตือน และ level.dat ถูกเขียนเป็นลำดับสุดท้าย
  • แก้ค่า ไม่แก้โครงสร้าง การเปลี่ยนชื่อแท็กหรือชนิดข้อมูลเป็นการแก้ที่เกมไม่สามารถรองรับได้

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

level.dat_old คืออะไร

คือข้อมูลบันทึกครั้งก่อน Minecraft เปลี่ยนชื่อไฟล์ปัจจุบันเป็น level.dat_old ก่อนเขียนไฟล์ใหม่ จึงเป็นข้อมูลสำรองหนึ่งรุ่นที่ควรลองคืนเป็นอันดับแรก

ตัวแก้ไข NBT ซ่อมไฟล์ที่ขาดได้หรือไม่

เครื่องมือระบุตำแหน่งที่ข้อมูลหยุดได้อย่างแม่นยำ แต่ไม่สามารถสร้างไบต์ที่ขาดขึ้นใหม่ หากอ่านได้เพียงบางส่วน คุณต้องใช้ข้อมูลสำรอง

สิ่งปลูกสร้างจะหายหรือไม่

ไม่หายเพราะ level.dat เสียเพียงอย่างเดียว chunk อยู่ใน region/ หรือ db/ และไฟล์โลกใหม่ที่มีเวอร์ชันเดียวกันสามารถใช้ข้อมูลเหล่านี้ได้

เซิร์ฟเวอร์บอกว่า level.dat ปกติ แต่โลกว่างเปล่า

ปัญหาอยู่ที่พื้นที่เก็บ chunk ไม่ใช่ข้อมูลเมตา ตรวจว่าได้คัดลอก region/ หรือ db/ มาด้วย และพิกัดจุดเกิดใน level.dat ชี้ไปยังตำแหน่งที่ต้องการ

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