MC Toolkit

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

ไฟล์ .nbt เก็บดัชนีพาเลตต์ ไม่ใช่ชื่อบล็อก — นั่นคือเหตุผลที่มันเล็กมาก

มีเพียงสามคีย์ที่เก็บสิ่งก่อสร้างทั้งหมดไว้: size, palette และ blocks โดยแต่ละบล็อกเป็นจำนวนเต็มที่ชี้เข้าไปในพาเลตต์ ดังนั้นปริมาตรหินขนาด 32³ จึงมีต้นทุนเพียงหนึ่งสตริงกับรายการเล็ก ๆ 32,768 รายการ — อย่างละตำแหน่งกับดัชนี ไม่มีชื่อเลย

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

สามคีย์ที่แบกสิ่งก่อสร้างไว้

size     [x, y, z]                       — a list of exactly three integers
palette  [ { Name, Properties } … ]      — every DISTINCT block state, once
blocks   [ { pos, state, nbt } … ]       — one entry per placed block

palette เก็บแต่ละสถานะบล็อกที่แตกต่างกันไว้เพียงครั้งเดียว แต่ละรายการคือ Name — ไอดีบล็อก เช่น minecraft:oak_stairs — บวกกับคอมพาวด์ Properties ที่ไม่บังคับซึ่งเก็บบล็อกสเตตของมัน เช่น facing: north และ half: bottom

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

นั่นคือกลเม็ดทั้งหมด ปริมาตรหินธรรมดาขนาด 32 × 32 × 32 คือพาเลตต์หนึ่งรายการกับรายการบล็อก 32,768 รายการซึ่งเป็นตำแหน่งบวกดัชนี — ไม่ใช่คำว่า minecraft:stone ซ้ำกัน 32,768 ชุด พาเลตต์จะโตตามจำนวน สิ่งที่ แตกต่างกัน ที่คุณใช้สร้าง และรายการบล็อกจะโตตาม ขนาด ที่คุณสร้าง สองอย่างนี้เป็น ตัวเลขที่ต่างกันมาก และโดยปกติมีเพียงอย่างเดียวที่มักจะใหญ่

ผลที่ตามมาสองข้อที่ควรคำนึงถึงตอนออกแบบ

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

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

nbt เป็นรายบล็อกและไม่บังคับ

แต่ละรายการใน blocks อาจมีคอมพาวด์ nbt ของตัวเอง และส่วนใหญ่ไม่มี นี่คือที่อยู่ของ ไอเท็มในหีบ ข้อความบนป้าย ม็อบในตัวเกิด และลวดลายบนธง — แนบอยู่กับบล็อกแต่ละตัว ไม่ใช่กับพาเลตต์

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

อ่านทีละชั้น

ตัวแสดงผลตรงนี้เป็น 2D โดยตั้งใจ การวาดชั้น y จะไล่ดูรายการบล็อก เก็บรายการที่ pos[1] เท่ากับ y แล้วค้น state ของแต่ละรายการในพาเลตต์ นั่นคืออัลกอริทึมทั้งหมด และควรรู้ไว้เพราะมันก็เป็นวิธีที่คุณจะตรวจสอบไฟล์แบบนี้ด้วยตัวเองเช่นกัน: ไม่มีดัชนีเชิงพื้นที่ให้สร้าง และไม่มีการคลายการบีบอัดใด ๆ นอกเหนือจากตัวห่อ gzip รูปแบบนี้คือลิสต์แบน ๆ ที่คุณกรอง

ซึ่งหมายความว่าไฟล์โครงสร้างไม่ได้บอกอะไรคุณเลยว่า มันควรอยู่ตรงไหน ในโลก size คือ กล่องขอบเขต และค่า pos เป็นค่าสัมพัทธ์กับมุมของมัน การวางตำแหน่งเป็นเรื่องของ บล็อกโครงสร้าง ไม่ใช่ของไฟล์

เครื่องมือโครงสร้างและคอมโพเนนต์ NBT →

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

ดูทั้งหมด →