Konzept

Eigenschaften

Alle Blöcke haben einen Basistyp. Beispiele für Basistypen sind Erde (engl. Dirt), Treppen (Stairs) und Blätter (Leaves). Um diese Basistypen weiter zu differenzieren, hat jeder Block eine Reihe an verschiedenen Eigenschaften, von denen jede nur eine bestimmte Anzahl von Werten annehmen kann (z.B. Podsol-Erde, Ziegel-Treppe, Eichen-Laub). Ein Block kann mehrere Eigenschaften haben (z.B. nach-Osten-gerichtet, Ziegel Treppe).

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]

Einige Eigenschaften sind flüchtig – sie existieren nur, wenn das Spiel läuft. Ihre Werte werden nicht auf der Festplatte gespeichert, da sie automatisch erkannt werden können. Beispielsweise kann die Signalstärke eines Redstone-Kabels durch die Umgebung bestimmt werden (ist ein aktivierter Hebel verbunden?). In diesem Fall ist die oben genannte power-Eigenschaft von minecraft:redstone_wire eine flüchtige Eigenschaft.

Derzeit speichert Minecraft Blockdaten in einem alten Format mit 12 Bits für den Basistyp (=4096 Basistypen) und 4 Bits für Metadaten (16 mögliche Werte pro Basistyp). Dennoch sind Eigenschaften aus Kompatibilitätsgründen nicht direkt mit den Metadaten verknüpft: Der Ofen besteht beispielsweise aus 2 Basistypen (brennt und brennt nicht), wobei beide keine Metadaten nutzen. Baumstämme dagegen nutzen ihre Metadaten vollständig, da sie allerdings mehr als 16 Zustände nutzen (Baumtyp und Ausrichtung), werden ihre Metadaten auf mehrere Basistypen aufgeteilt.

In der Zukunft wird es nur noch eine 16-bit Nummer (65536 mögliche Kombinationen von Basis Typ + Eigenschaften) geben. Blöcke werden einer ID zugewiesen und diese wird dann in der Welt Speicherdatei gespeichert. Dies wird unten dargestellt:

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-Daten

Mit 65536 möglichen Kombinationen ist es nicht möglich, eine Menge an Informationen zu speichern, wie zum Beispiel ein Inventar. Dazu gibt es eine andere Möglichkeit, damit manche Blöcke mehr Daten haben können: Tile Entities.

Tile Entities selber sind Java-Objekte (wie eine Chest-Klasse). Normalerweise würde der Minecraft-Code die Informationen in einem Tile Entity über seine Instanz durch das Aufrufen von Methoden oder Feldern auslesen, wie bei einem normalen Objekt (world.getTileEntity(position).getInventory()). Wenn diese Tile Entities gespeichert werden müssen, werden sie das im NBT Format.

Tipp

Manche Dinge, wie Bilder, sind in Wirklichkeit Entities.

Jedoch können Tile Entities ihre Darstellung (engl. rendering) überschreiben, sodass sie nicht wie ein normaler Block aussehen, obwohl dies generell ineffizient ist und bewirken kann, dass die Client-Bildrate einbricht.