Modelos de Blocos 26.2
Um guia para escrever e entender modelos de blocos.
Essa página irá te orientar na escrita dos seus próprios modelos de blocos e no entendimento de todas as suas opções e possibilidades.
O que São Modelos de Blocos?
Modelos de blocos são essencialmente a definição da aparência e dos elementos visuais de um bloco. Eles especificam a textura, translação, rotação, escala e outros atributos do modelo.
Os modelos são armazenados como arquivos JSON dentro da sua pasta resources.
Estrutura do Arquivo
Todos os modelos de blocos possuem uma estrutura definida que precisa ser seguida. Ela começa com chaves "{}" vazias, que representa a tag raiz do modelo. Aqui está um breve esquema de como os modelos de blocos são estruturados:
json
{
"parent": "...",
"ambientocclusion": "true/false",
"display": {
"<position>": {
"rotation": [0.0, 0.0, 0.0],
"translation": [0.0, 0.0, 0.0],
"scale": [0.0, 0.0, 0.0]
}
},
"textures": {
"particle": "...",
"<texture_variable>": "..."
},
"elements": [
{
"from": [0.0, 0.0, 0.0],
"to": [0.0, 0.0, 0.0],
"rotation": {
"origin": [0.0, 0.0, 0.0],
"axis": "...",
"angle": "...",
"rescale": "true/false"
},
"shade": "true/false",
"light_emission": "...",
"faces": {
"<key>": {
"uv": [0, 0, 0, 0],
"texture": "...",
"cullface": "...",
"rotation": "...",
"tintindex": "..."
}
}
}
]
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Defina essa tag para {#file-structure} para usar um modelo criado pelo ícone especificado. Rotação pode ser obtida pelo blockstates.
Oclusão de Ambiente
json
{
"ambientocclusion": "true/false"
}1
2
3
2
3
Essa tag especifica se deve ser usado a oclusão de ambiente. O valor padrão é true.
Texturas
json
{
"textures": {
"particle": "...",
"<texture_variable>": "..."
}
}1
2
3
4
5
6
2
3
4
5
6
A tag textures armazena as texturas do modelo, na forma de um identificador ou de uma textura variável. Ela contém três objetos adicionais:
particle: String. Define a textura de onde as partículas serão carregadas. Essa textura é usada como uma sobreposição se você estiver em um portal do nether e também para as texturas de água e lava paradas. Também é considerada uma textura variável que pode ser referenciada como#particle.<texture_variable>: String. Cria uma variável e atribui uma textura. Pode ser posteriormente referenciado com o prefixo#(Por exemplo: "top": "namespace:path"⇒#top`)
from especifica o ponto inicial do cuboide conforme o esquema [x, y, z], relativo ao canto esquerdo inferior. to especifica o ponto final. Um cuboide tão grande como um bloco padrão começaria em [0, 0, 0] e terminaria em [16, 16, 16]. Os valores de ambos devem ser entre -16 e 32, que significa que todo modelo de bloco pode ter no máximo uma dimensão de 3x3 blocos.
rotation define a rotação de um elemento. Ela contém mais quatro valores:
origin: Três valores de ponto flutuante. Define o centro de rotação conforme o esquema[x, y, z].axis: String. Especifica a direção de rotação, ela deve ser um desses:x,yandz.angle: Ponto flutuante. Especifica o ângulo de rotação. Varia entre -45 a 45.rescale: Valor Booleano. Especifica se deve dimensionar as faces por todo o bloco. O valor padrão éfalse.
uv: Quatro valores inteiros.. Define a área da textura que será usada conforme o esquema[x1, y1, x2, y2]. Se não estiver definido, o valor padrão é igual à posição xyz do elemento. Trocando os valores dex1ex2(por exemplo, de0, 0, 16, 16para16, 0, 0, 16) inverte a textura. UV é opcional, e se não for fornecido, ele é automaticamente gerado com base na posição do elemento.texture: String. Especifica a textura da face na forma de uma textura variável, prefixado com#.cullface: String. Pode ser:down,up,north,south,west, oueast. Especifica se uma face não precisa ser renderizada quando há um bloco tocando-a na posição especificada. Ele também determina de qual lado do bloco o nível de luz será obtido para iluminar a face e, se não for definido, o padrão será o próprio lado.rotation: Valor inteiro. Rotaciona a textura no sentido horário por um número especificado de graus em incrementos de 90 graus. Rotação não afeta qual parte da textura é usado. Em vez disso, isso equivale a uma permutação dos vértices da textura selecionada (selecionados implicitamente ou explicitamente por meio deuv).tintidex: Valor inteiro. Tinge a textura daquela face usando um valor de tingimento. O valor padrão,-1, indica para não usar o tingimento. Qualquer outro número é fornecido para oBlockColorspara adquirir o valor de tingimento correspondente para aquele índice (retorna branco quando o bloco não possui um índice de tingimento definido).


