Создание первого блока

**Эта функция доступна не на всех версиях**,

Это значит, что эта функция работает только на версиях **1.9** и выше.

Цель данного руководства - показать технологию создания блока. Перед началом рекомендуем ознакомиться со статьей Создание первого предмета.

## Старт

Открываем набор параметров. Создаём папку "blocks". Именно в ней будет хранится информация о блоках. Далее создаём JSON файл с любым названием. Оформление этого файла схоже с файлом предмета, но за исключением некоторых мелочей.

```
**Набор Параметров/blocks/custom\_block.json**

```

```
 {
 "format\_version": "1.12.0",
 "minecraft:block": {
 "description": {
 "identifier": "custom:block",
 "is\_experimental": false,
 "register\_to\_creative\_menu": true
 }
 }
 }

```

Практически со всем вы уже знакомы, но давайте напомним вам.

**"format\_version"** - Версия файла. Определяет возможности, который могут быть включены в файл. К примеру, если вы укажете версию ниже 1.16.100, то вам не будет доступны особые новые функции.

**"minecraft:block"** - Определяет роль данного файла. В нашем случае мы создаём блок.

**"is\_experimental"** - Определяет, нужны ли для данного блока экспериментальные функции.

**"register\_to\_creative\_menu"** - будет ли данный блок показан в меню творческого режима.

В блоках, как и в предметах присутствуют компоненты - постоянные свойства блока.

```
**Набор Параметров/blocks/custom\_block.json**

```

```
 {
 "format\_version": "1.12.0",
 "minecraft:block": {
 "description": {
 "identifier": "custom:block",
 "is\_experimental": false,
 "register\_to\_creative\_menu": true
 },
 "components" {
 "minecraft:destroy\_time": 3,
 "minecraft:block\_light\_emission": 0.6
 }
 }
 }

```

В данном отрезке кода использованы два значения. В частности:

**minecraft:destroy\_time** - отражает в секундах время разрушения блока. На данный момент невозможно отразить разное время для разных инструментов.

**minecraft:block\_light\_emission** - показывает уровень света, излучаемый от данного блока. В нашем случае это **0.6**, обозначающий 9-й уровень освещения.

Все компоненты можно найти в ванильном наборе параметров в статье об аддонах, компоненты можно найти в файле documentation/blocks.html

## Внешний вид

Внешний вид настраивается несколько иначе, чем у предмета. Все текстуры хранятся в папке НАБОРА РЕСУРСОВ(обратите внимание) в файле block.json

```
**Набор Ресурсов/blocks.json**

```

```
 {
 "format\_version": [1, 1, 0],
 "custom:block": {
 "textures": "blocky",
 "sound": "stone"
 },
 "custom:block2": {
 "textures": {
 "up": "sapp\_log\_top",
 "down": "sapp\_log\_top",
 "side": "sapp\_log\_side"
 },
 "sound": "wood"
 },
 "custom:block3": {
 "textures": {
 "up": "compass\_block\_up",
 "down": "compass\_block\_down",
 "north": "compass\_block\_north",
 "south": "compass\_block\_south",
 "west": "compass\_block\_west",
 "east": "compass\_block\_east"
 },
 "sound": "wool"
 },
 "custom:block4": {
 "textures": "flashing",
 "sound": "glass"
 }
}

```

Здесь определяются текстуры блока. Каждый блок имеет название. Здесь оно начинается на "custom:block". Первый блок имеет только одну текстуру **blocky**. При хождении на нем издается звук хождения по камню "stone".

Второй блок имеет три текстуры. Одну для верхней, другую для нижней, третья текстура для других сторон. Имеет звук шерсти "wool".

Третий блок имеет сразу разные текстуры для каждой стороны и звук шерсти при ходьбе.

**!Примечание**: названия текстур не имеют значение, позже мы укажем их в другом файле, наподобие "item\_textures.json".

И так, мы назначили текстуры со своими названиями, теперь наша задача - инициализировать все эти текстуры, подобно тому, как мы сделали это с предметом. Создадим файл textures, если он у вас не сохранился или не был создан. Создайте файл "terrain\_texture.json".

