Conceitos

Propriedades

Todos os blocos são de um tipo base. Dirt, Stairs e Leaves são exemplos de tipos base. Mas, para diferenciar esses tipos base, cada bloco tem um conjunto de diferentes propriedades, que contêm um conjunto limitado de valores (ex: podzol dirt, brick stairs, oak leaves). Um bloco pode ter várias propriedades (como east-facing, brick stairs).

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]

Algumas propriedades, no entanto, são efémeras – só existem durante a execução do jogo. Os valores destas propriedades não são escritos no ficheiroporque podem ser detectados automaticamente. Por exemplo, no caso de um fio de redstone, o estar ligado ou não pode ser detetado com base no ambiente (há alguma alavanca que esteja ligada?). Neste caso, a propriedade power de minecraft:redstone_wire, como demonstrado acima, é uma propriedade efémera.

Para já, o Minecraft ainda guarda os dados dos blocos num formato antigo com 12 bit para tipo de base (4096 tipos de base possíveis) e 4 bits para metadados (16 valores possíveis por cada tipo de base). No entanto, as propriedades não apontam diretamente para os metadados, por causa dos standards antigos. Por exemplo, o bloco Fornalha ,*furnace*, consiste em dois tipos de base (a fundir ou inativa), cada um não utilizando quaisquer metadados. Por outro lado, os blocos de madeira usam completamente os seus metadados, mas como as combinações das propriedades excedem o limite de 16 (pensa nos tipos de árvores e na direção), estes blocos tem de ser divididos em dois tipos de base.

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.

Dados de Tile Entity

Com 65536 combinações possíveis, não é possível armazenar muita informação como um inventário, por isso há mais uma forma de alguns blocos terem mais dados: 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.

Dica

Algumas coisas, tais como pinturas, são na realidade entidades.

No entanto, as tile entities também podem alterar o rendering para não se parecerem com um bloco normal, apesar de isto ser geralmente ineficiente e causar uma queda na taxa de frames do cliente.