Koncepcje

Właściwości

Wszystkie bloki mają podstawowy typ. Przykłady podstawowych typów to ziemia, schody i liście. Jednak aby dalej zróżnicować te podstawowe typy, każdy blok ma zestaw różnych właściwości, z których każda może przyjąć jedną z ustalonych wartości (np. bielica ziemia, ceglane schody, dębowe liście) Blok może mieć wiele właściwości (takich jak zwrócone na wschód, ceglane schody).

Examples of block properties

minecraft:dirt[snowy=false,variant=default]
minecraft:dirt[snowy=true,variant=default]
minecraft:dirt[snowy=false,variant=grassless]
minecraft:dirt[snowy=true,variant=grassless]
minecraft:planks[variant=oak]
minecraft:planks[variant=spruce]
minecraft:planks[variant=birch]
minecraft:redstone_wire[east=up,north=up,power=0,south=up,west=up]
minecraft:redstone_wire[east=side,north=up,power=0,south=up,west=up]
minecraft:redstone_wire[east=none,north=up,power=0,south=up,west=up]
minecraft:redstone_wire[east=up,north=side,power=0,south=up,west=up]

Niektóre właściwości są efemeryczne – istnieją tylko wtedy, gdy gra jest uruchomiona. Ich wartości nie są wpisane do zapisywania pliku bo ich wartości mogą być wykrywane automatycznie. Na przykład z przewodu Redstone, czy zasilane są lub mogą być wykrute na podstawie środowiska (jest tam dźwignia włączona?). W takim przypadku power właściwość minecraft:redstone_wire jak pokazano powyżej jest właściwością ulotną.

W momencie pisania, Minecraft nadal przechowuje dane Block-u do starego formatu z 12 bitów typu podstawowego (4096 możliwe typy podstawowe) i 4 bity na „metadane” (16 możliwych wartości jako typ podstawowy). Jednakże właściwości nie są mapowane bezpośrednio do metadata ze starszych względów: na przykład Block piec składa się z dwóch typów podstawowych (w trakcie wytapiania i nie wytapiania), każdy nie wykorzystując metadata w ogóle. Z drugiej strony logi do wykorzystania w metadata, ale ponieważ połączenie przekracza właściwości 16 możliwych wartości (w myśli typ trzewka i kierunku), logi należy podzielić na dwa podstawowe typy.

W przyszłości będzie tylko jeden numer 16-bitowy (65536 możliwych kombinacji typu podstawowego + właściwości). Block będzie przypisany pod identyfikator automatycznie i te zadania będę przechowywane w pliku zapisu World. Jest to zilustrowane poniżej:

0 => minecraft:dirt[snowy=false,variant=default]
1 => minecraft:dirt[snowy=true,variant=default]
2 => minecraft:dirt[snowy=false,variant=grassless]
3 => minecraft:dirt[snowy=true,variant=grassless]
4 => minecraft:planks[variant=oak]
5 => minecraft:planks[variant=spruce]
etc.

Dane Tile Entity

Z 65536 możliwymi kombinacjami nie jest możliwe przechowanie wielu informacji takich jak ekwipunek, więc istnieje inny sposób na przechowywanie danych przez niektóre bloki: tile entity.

Podmiotami Płytek są obiekty Java (podobnie jak klasa Chest). Normalnie kod Minecraft chciałby dostępu do danych w podmiocie Płytek przez uzyskanie go poprzez jego wystąpienie, a następnie wywołanie go metodą lub polem, takie jak regularne obiekty (world.getTileEntity(position).getInventory()). Kiedy podmiot Płytki muszą być zapisane są one przechowywane w formacie NTB.

Wskazówka

Niektórze rzeczy, takie jak np. obrazy są w rzeczywistości typu entity.

Jednak podmiotami Płytek również można zastąpić renderowanie, więc nie wyglądają jak regularne Block-i, chociaż zazwyczaj jest to nieefektywne i powoduje w kliencie gracza spadek FPS.