The Best Resource for Minecraft
The Best Resource for Minecraft

Ang isang .nbt na structure ay nag-iimbak ng mga palette index, hindi mga pangalan ng block — kung kaya't napakaliit nito

Ang isang .nbt na structure ay nag-iimbak ng mga palette index, hindi mga pangalan ng block — kung kaya't napakaliit nito

Tatlong key ang humahawak sa buong build: size, palette at blocks. Ang bawat block ay isang integer na nakaturo sa palette, kaya ang isang 32³ na volume ng stone ay nagkakahalaga lamang ng isang string at 32,768 na numero.

A .nbt structure file — the thing a structure block saves and a datapack ships — is a much simpler format than it looks from the outside. Everything a build needs sits in a handful of top-level keys, and one design decision explains why the files are as small as they are.

Ang tatlong key na naglalaman ng build

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 holds each distinct block state exactly once. Ang isang entry ay Name — the block id, like minecraft:oak_stairs — plus an optional Properties compound holding its blockstate, such as facing: north and half: bottom.

blocks never repeats a name. Bawat entry ay may dalang pos of three integers and a state, and state is an index sa palette, hindi isang block id. Ang oak stairs na nakaharap sa hilaga ay string data nang isang beses, at bawat isa sa kanila pagkatapos noon ay isang maliit na integer.

Iyon ang buong sikreto. Ang isang 32 × 32 × 32 na volume ng payak na stone ay isang palette entry at 32,768 na index number — hindi 32,768 na kopya ng salitang minecraft:stone. The palette grows with how many iba't ibang mga bagay na ginamit mo sa paggawa, at lumalaki ang listahan ng block ayon sa kung gaano kalaki ang iyong itinayo. Napakaibang mga numero ng mga iyon, at isa lamang sa kanila ang karaniwang malaki.

Dalawang kahihinatnan na dapat isaalang-alang sa pagdisenyo

Pinararami ng mga blockstate ang iyong palette, hindi ang iyong listahan ng block. Ang oak stairs ay hindi isang palette entry lamang — isa ang mga ito bawat oryentasyon na aktwal mong ginamit. Nakaharap sa apat na direksyon, itaas at ibabang kalahati, tuwid at parehong panloob at panlabas na kanto: ang parehong block ay maaaring sumakop ng labindalawang palette slot. Kaya ang isang build na maraming detalye ay may malaking palette at ang payak naman ay wala, anuman ang laki.

Mga nailagay na block lamang ang nagkakaroon ng entry. Ang listahan ng block ay isang listahan, hindi isang siksik na 3D array, at ang isang entry na wala roon ay sadyang wala roon — pinupuno ng viewer sa pahinang ito ang grid nito ng -1 and treats a missing coordinate as nothing placed. A hollow build is genuinely cheaper to store than a solid one of the same dimensions.

nbt is per-block and optional

Bawat entry sa blocks may carry its own nbt compound, and most do not. This is where a chest's contents, a sign's text, a spawner's mob and a banner's patterns live — attached to the individual block rather than to the palette.

Mahalaga ang pagkakaiba: ibinabahagi ang palette data at hindi ang block data. Ang dalawang chest ay iisang palette entry, dahil pareho ang kanilang block state — ngunit bawat isa ay nagpapanatili ng sarili nitong imbentaryo sa sarili nitong nbt. Change the block state and you touch the palette; change what is inside it and you touch one entry in the block list.

Pagbasa ng isang layer sa bawat pagkakataon

Sadyang 2D ang viewer dito. Para iguhit ang layer na y tinatahak nito ang listahan ng block, pinapanatili ang mga entry na may pos[1] equals y, at tinitingnan ang bawat isa sa state up in the palette. That is the entire algorithm, and it is worth knowing because it is also how you would inspect one of these files yourself: there is no spatial index to build and no decompression beyond the gzip wrapper. The format is a flat list you filter.

Na nangangahulugan ding walang sinasabi ang structure file tungkol sa saan ito nabibilang sa isang mundo. size is a bounding box and pos values are relative to its corner. The placement is the structure block's business, not the file's.

Subukan ang tool: Structure & NBT Component Tools →