Guides / Commands & Data

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

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

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

สามคีย์หลักที่เก็บโครงสร้าง

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 — ID บล็อก เช่น minecraft:oak_stairs — พร้อมด้วยคอมปาวด์ Properties ที่เป็นทางเลือกซึ่งเก็บสถานะบล็อกของมัน เช่น facing: north และ half: bottom

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

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

สองผลลัพธ์ที่ควรคำนึงถึงในการออกแบบ

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

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

nbt เป็นแบบต่อบล็อกและเป็นทางเลือก

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

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

การอ่านทีละเลเยอร์

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

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

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

More guides

Browse all →

กำลังหาเครื่องมือ Minecraft อื่นอยู่ไหม

ชุดเครื่องมือสร้าง ดู และแปลงไฟล์ที่ทำงานในเบราว์เซอร์ ฟรีทั้งหมด