Guides / Commands & Data

.nbt yapı dosyaları blok adlarını değil, palet indekslerini depolar — bu yüzden çok küçükler

Bir yapının tamamını üç anahtar tutar: boyut, palet ve bloklar. Her blok, palete işaret eden bir tam sayıdır, bu nedenle 32³ hacmindeki bir taş, bir ip ve 32.768 sayıya mal olur.

Bir .nbt yapı dosyası — yani bir yapı bloğunun kaydettiği ve bir veri paketinin gönderdiği şey — dışarıdan göründüğünden çok daha basit bir formattır. Bir yapının ihtiyaç duyduğu her şey birkaç üst düzey anahtarda bulunur ve tek bir tasarım kararı, dosyaların neden bu kadar küçük olduğunu açıklar.

Yapıyı taşıyan üç anahtar

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 her farklı blok durumunu tam olarak bir kez tutar. Bir giriş bir Name'tür — minecraft:oak_stairs gibi blok kimliği — artı facing: north ve half: bottom gibi blok durumunu tutan isteğe bağlı bir Properties bileşeni.

blocks asla bir adı tekrar etmez. Her giriş üç tam sayıdan oluşan bir pos ve bir state taşır ve state bir blok kimliği değil, palet içindeki bir indekstir. Kuzeye bakan Meşe Merdiven bir kez ip verisidir ve ondan sonraki her biri küçük bir tam sayıdır.

Tüm numara bu. Düz taştan oluşan 32 × 32 × 32'lik bir hacim, bir palet girişi ve 32.768 indeks numarasıdır — 32.768 kez minecraft:stone kelimesi değil. Palet, kaç farklı şeyle inşa ettiğinize göre büyür ve blok listesi, ne kadar büyük inşa ettiğinize göre büyür. Bunlar çok farklı sayılardır ve genellikle sadece biri büyüktür.

Etrafında tasarlamaya değer iki sonuç

Blok durumları paletinizi çoğaltır, blok listenizi değil. Meşe Merdiven tek bir palet girişi değildir — kullandığınız her yön için bir tanedir. Dört yöne bakan, üst ve alt yarım, düz ve hem iç hem de dış köşeler: aynı blok bir düzine palet yuvası kaplayabilir. Bu nedenle, detay ağırlıklı bir yapı, boyutundan bağımsız olarak büyük bir palete sahipken, sade bir yapıya sahip değildir.

Yalnızca yerleştirilen bloklar bir giriş alır. Blok listesi bir listedir, yoğun bir 3B dizi değildir ve orada olmayan bir giriş basitçe orada değildir — bu sayfadaki görüntüleyici ızgarasını -1 ile doldurur ve eksik bir koordinatı yerleştirilmemiş olarak kabul eder. İçi boş bir yapı, aynı boyutlardaki dolu bir yapıdan depolama açısından gerçekten daha ucuzdur.

nbt blok başına ve isteğe bağlıdır

blocks'teki her giriş kendi nbt bileşenini taşıyabilir ve çoğu taşımaz. Bir sandığın içeriği, bir tabelanın metni, bir spawner'ın mob'u ve bir sancağın desenleri burada bulunur — palete değil, bireysel bloğa bağlıdır.

Bu ayrım önemlidir: palet verileri paylaşılırken, blok verileri paylaşılmaz. İki sandık tek bir palet girişidir, çünkü aynı blok durumundadırlar — ancak her biri kendi envanterini kendi nbt'sinde tutar. Blok durumunu değiştirirseniz palete dokunursunuz; içindeki şeyi değiştirirseniz blok listesindeki bir girişe dokunursunuz.

Her seferinde bir katman okuma

Buradaki görüntüleyici kasıtlı olarak 2B'dir. y katmanını çizmek için blok listesini dolaşır, pos[1]'i y'ye eşit olan girişleri tutar ve her birinin state'unu palette arar. Algoritmanın tamamı budur ve bilmeye değerdir çünkü bu dosyaları kendiniz nasıl inceleyeceğiniz de budur: oluşturulacak bir uzamsal indeks ve gzip sarmalayıcısının ötesinde bir sıkıştırma yoktur. Format, filtrelediğiniz düz bir listedir.

Bu aynı zamanda bir yapı dosyasının bir dünyada nereye ait olduğu hakkında size hiçbir şey söylemediği anlamına gelir. size bir sınırlayıcı kutudur ve pos değerleri köşesine görecelidir. Yerleştirme, dosyanın değil, yapı bloğunun işidir.

Yapı ve NBT bileşeni araçları →

More guides

Browse all →

Başka Minecraft aracı mı arıyorsunuz?

Tarayıcıda çalışan üreteç, görüntüleyici ve dönüştürücü seti — hepsi ücretsiz.