Concepts
Propriétés
Tous les blocs sont d’un type de base. Des exemples de types de base comprennent la terre, les escaliers, et les feuilles. Toutefois, afin de différencier davantage ces types de base, chaque bloc a un ensemble de propriétés différentes, dont chacun peut prendre un ensemble limité de valeurs (c’est à dire de la terre podzol, des escaliers en briques, des feuilles de chêne). Un bloc peut avoir des propriétés multiples (comme tourné vers l’est, escaliers en briques).
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]
Quelques propriétés sont éphémères – elles existent seulement quand le jeu est lancé. Leurs valeurs ne sont pas écrites dans le fichier de sauvegarde, car leurs valeurs peuvent être détectées automatiquement. Par exemple, avec un fil de Redstone, son état dépend de son environnement (activé par un levier ?). Dans ce cas, la propriété power
du fil de redstone minecraft:redstone_wire
, comme illustrée ci-dessous, est une propriété éphémère.
Comme du texte, Minecraft stocke toujours les données de bloc dans un ancien format avec 12 bits pour chaque type de base (4096 types de base possibles) et 4 bits pour les « métadonnées » (16 valeurs possibles par type de base). Toutefois, les propriétés ne correspondent pas directement aux métadonnées pour des raisons d’héritage (ancien fonctionnement): par exemple, le four se compose de deux types de base (four en fonction ou four à l’arrêt), chacun d’eux n’utilisant pas du tout ses métadonnées. D’un autre coté, les planches utilisent pleinement leurs métadonnées, mais parce que les combinaisons de propriétés dépassent les 16 valeurs possibles (pensez à tous les types d’arbre et orientations possibles), les planches doivent être réparties sur deux types de base.
A l’avenir, il n’y aura qu’un seul nombre de 16 bits (soit 65536 combinaisons possibles de type de base + propriétés). les blocs se verront automatiquement assignés d’un ID et cette assignation sera enregistrée dans le fichier de sauvegarde du monde. Ceci est illustré ci-dessous
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.
Données d’une Tile Entity
Avec 65 536 combinaisons possibles, il n’est pas possible de stocker beaucoup d’informations comme comme celles de l’inventaire, donc il y a un moyen supplémentaire pour certains blocs de disposer de données: les tile entities (que l’on appellera entités de blocs).
Les entités de bloc elles-même sont des objets java (comme une classe Chest). Normalement, le code de Minecraft accéderait aux données dans les entités de blocs en obtenant leurs instances, puis en appelant ses méthodes ou ses champs, comme dans un quelconque objet (world.getTileEntity(position).getInventory()
). Quand des entités de bloc doivent être écrites dans le fichier de sauvegarde, elles sont sauvegardées dans le format NBT.
Astuce
Certaines choses, comme les peintures, sont en réalité des entités.
Toutefois, les entités de bloc peuvent également outrepasser le rendu de sorte qu’elles ne ressemblent pas à un bloc régulier, bien que ce soit généralement inefficace et provoque une chute de FPS du client.