Создание наборов параметров

Эту статью нужно срочно переписать!
Вы можете помочь, исправив и дополнив еë.
|


Только для Bedrock Edition
|


Данное руководство поможет вам создать свой первый набор параметров для Bedrock Edition.

## Вводный урок

**Требования**

Требуемые программы | Требуемая платформа | Требуемая версия игры |
---|---|---|

Любой удобный текстовый редактор | Любая платформа, поддерживающая Bedrock Edition и текстовый редактор | 1.12+ |


В этом руководстве будет рассмотрено:

- Формат данных JSON.
- Как создать набор параметров.
- Как изменить поведение моба.

Для того, чтобы понять данное руководство, потребуется его изучение по порядку.

### Формат данных JSON

Для создания набора параметров потребуется понять способ работы JSON, на котором будет написан будущий аддон. Важно знать лишь самое основное.

В JSON существует лишь два типа данных:

- Имя и значение данных
- «Имя»: значение

- Список (Массив) значений данных
- [значение, значение, значение]


В коде объект с именем и значением располагается в коде в разбросанном порядке.

Имя — это что-то навроде команды или названия, которое регулирует то, с чем будет связано значение.

### Образец кода

```
"minecraft: scale" : {
"value" : 0.7
}
```

В данном объекте, являющемся парой, «minecraft: scale» (рус. Minecraft: размер) является именем, а значением является другая пара — «value» : 0.7 («Значение»: 0.7). Чаще всего значение заключено в фигурные скобки.

### Работа json кода

```
"Имя" : {
"Значение"
}
```

Данный отрывок кода повторяет самый первый.

### Образец с двумя парами

```
{
"minecraft: health" : {
"value" : 20 ,
"max" : 20
}
}
```

В данном образце вместо одного значения присутствуют сразу два значения в виде пар, они пишутся через запятую.

Имя это Minecraft: health (minecraft: здоровье), которое задаёт то, что измеряет значение, далее значение в фигурных скобках, тут их два: «value» : 20, «max» : 20. Первое определяет количество жизней изначально у моба, второе обозначает максимум его жизней.

**Образец с массивом**

```
{
"minecraft: type_family" : {
"family" : [
"monster" ,
"undead"
]
}
}
```

В этом отрывке кода присутствует имя и значение, которое имеет массив (список). В данном отрывке кода одна пара имени и значения вложена в другую.

Здесь определяется тип, к которому относится моб.

В данном случае значение представлено списком в квадратных скобках.

**Примечание**
Очень важно, чтобы имена и значения имели начальные и **конечные** фигурные скобки. Иначе в коде возникнет ошибка и аддон не будет работать должным образом.

### Создание набора параметров

Наборы параметров позволяют игроку изменить характеристики предметов, блоков, мобов, добавить оружие и биомы, а также создать новую модель для моба и анимацию. В данном руководстве рассмотрен пример создания коровы, превращающейся в свинью, но перед этим требуется создать сам набор. Для этого необходимо создать папку с любым названием по пути.

**Для Android-устройств:**

`games/com.mojang./development_behaivor_pack.`


**Для Windows 10**

`%userprofile%\AppData\Local\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\development_behavior_packs\tutorial_behavior_pack.`


- Далее в этой папке требуется создать JSON файл с именем
`manifest.json`

.

**manifest.json**
Данный файл укажет игре, что папка является аддоном.

```
{
"format_version": 1,
"header": {
"description": "Здесь будет описание аддона",
"name": "Имя аддона",
"uuid": "13ec24c0-b7ce-4a89-882f-a2a2a3795257",
"version": [
1,
8,
0
],
"min_engine_version": [
1,
12,
0
]
},
"modules": [
{
"description": "dhdgushshegehe by vfshdhd",
"type": "data",
"uuid": "35579ef3-50f6-4f02-b6e5-a71ad4e14eca",
"version": [
1,
8,
0
]
}
],
"dependencies": null
}
```

Перед окончанием создания набора параметров следует отредактировать код на своё усмотрение.

- «min_engine_version»: [1,12,0] — минимальная версия игры для запуска.
- «version»: [1,0,0] — личная версия набора, отвечает лишь за визуальный вид.

**Примечание**
Для правильной работы набора параметров необходимо создать два новых UUID — «номера» вашего набора. Их нужно вставить в объект «UUID»: «(Ваш UUID набора)» . **Важно! Они должны быть разными.**

**Зависимый набор ресурсов**
Некоторые наборы параметров имеют при себе зависимый набор ресурсов, это сделано для того, чтобы вместе с настройками аддона скачивались не только они, но и текстуры мобов, предметов и блоков.

```
"dependencies": [
{
"uuid": "66c6e9a8-3093-462a-9c36-dbb052165822",
"version": [0,0,1]
}
]
}
```

Для привязки набора ресурсов к нашему набору параметров в данном коде требуется заменить UUID на UUID заголовка зависимого набора ресурсов и добавить этот отрывок кода в конец основного, в текущем начальном коде вкладка привязанного набора не указана, она выглядит как «null».

