Ця сторінка проведе вас через написання власних моделей предметів і розуміння всіх їхніх варіантів і можливостей.
Що таке моделі предмета?
Моделі предметів — це, по суті, визначення зовнішнього вигляду предмета. Вони визначають текстуру, зміщення моделі, обертання, розмір та інші властивостями.
Моделі зберігаються як JSON файли у вашій теці ресурсів.
Структура файлу
Кожен файл моделі предмета має певну структуру, якої слід дотримуватися. Він починається з порожніх фігурних дужок, які представляють кореневий теґ моделі. Ось коротка схема структура моделі предмета:
json
{
"parent": "...",
"display": {
"<position>": {
"rotation": [0.0, 0.0, 0.0],
"translation": [0.0, 0.0, 0.0],
"scale": [0.0, 0.0, 0.0]
}
},
"textures": {
"<layerN>": "...",
"particle": "...",
"<texture_variable>": "..."
},
"gui_light": "...",
"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
39
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
39
Батьківська модель
json
{
"parent": "..."
}1
2
3
2
3
Це завантажує іншу модель з усіма її властивостями з указаного шляху як ідентифікатор (простір імені:шлях).
Установіть для цього теґу значення item/generated, щоб використовувати модель, створену з указаної текстури, або встановіть значення builtin/generated, щоб використовувати модель без будь-якого перекладу, повороту чи масштабування.
Дисплей
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": {
"<layerN>": "...",
"particle": "...",
"<texture_variable>": "..."
}
}1
2
3
4
5
6
7
2
3
4
5
6
7
Теґ textures містить текстури моделі у формі ідентифікатора або змінної текстури. Він містить три додаткові об'єкти:
<layerN>: Рядок. Визначає значок предмета в інвентарі. Може бути більше одного шару (наприклад, яйця виклику) і не більше, ніж 3.particle: Рядок. Визначає текстуру для завантаження частинок. Якщо не визначено, використовуєтьсяlayer0.<texture_variable>: Рядок. Це створює змінну та призначає текстуру. Пізніше на нього можна посилатися за допомогою префікса#(наприклад,"top": "простір імені:шлях"⇒#top)
ВАЖЛИВО
<layerN> працює лише, якщо для parent установлено item/generated!
Освітлення інтерфейсу
json
{
"gui_light": "..."
}1
2
3
2
3
Цей теґ визначає напрямок, з якого освітлюється модель предмета. Може бути front або side, причому останнє є усталеним. Якщо встановлено значення front, модель видно як плаский предмет, якщо встановлено side, предмет видно як блок.
Елементи
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 з кроком 22,5 градуса.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`: ціле. Відтінює текстуру на цій стороні, використовуючи значення відтінку, на яке посилається визначення клієнтського предмета. Якщо колір відтінку (або білий) не надано, текстура не тонується.
Джерела та посилання
Ви можете відвідати сторінку моделей предметів Minecraft вікі, щоб отримати детальнішу інструкцію. Тут багато інформації з цієї сторінки.



