MC Toolkit

คู่มือ / คำสั่งและข้อมูล

นามสกุลไฟล์ไม่ได้บอกคุณว่ารูปแบบ schematic คืออะไร — ไฟล์ .schematic 31 จาก 33 ไฟล์เป็นอย่างอื่นที่เดาเอา

ห้ารูปแบบ วิธีการจัดเก็บบล็อกสี่แบบที่แตกต่างกัน และ .schematic ถูกใช้ร่วมกันโดยสองรูปแบบ การดมกลิ่นราก NBT ชนะการเชื่อนามสกุลไฟล์ พร้อมหลักฐานที่นับได้

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

ห้ารูปแบบ ห้านามสกุล

นามสกุลรูปแบบ
.nbtโครงสร้างวานิลลา
.schemSponge
.schematicSponge — โดยค่าเริ่มต้น
.litematicLitematica
.mcstructureBedrock

แถวที่เป็นปัญหาคือ .schematic นามสกุลนั้นถูกใช้ร่วมกันโดยรูปแบบ MCEdit แบบคลาสสิก และของ Sponge และไฟล์ต่าง ๆ ก็ถูกเปลี่ยนชื่อโดยคนที่ไม่รู้หรือไม่แคร์

นับจากคลังไฟล์จริง: จาก ไฟล์ .schematic 33 ไฟล์ เป็น MCEdit 31 ไฟล์ เป็นโครงสร้างวานิลลาหนึ่งไฟล์ และเป็น Litematica หนึ่งไฟล์ ดังนั้นการเดาตามค่าเริ่มต้นของนามสกุลจึงผิดสำหรับเกือบทั้งหมด และสองไฟล์ก็ไม่ใช่ .schematic ในความหมายใด ๆ เลย — แค่ตั้งชื่อผิด

วิธีแก้คือดมกลิ่นราก NBT แล้วให้สิ่งที่ไฟล์ เป็น ชนะสิ่งที่มันถูกเรียก:

  • คีย์ Regions → Litematica
  • palette และ blocks → โครงสร้างวานิลลา
  • มิฉะนั้นให้ทดสอบรูปร่าง MCEdit แล้วจึงถอยกลับไปใช้นามสกุล

สี่วิธีในการจัดเก็บบล็อกเดียวกัน

รูปแบบต่าง ๆ ไม่ได้แตกต่างกันเพียงผิวเผิน แต่ละแบบเก็บข้อมูลบล็อกในวิธีที่แตกต่างกันจริง ๆ และแต่ละทางเลือกก็มีผลตามมา:

วานิลลา .nbt — รายการ หนึ่งรายการต่อหนึ่งตำแหน่งที่บันทึกไว้ แต่ละรายการระบุดัชนีพาเลตต์ อากาศถูกเก็บเหมือนบล็อกอื่น ๆ มีเพียงบล็อกโครงเปล่าที่ถูกเว้นไว้ ดังนั้นสิ่งก่อสร้างกลวงจะประหยัดก็ต่อเมื่อภายในถูกทำให้เป็นโครงเปล่าก่อนบันทึก

Sponge .schem — สตรีม varint ดัชนีพาเลตต์ถูกจัดเก็บเป็นจำนวนเต็มความกว้างแปรผัน: เพย์โหลดเจ็ดบิตต่อไบต์ ตั้งบิตสูงเพื่อดำเนินต่อ พาเลตต์เล็ก ๆ ใช้หนึ่งไบต์ต่อบล็อก พาเลตต์ที่เกิน 127 รายการเริ่มใช้สองไบต์สำหรับดัชนีสูง หนาแน่นแต่บอกตัวเองได้

MCEdit .schematic — อาร์เรย์ไบต์แบน หนึ่งไบต์ต่อบล็อก ดังนั้น ประเภทบล็อกสูงสุด 256 ชนิด — ซึ่งเป็นเหตุผลว่าทำไมมันจึงมี AddBlocks อาร์เรย์ข้างเคียงแบบเลือกได้ที่เพิ่มบิต id อีกสี่บิตเป็น nibble ต่อบล็อก ทำให้ id ไปถึง 4,095 นี่คือรูปแบบ numeric-id แบบเก่าจากก่อนยุค block states: id ของมันเป็นตัวเลข แปลงผ่านคอมพาวด์ SchematicaMapping เมื่อ Schematica เขียนไว้ และผ่านตาราง id วานิลลา 1.12 ในกรณีอื่น

Litematica .litematic — long ที่แพ็กบิต ดัชนีถูกแพ็กที่ max(2, bits needed for the palette) บิตต่อรายการพอดี โดยเริ่มจากบิตที่มีนัยสำคัญน้อยที่สุด และรายการหนึ่งอาจคร่อมขอบเขตระหว่าง long สองตัว พาเลตต์ 5 รายการใช้ 3 บิตต่อบล็อก พาเลตต์ 300 รายการใช้ 9 บิต

พื้นขั้นต่ำที่ 2 บิต สำคัญ: แม้แต่พาเลตต์สองบล็อกก็ไม่บีบอัดต่ำกว่า 2 บิตต่อรายการ ดังนั้นสิ่งก่อสร้างสีเดียวจึงไม่ได้เล็กอย่างที่คณิตศาสตร์บอก

Bedrock เป็น little-endian

.mcstructure เป็นตัวที่แปลกออกไปในระดับที่ต่ำกว่า: Bedrock เขียน NBT แบบ little-endian ในขณะที่ทุกรูปแบบ Java เขียนแบบ big-endian เรื่องนี้ถูกตัดสินก่อนการแยกวิเคราะห์รูปแบบใด ๆ จะเกิดขึ้น — อ่านไบต์ด้วย endianness ผิดแล้วคุณจะไม่ได้โครงสร้างที่ผิด แต่จะได้ขยะที่แยกวิเคราะห์ไม่ผ่านเลย

สิ่งนี้หมายความในทางปฏิบัติ

ถ้า schematic เปิดไม่ได้ที่ไหน คำถามแรกไม่ใช่ "ไฟล์เสียหายหรือเปล่า" แต่เป็น "ไฟล์นี้เป็นอย่างที่ชื่อมันบอกไหม" .schematic จากหน้าดาวน์โหลดมีโอกาสเป็น MCEdit มากกว่า Sponge อย่างมาก และเครื่องมือที่เชื่อนามสกุลจะปฏิเสธไฟล์ที่ดีสมบูรณ์

และเมื่อเปรียบเทียบสองไฟล์ส่งออกของสิ่งก่อสร้างเดียวกัน ความต่างของขนาดส่วนใหญ่เป็นเรื่องของ การเข้ารหัส มากกว่าเนื้อหา — .nbt วานิลลาที่ถูกทำให้เป็นโครงเปล่าของสิ่งก่อสร้างกลวงกับ .litematic ที่แพ็กบิตของสิ่งเดียวกันกำลังแก้ปัญหาที่ต่างกัน

ตัวดูสเกมาติก 3 มิติ →

คู่มือเพิ่มเติม

ดูทั้งหมด →