**Примечание**
В конце любой пары «Имя: значение» должна ставится запятая. Существуют исключения, но чаще всего это так, об этом не стоит забывать, иначе всё сломается.

**Создание иконки**
Для того, чтобы будущий аддон имел свою собственную иконку, нужно загрузить изображение размером 128×128 пикселей в папку с аддоном и переименовать его на «pack_icon.png».
После этого будет получен следующий результат:

### Настройка файловой системы

Перед началом создания аддона, нам требуется настроить систему файлов, которые будут располагаться в аддоне. Необходимо создать в папке аддона ещё одну папку с названием «entities». В этой папке будет храниться вся информация о мобах будущего аддона. Далее требуется скачать шаблонный набор параметров от разработчиков игры. Их можно найти в разделе шаблонов в статье «Аддоны». Шаблон регулярно обновляется и соответствует самой новой версии игры. Далее нужно скопировать из шаблонного набора параметров, по пути «/Vanilla_Behaivor_Pack/entity/cow.json» в папке `entities`

файл `cow.json`

, файл коровы и переместить его в папку `entities`

, но только в свой набор параметров по пути: `games/com.mojang/development_behaivor_packs/(Папка вашего аддона)/entities`

.
После этого необходимо открыть его в своём текстовом редакторе.

### Изучение JSON-кода моба

Перед началом изменения коровы, требуется понять, как работают сущности в аддонах. Настоящий код коровы довольно сложен, поэтому будет использоваться нерабочий код, чтобы примерно объяснить, как работают мобы.

**Нерабочий пример кода**

```
{
"minecraft:entity": {cow} scale 11.111
"format_version": "1.16.0",
"component_groups": { группы компонентов пишутся обычно здесь },
"components": { компоненты моба будут писаться здесь },
"events": { события мобов будут прописаны здесь }
}
}
```

Данный код является нерабочим, код коровы выглядит совсем иначе.

**Примечание**
«format version» является версией кода, которую нужно прочитать игре. **Его нельзя менять!**

**component_groups (группы компонентов)**
Компоненты групп используются для настройки поведения моба и присваивания ему поведения в зависимости от группы. К примеру, если свинья является поросёнком, то она будет следовать за своим родителем и иметь определённую скорость, однако после подрастания она будет иметь другую группу поведения, следовательно поведение изменится.
Обычно у коровы есть 2 и более групп, среди которых «cow_baby» — корова-малыш и «cow_adult» — взрослая корова. Группы меняются в зависимости от событий и других признаков.

**components (компоненты)**
Компоненты определяют постоянное (индивидуальное) поведение моба, к примеру, свинья будет превращаться в зомбифицированного пиглина при попадании молнии в неё. Она также всегда относится к типу свиньи, мобов. Этими качествами моб будет обладать всегда.

**events (события)**
События могу добавлять или удалять группы компонентов из мобов, они могут быть активированы от компонента или от отдельного кода.
Таким образом при ударе молнии (компонент) активируется нужное событие и свинья получит группу компонентов «Зомби».

**Заметки для компонентов**

**minecraft: identifier**

С помощью данного компонента определяется название моба, который расписан в файле.

**Идентификатор свиньи**

```
{
"identifier" : "minecraft:pig"
}
```

**minecraft: type_family**

С помощью данного компонента определяется, к какому семейству (типу мобов) подходит данный моб.

**Свинья относится к типам: «Моб»,"Свинья".**

```
{
"minecraft:type_family" : {
"family" : ["mob","pig"]
}
}
```

**minecraft: entity_spawned**

Данный компонент является событием и запускается в случае, если в мире появляется моб нужного типа. В `cow.json`

используется функция, с помощью которой случайным образом рождается взрослый или детёныш.

### Изменение кода

Самое время заняться самой функцией аддона, нужно сделать так, чтобы корова превращалась в свинью, если её ударил игрок. Аддон будет забавным и хорошо подойдёт для новичков.

Для начала стоит объяснить, как будет работать аддон. Нужно зайти в файл `cow.json`

и начать работу. Мы должны проверить, ударил ли игрок корову. Это мы проверим с помощью постоянного поведения моба (компонента) «minecraft: damage_sensor», который реагирует на нанесение урона. Мы вставим его в «components» коровы.

**Важно! После каждого компонента, события или группы следует ставить запятую, также важно соблюдать фигурные скобки, для того, чтобы не запутаться в коде, проще всего добавлять всё новое в самом начале, когда код ещё не настолько запутан и его легко понять.**

```
"components": {
"minecraft:damage_sensor": {
"triggers": {
"on_damage": {
"filters": {
"test" : "is_family", "subject" : "other", "value" : "player" },
"event": "become_pig"
},
"deals_damage": false
}
},
```

«minecraft: damage_sensor» нужно добавить в фигурные скобки, он должен быть в фигурных скобках «components». Так должен выглядеть код после изменения.

**Примечание**
В данном коде есть единственная пара «Имя: Значение», а в той паре куча таких же пар. Если вы будете это понимать, то вам не трудно будет ориентироваться здесь.