```
**Набор Ресурсов/textures/terrain\_texture.json**

```

```
 {
 "resource\_pack\_name": "wiki",
 "texture\_name": "atlas.terrain",
 "padding": 8,
 "num\_mip\_levels": 4,
 "texture\_data": {
 "blocky": {
 "textures": "textures/blocks/blocky"
 },
 "sapp\_log\_top": {
 "textures": "textures/blocks/sapp\_log\_top"
 },
 "sapp\_log\_side": {
 "textures": "textures/blocks/sapp\_log\_side"
 },
 "compass\_block\_north": {
 "textures": "textures/blocks/compass\_block/sb\_north"
 },
 "compass\_block\_east": {
 "textures": "textures/blocks/compass\_block/sb\_east"
 },
 "compass\_block\_west": {
 "textures": "textures/blocks/compass\_block/sb\_west"
 },
 "compass\_block\_south": {
 "textures": "textures/blocks/compass\_block/sb\_south"
 },
 "compass\_block\_up": {
 "textures": "textures/blocks/compass\_block/sb\_up"
 },
 "compass\_block\_down": {
 "textures": "textures/blocks/compass\_block/sb\_down"
 }
 }
}

```

С первым компонентом вы знакомы. Это **"resource\_pack\_name"**. Определяет кастомные имя вашего атласа - файла, указывающего текстуры предметов или блоков, в нашем случае блоков.

Обратите внимание, что при создании предмета компонент **"texture\_name"** в предметах имел значение "atlas.items", теперь же это "atlas.terrain".

Компоненты "padding" и num\_mip\_levels" влияют на качество текстур, если поставить высокое значение, то могут быть зависания.

В этом файле мы указываем пути всех названий текстур, указанных в файле **"block.json"**. Текстуры должны иметь разрешение в виде квадрата, обозначая одну сторону блока.

```
**Шаблон пути**

```

```
 "Название текстуры": {
 "textures": //Путь по файлам к текстуре в кавычках
 }

```

Осталось только расположить текстуру по вашему пути. Готово. Зайдите в игру и опробуйте ваш аддон! Но это ещё не всё.

## Флипбук

С помощью флипбука вы можете воссоздать анимацию текстуры блока, навроде блока лавы или воды. Для этого создайте файл "flipbook\_textures.json".

```
**Набор Ресурсов/textures/flipbook\_textures.json**

```

```
 [
 {
 "flipbook\_texture": "textures/blocks/flashing\_flipbook",
 "atlas\_tile": "flashing",
 "ticks\_per\_frame": 13
 },
 {
 "flipbook\_texture": "textures/blocks/flashing\_flipbook2",
 "atlas\_tile": "flashing2",
 "ticks\_per\_frame": 10
 }
]

```

Каждый флипбук заключён в массив квадратных фигурных скобок и находится одновременно в фигурных скобках.

**"flipbook\_texture"** - определяет путь к текстуре флипбука для анимации. К примеру, если текстура вашего блока равна 16\*16, то к примеру для анимации в три кадра нужна будет текстура 16\*48, тоесть три текстуры по 16\*16 по вертикали (высота), а если 5, то 16\*80.

**"atlas\_tile"** - имя флипбука, ни на что не влияет.

**"ticks\_per\_frame"** - скорость анимации в тиках на фрэймы.

## Локализация

Для обозначения имени блока создайте папку texts в наборе ресурсов. В ней создайте файл en\_US.json для хранения имени блока.

```
**Набор Ресурсов/texts/en\_US.json**

```

```
 tile.custom:block.name = "Имя первого блока"
 tile.custom:block2.name = "Имя второго блока"

```

Структура такова. Первое выражение это указатель блока, для которого вы вписываете имя: tile.НАЗВАНИЕ БЛОКА.name

Отлично! Вы создали свой блок, добавили ему анимацию и дали ему имя, возможно вы захотите создать 4Д блок или сущность?

* Создание первого моба
* Блоки 1.16.100+
* Введение в моделирование