Guides / Commands & Data

File struktur .nbt menyimpan indeks palet, bukan nama blok — itulah mengapa ukurannya sangat kecil

Tiga kunci menyimpan seluruh bangunan: ukuran, palet, dan blok. Setiap blok adalah bilangan bulat yang menunjuk ke palet, jadi volume Batu 32³ membutuhkan satu Benang dan 32.768 angka.

File struktur .nbt — yang disimpan oleh Balok Struktur dan dikirimkan oleh paket data — adalah format yang jauh lebih sederhana daripada kelihatannya dari luar. Semua yang dibutuhkan oleh sebuah bangunan terletak dalam beberapa kunci tingkat atas, dan satu keputusan desain menjelaskan mengapa ukuran file-nya sangat kecil.

Tiga kunci yang membawa bangunan

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 menyimpan setiap status blok yang berbeda tepat satu kali. Sebuah entri adalah Name — ID blok, seperti minecraft:oak_stairs — ditambah senyawa Properties opsional yang menyimpan status bloknya, seperti facing: north dan half: bottom.

blocks tidak pernah mengulang nama. Setiap entri membawa pos dari tiga bilangan bulat dan state, dan state adalah indeks ke dalam palet, bukan ID blok. Tangga Ek yang menghadap ke utara adalah data Benang satu kali, dan setiap Tangga Ek setelah itu adalah bilangan bulat kecil.

Itulah seluruh triknya. Volume Batu polos 32 × 32 × 32 adalah satu entri palet dan 32.768 nomor indeks — bukan 32.768 salinan kata minecraft:stone. Palet tumbuh seiring dengan berapa banyak hal berbeda yang Anda bangun, dan daftar blok tumbuh seiring dengan seberapa besar Anda membangun. Itu adalah angka yang sangat berbeda, dan hanya salah satunya yang biasanya besar.

Dua konsekuensi yang patut dipertimbangkan dalam desain

Status blok melipatgandakan palet Anda, bukan daftar blok Anda. Tangga Ek bukanlah satu entri palet — melainkan satu per orientasi yang benar-benar Anda gunakan. Menghadap empat arah, bagian atas dan bawah, lurus dan kedua sudut dalam dan luar: blok yang sama dapat menempati selusin slot palet. Jadi, bangunan yang kaya detail memiliki palet besar dan bangunan polos tidak, terlepas dari ukurannya.

Hanya blok yang ditempatkan yang mendapatkan entri. Daftar blok adalah daftar, bukan array 3D padat, dan entri yang tidak ada berarti memang tidak ada — penampil di halaman ini mengisi kisi-kisinya dengan -1 dan memperlakukan koordinat yang hilang sebagai tidak ada yang ditempatkan. Bangunan berongga jauh lebih murah untuk disimpan daripada bangunan padat dengan dimensi yang sama.

nbt bersifat per-blok dan opsional

Setiap entri di blocks dapat membawa senyawa nbt-nya sendiri, dan sebagian besar tidak. Di sinilah isi Peti, teks papan, monster spawner, dan pola spanduk berada — melekat pada blok individual daripada ke palet.

Perbedaannya penting: data palet dibagikan dan data blok tidak. Dua Peti adalah satu entri palet, karena keduanya memiliki status blok yang sama — tetapi masing-masing menyimpan inventarisnya sendiri di nbt-nya sendiri. Ubah status blok dan Anda menyentuh palet; ubah apa yang ada di dalamnya dan Anda menyentuh satu entri dalam daftar blok.

Membaca satu lapisan pada satu waktu

Penampil di sini sengaja 2D. Untuk menggambar lapisan y, ia menelusuri daftar blok, menyimpan entri yang pos[1]-nya sama dengan y, dan mencari state masing-masing di palet. Itu adalah seluruh algoritma, dan patut diketahui karena itu juga cara Anda akan memeriksa salah satu file ini sendiri: tidak ada indeks spasial untuk dibangun dan tidak ada dekompresi di luar pembungkus gzip. Formatnya adalah daftar datar yang Anda filter.

Yang juga berarti file struktur tidak memberi tahu Anda apa pun tentang di mana ia berada di dunia. size adalah kotak pembatas dan nilai pos relatif terhadap sudutnya. Penempatan adalah urusan Balok Struktur, bukan file.

Alat struktur dan komponen NBT →

More guides

Browse all →

Cari alat Minecraft lainnya?

Kumpulan generator, penampil, dan pengonversi yang berjalan di peramban — semuanya gratis.