Concepten

Eigenschappen

Alle blokken zijn van het basis type. Voorbeelden van basis types zijn aarde, treden en bladeren. Echter voor het verder verschillend maken van deze basis typen, heeft elk blok zijn eigen set van eigenschappen, waarvan elk een beperkte set waarden kunnen aannemen (o.a. podzol dirt, bakstenen treden, eiken bladeren). Een blok kan meerdere eigenschappen hebben (zoals oostelijk gericht, bakstenen treden).

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]

Sommige eigenschappen zijn echter tijdelijk, ze bestaan alleen terwijl het spel draait. Hun waardes worden niet naar het opslagbestand geschreven omdat hun waardes automatisch gedetecteerd kunnen worden. Bij Redstone wire kan worden gedetecteerd of er power in zit of niet aan de hand van de omgeving (is er een lever aan?). In dit geval is de “power”-eigenschap van “minecraft:redstone_wire” een tijdelijke eigenschap.

Op het punt van schrijven, gebruikt Minecraft nog steeds voor het opslaan van blok informatie een oud format met 12 bits voor een basis type (4096 basis typen mogelijk) en 4 bits voor “metadata” (16 mogelijke waarden per basis type). Echter eigenschappen zijn niet direct gerelateerd aan metadata vanwege legacy redenen: bijvoorbeeld het Oven blok heeft twee basis type (op dit moment smelten en niet smelten), elk gebruiken ze hun meta data niet. Aan de andere kant gebruikt hout zijn metadata volledig, maar vanwege de combinatie van eigenschappen met het aantal mogelijkheden van maximaal 16 waarden (denk aan drie boomsoorten en richtingen), moest hout opgesplitst worden in 2 basis types.

In the future, there will only be one 16 bit number (65536 possible combinations of base type + properties). Blocks will be assigned an ID automatically and this assignment will be stored in the world save file. This is illustrated below:

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.

Tile Entity informatie

Met de 65536 mogelijke combinaties is het niet mogelijk om veel informatie op te slaan zoals de inventory, daarom is er een extra manier van opslaan dat sommige blokken gebruiken. Dit zijn zogenaamde ‘tile entities’.

Tile entities themselves are Java objects (like a Chest class). Normally, Minecraft code would access data in a tile entity by getting its instance and then calling it methods or fields, like a regular object (world.getTileEntity(position).getInventory()). When tile entities need to be written to the save file, they are stored in the NBT format.

Tip

Sommige dingen, zoals schilderijen, zijn echter entiteiten.

Deze Tile Entities kunnen echter ook de rendering aanpassen zodat ze er niet uit zien als een gewoon blok, maar dit is over het algemeen inefficiënt en veroorzaakt frame rate drops voor clients.