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 de toekomst zal er alleen een 16 bit nummer zijn (65536 mogelijke combinaties van het basistype + de eigenschappen). Blokken zullen automatisch worden aangeschreven met een ID en dat wordt opgeslagen in de save bestanden. Dit is hieronder beschreven:
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 zijn Java objecten (zoals een ‘Kist’ class). Normaal gesproken zou Minecraft code toegang tot de gegevens van een tegel entiteit krijgen door middel van het opvragen van zijn instantie en dan het aanroepen van de methodes of velden, zoals een normaal object (“world.getTileEntity(position).getInventory()”). wanneer tegel entiteiten opgeslagen worden in de save bestand, worden ze opgeslagen in het NBT format <http://minecraft.gamepedia.com/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.