**minecraft: damage_sensor**
Компонент реагирует на нанесение урона каким-либо способом.

**«triggers»** — является группой компонентов, которая ставит игре или мобу условия, с помощью других компонентов. Сам по себе «triggers» не имеет функционала, а лишь называет категорию компонентов.

**«on_damage»** — ставит игре условие, выполняет другой, нижний компонент, если мобу нанесен какой-либо урон. Существует только в группе «triggers» (триггеров).

**«filters»** — также, как и «triggers», является группой компонентов, которые фильтруют целевых (мобов, которых назначают сами игроки) мобов, на что либо.

**«test» : «is_family»** — «test» является именем значения, которое фильтрует определённого моба по типам. В значением здесь является фильтр «is_family», оно проверяет, относится ли целевой моб к определённому семейству мобов, существует множество видов фильтров, кроме этого, которые проверяют мобов на другое.

**«subject» : «other»** — является частью прошлого фильтра. Указывает, какой моб будет фильтроваться по типам, в данном случае по семейству. «subject» является именем, а «other» — значением, определяющим моба, который будет проверяться на принадлежность к семейству. other — означает, что проверяться будет не сам моб — корова, а другой моб, который ударил корову.

**«value» : «player»** — определяет, какой именно моб будет проверяться, в данном случае проверяется моб, который ударил корову. Здесь им является «player» — игрок. Это значит, что если во время нанесения урона по корове, будет проверяться, является ли «other» — другой моб, а именно нанесший урон, игроком, если это так, то выполняется следующий компонент и аддон понимает, что удар по мобу совершил именно игрок.

**«event» : «become_pig»** — выполняет события из «events». В данном случае выполняется событие «become_pig» (стать свиньёй), которое мы настроим позже. Событие выполняется, если в прошлом фильтре оказалось, что урон нанес игрок.

**«deals_damage»** — отвечает за то, чтобы моб получал урон, или игнорировал его. Нужно поставить либо «true» (правда), либо «false» (ложь).

**Добавление событий**
После этого следует добавить событие, которые будут отвечать за превращение коровы в свинью.

```
"events": {
"become_pig": {
"remove": {
},
"add": {
"component_groups": [
"minecraft:cow_transform"
]
}
},
```

Точно также, как и в прошлый раз, следует скопировать или написать самому нужный код. Как вы помните, мы сделали так, чтобы если игрок ударял свинью, активировалось событие с названием «become_pig». В «events» мы пишем название этого события и начинаем его редактировать. Это событие ничего не удаляет, но добавляет к корове группу компонентов «minecraft: cow_transform». Это значит, что теперь она имеет группу трансформации и мы можем изменить поведение при наличии этой группы. Позже вы увидите, для чего это нужно.

**«add»** и **«remove»** — добавляют и удаляют группы компонентов.

**Группы компонентов**
С помощью событий мы добавляем сущности группу компонентов, которая отвечает за превращение в свинью, теперь мы должны добавить эту группу в «components_groups».

```
"component_groups": {
"minecraft:cow_transform": {
"minecraft:transformation": {
"into": "minecraft:pig",
"delay": 0.5
}
},
```

Как обычно, поставьте внутри «components_groups» название нашей группы, которую мы активировали событием. Далее в этой группе расписывает пару «Имени: значения», то есть компонент.

**«minecraft: transformation»** — компонент, который трансформирует моба в другую сущность.

Далее расписываем, в кого трансформируется наш моб — корова. «into» (в) : «minecraft: pig» (свинью, на этом месте нужен идентификатор моба, в которого превратиться наш моб, идентификаторы можно посмотреть в файлах других мобов в ванильном шаблоне, обычно он начинается с "minecraft: ").

**«delay»** — Задержка в превращении в другую сущность в секундах.

Вот и готов набор параметров или аддон. Теперь самое время протестировать его!

- Зайдите в Minecraft.
- Создайте новый мир.
- Включите в нём ваш набор параметров.
- Зайдите в мир.
- Ударьте корову.
- Получите результат!

### Результат

Отлично! Если у вас всё заработало, то вы отлично освоили Аддоны и теперь можете приступить к более сложным мобам, предметам или другим вещам. Если вы хотите продолжить изучение наборов параметров, рекомендуем вам узнать больше о компонентах сущностей, с помощью которых вы сможете настроить их поведение!

**Ошибки**
Если у возникли проблемы и аддон не сработал, рекомендуем :

- Проверить правильность написания JSON кода, нельзя пропускать фигурные скобки и запятые.
- Важно правильно расписывать все названия, без опечаток.
- Проверьте, что папки находятся на своих местах.

**Как поделиться набором**
Для того, чтобы отправить набор параметров:

- Заходим в папку нашего аддона и выделяем все файлы внутри, тоесть на папку аддона, а то, что внутри. Далее сжимаем наши файлы в «mcpack». После этого вы можете выложить этот файл куда угодно.

**Проверка файла**
Для проверки работоспособности вашего файла, удалите ваш аддон из Minecraft **(сделайте копию)** и откройте mcpack. Готово.