Konsepter
Egenskaper
Alle blokker er av en basistype. Eksempler på basistyper er jord, trapper og blader. For å gjøre forskjell på disse basistypene har hver blokk et sett med forskjellige egenskaper, som kan motta et begrenset sett med verdier (for eksempel podzoljord, mursteinstrapper, eikeblader). En blokk kan ha flere egenskaper (slik som østvendte mursteinstrapper).
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]
Noen egenskaper er derimot flyktige – de eksisterer kun når spillet kjører. Deres verdier skrives ikke til lagringsfilen fordi verdiene kan oppdages automatisk. For eksempel, med redstoneledninger, kan man merke om de er påslått eller ikke basert på området rundt (finnes det en påslått spak?). I dette tilfellet er power
-egenskapen til minecraft:redstone_wire
, som vist over, en flyktig egenskap.
I skrivende stund lagrer Minecraft fortsatt blokkdata til et gammelt format med 12 bits for en basistype (4096 mulige basistyper) og 4 bits for «metadata» (16 mulige verdier per basistype). Egenskaper kan imidlertid ikke overføres helt til metadata av bakoverkompatibilitetsgrunner: for eksempel har furnace-blokken to basistyper (i ferd med å smelte noe versus ikke i ferd med å smelte noe), og ingen av de to typene bruker metadata i det hele tatt. På den annen side bruker stokker sin metadata fullt ut, men fordi kombinasjonen av egenskaper overstiger 16 mulige verdier (tenk tretype og retning), må stokker fordeles på to basistyper.
I fremtiden vil det kun være ett 16-bits tall (65536 mulige kombinasjoner av basistype + egenskaper). Blokker mottar automatisk en ID, og denne tilordningen blir lagret i verdenslagringsfilen. Dette er som vist under:
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] osv.
Tile Entity-data
Med 65536 mulige kombinasjoner er det umulig å lagre mye informasjon, som f.eks. innhold i ryggsekken, så noen blokker har data på en annen måte: tile entities.
Tile entities selv er Java-objekter (som en Kiste-klasse). Vanligvis får Minecraft-kode tak i dataen i en tile entity ved først å hente instansen, og så kalle feltene eller metodene dens som et vanlig objekt (world.getTileEntity(position).getInventory()
). Når tile entities må skrives til lagringsfilen, lagres de på NBT-formatet.
Tips
Noen ting, som malerier, er faktisk entiteter.
Tile entities kan imidlertid også overstyre rendering slik at de ikke ser ut som en vanlig blokk, selv om dette generelt sett er ineffektivt og medfører et tap i bildefrekvensen på klienter.