Ця сторінка проведе вас через написання власних моделей блоків і розуміння всіх їхніх варіантів і можливостей.
Що таке моделі блока?
Моделі блока — це, по суті, визначення зовнішнього вигляду предмета. Вони визначають текстуру, зміщення моделі, обертання, розмір та інші властивості.
Моделі зберігаються як JSON файли у вашій теці ресурсів.
Структура файлу
Кожен файл моделі блока має певну структуру, якої слід дотримуватися. Він починається з порожніх фігурних дужок, які представляють кореневий теґ моделі. Ось коротка схема структури моделі блока:
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
Батьківська модель
json
{
"parent": "..."
}1
2
3
2
3
Це завантажує іншу модель з усіма її властивостями з указаного шляху як ідентифікатор (простір імені:шлях).
Установіть для цього теґу значення builtin/generated, щоб використовувати модель, створену з указаного значка. Обертання можна досягти за допомогою станів блока.
Навколишня оклюзія
json
{
"ambientocclusion": "true/false"
}1
2
3
2
3
Цей теґ визначає, чи використовувати навколишня оклюзія. Усталено true.
Дисплей
json
{
"display": {
"<position>": {
"rotation": [0.0, 0.0, 0.0],
"translation": [0.0, 0.0, 0.0],
"scale": [0.0, 0.0, 0.0]
}
}
}1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Цей теґ відповідає за налаштування зміщення моделі, оберт та розмір в заданому положенні.
Об'єктом позиції може бути один із наведених нижче рядків, які визначають, як виглядатиме модель у різних положеннях:
| Значення | Опис |
|---|---|
firstperson_righthand | Права рука, як видно від першої особи |
firstperson_lefthand | Ліва рука, як видно від першої особи |
thirdperson_righthand | Права рука, як видно від третьої особи (F5) |
thirdperson_lefthand | Ліва рука, як видно від третьої особи (F5) |
gui | Коли в інтерфейсі, як-от інвентар |
head | Коли у слоті голови, наприклад стяг |
ground | Коли викинуто |
fixed | Коли поміщено в рамку для предметів |
Крім того, кожна позиція може містити ці три значення у формі рухомого масиву:
json
{
"rotation": [0.0, 0.0, 0.0],
"translation": [0.0, 0.0, 0.0],
"scale": [0.0, 0.0, 0.0]
}1
2
3
4
5
2
3
4
5
rotation: Три рухомі. Визначає обертання моделі за схемою[x, y, z].translation: Три рухомі. Визначає зміщення моделі за схемою[x, y, z]. Значення мають бути між-80і80; все, що виходить за межі цього діапазону, встановлюється на найближчий екстремум.scale: Три рухомі. Визначає розмір моделі за схемою[x, y, z]. Максимальне значення4, більші значення будуть як4.
Текстури
json
{
"textures": {
"particle": "...",
"<texture_variable>": "..."
}
}1
2
3
4
5
6
2
3
4
5
6
Теґ textures містить текстури моделі у формі ідентифікатора або змінної текстури. Він містить три додаткові об'єкти:
particle: Рядок. Визначає текстуру для завантаження частинок. Ця текстура також використовується як накладення, якщо ви перебуваєте в порталі Незеру, і використовується для нерухомих текстур води та лави. Також уважається змінною текстури, на яку можна посилатися як#particle.<texture_variable>: Рядок. Створює змінну та призначає текстуру. Пізніше на нього можна посилатися за допомогою префікса#(наприклад,"top": "простір імені:шлях"⇒#top)
Елементи
json
{
"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": {
"<face>": {
"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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Містить всі елементи моделі, які можуть бути лише кубічна. Якщо встановлено обидва теґи parent і elements, теґи elements цього файлу мають вищий пріоритет, ніж батьківські.
json
{
"from": [0.0, 0.0, 0.0],
"to": [0.0, 0.0, 0.0]
}1
2
3
4
2
3
4
from визначає початкову точку куба відповідно до схеми [x, y, z] відносно нижнього лівого кута. to визначає кінцеву точку. Куб розміром зі стандартний блок починатиметься на [0, 0, 0] і закінчуватиметься на [16, 16, 16]. Значення обох мають бути від -16 до 32, що означає, що розмір кожної моделі блока може становити не більше 3×3 блоків.
json
{
"rotation": {
"origin": [0.0, 0.0, 0.0],
"axis": "...",
"angle": "...",
"rescale": "true/false"
}
}1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
rotation визначає оберт елемента. Він також містить ще чотири значення:
origin: Три рухомі. Установлює центр оберту за схемою[x, y, z].axis: Рядок. Визначає напрямок оберту та має бути одним із такихx,yіz.angle: Рухоме. Визначає кут оберту. Діапазон від -45 до 45.rescale: Логічне. Визначає, чи масштабувати сторони всього блока. Усталеноfalse.
json
{
"shade": "true/false"
}1
2
3
2
3
shade визначає, чи рендеряться тіні. Усталено true.
json
{
"light_emission": "..."
}1
2
3
2
3
light_emission визначає мінімальний рівень світла, який може отримати елемент. Може мати значення від 0 до 15. Усталено 0.
json
{
"faces": {
"<key>": {
"uv": [0, 0, 0, 0],
"texture": "...",
"cullface": "...",
"rotation": 0,
"tintindex": 0
}
}
}1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
faces містить усі сторони куба. Якщо сторону не встановлено, воно не буде рендеритися. Його ключі(<key>) можуть бути одним із: down, up, north, south, west або east. Кожен ключ містить властивості для цієї сторони:
uv: Чотири цілих. Визначає область текстури для використання відповідно до схеми[x1, y1, x2, y2]. Якщо не встановлено, усталене значення дорівнюють положенню xyz елемента. Перевертання значеньx1іx2(наприклад, з0, 0, 16, 16на16, 0, 0, 16) повертає текстуру. UV необов’язковий, і якщо його не надати, він автоматично генерується на основі положення елемента.texture: Рядок. Визначає текстуру сторону у формі змінної текстури, перед якою ставиться#.cullface: Рядок. Може бути:down,up,north,south,westабоeast. Керує тим, чи сторону не потрібно рендерити, якщо до неї торкається блок у вказаній позиції. Він також визначає сторону блока, з якої буде використовуватися рівень освітлення для освітлення сторони, і якщо не встановлено, усталено встановлюється сторона.rotation: Ціле. Обертає текстуру за годинниковою стрілкою на вказану кількість градусів із кроком 90 градусів. Оберт не впливає на те, яка частина текстури використовується. Натомість це означає перестановку вибраних вершин текстури (вибраних неявно або явно черезuv).- tintidex
: _Ціле_. Відтінює текстуру на цій стороні за допомогою значення відтінку. Усталене значення,-1, означає, що відтінок не використовувати. Будь-яке інше число надаєтьсяBlockColors`, щоб отримати значення відтінку, що відповідає цьому індексу (повертає білий колір, якщо для блоку не визначено індекс відтінку).
Джерела та посилання
Ви можете відвідати сторінку моделей предметів Minecraft вікі, щоб отримати детальнішу інструкцію. Тут багато інформації з цієї сторінки.


