#### <a name="multi">Несколько меню в одном файле</a>
---
<<<<<<< HEAD
Если вы делаете какое-то небольшое меню, возможно есть смысл писать его в одном файле со смежными с ним меню. Для этого в плагине предусмотрена конструкция, позволяющая описывать сразу несколько меню в одном файле. В таком случае именем меню будет считаться имя блока, в котором оно описано. Вот пример:
В корне файла создается блок `menus`, в котором и создаются отдельные меню. В данном примере созданы два отдельных меню с именами `my_awesome_menu` и `my_another_menu`.
<<<<<<< HEAD
## <a name="menuVar">Параметры меню</a>
Для создания меню, будь то в отдельном файле, или в одном файле с другими меню, нужно задать его параметры. Таблица ниже ознакомит Вас с параметрами, которые можно указывать в меню:
...
...
@@ -107,30 +93,10 @@ menus {
| denyActions | [Объект](Типы данных#object) | {-Нет-} | [Действия](Действия), которые выполнятся при не выполнения **любого** из правил. |
| closeActions | [Объект](Типы данных#object) | {-Нет-} | [Действия](Действия), которые выполнятся после закрытия меню. |
| updateInterval | Целое число | {-Нет-} | Устанавливает период обновления меню в секундах. Если отсутствует - меню не обновляется автоматически. |
=======
## <a name="menuVar"> Menu options </a>
To create a menu, whether in a separate file, or in a single file with other menus, you need to set its parameters. The table below will meet you with the parameters that can be specified in the menu:
| title | String | {+Yes+} | Sets the title of the menu |
| size | Number | {+Yes+} | Sets the vertical size of the menu, that is, the number of cells |
| items | [List of objects](Data types#list) | {-No-} | Sets items (buttons) in the menu |
| activators | [Object](Data types#object) | {-No-} | [Actions](Actions) to open the menu |
| rules | [Object](Data types#object) / [List of objects](Data types#list) | {-No-} | [Rules](Rules) to open the menu. If at least one of the rules is not executed, the menu will not open. | | |
| openActions | [Object](Data types#object) | {-No-} | [Actions](Actions) that will be executed **until** the menu is opened. |
| denyActions | [Object](Data types#object) | {-No-} | [Actions](Actions) that will be executed if **any** of the rules is not executed. |
| closeActions | [Object(Data types#object) | {-No-} | [Actions](Actions) that will be executed after the menu is closed. |
| updateInterval| Integer | {-No-} | Sets the period for updating the menu in seconds. If absent, the menu will not update automatically. |
>>>>>>> fd4067694f1dab6773d03251d46516b595e8256a
## <a name="update">Авто обновление меню</a>
<<<<<<< HEAD
Немного подробней о параметре `updateInterval`. Если вы хотите создать меню, которое будет автоматически обновляться, включая предметы, плейсхолдеры и любые другие динамические данные, вы можете указать интервал обновления меню.
=======
A bit more detailed about the `updateInterval` parameter. If you want to create a menu that will be automatically updated with items, placeholders and any other dynamic data, you can specify the interval for updating the menu.
>>>>>>> fd4067694f1dab6773d03251d46516b595e8256a
```hocon
title:"Обновляемое меню"
...
...
@@ -149,7 +115,6 @@ items:[
В данном примере использовался стандартный [плейсхолдер](Плейсхолдеры) плагина.
<<<<<<< HEAD
## <a name="buttons">Кнопки меню</a>
Кнопка в меню - это обыкновенный [предмет](Представление предмета) с расширенным функционалом. Ниже представлены все параметры, которые можно указывать помимо стандартных параметров предмета.
...
...
@@ -160,18 +125,6 @@ items:[
| [rules](#btnRules) | [Список объектов](Типы данных#list) | [Правила](Правила) для вывода кнопки в меню | {-Нет-} |
| [iRules](#btnRules) | [Список объектов](Типы данных#list) | [Правила](Правила) для вывода кнопки в меню, работающие строго наоборот | {-Нет-} |
| [click](#btnClicks) | [Объект](Типы данных#object) | Содержит действия при клике а также описание действий для разных типов клика | {-Нет-} |
=======
## <a name="buttons"> Menu buttons </a>
The button in the menu is an ordinary [item](Item format) with advanced functionality. Below are all the parameters that can be specified in addition to the standard parameters of the item.
| [slot](Item format#slot) | Integer, Object, Text | {+Yes+} | Sets item position in inventory |
| [rules](#btnRules) | [List of objects](Data types#list) | {-No-} | [Rules](Rules) to display the button in the menu |
| [iRules](#btnRules) | [List of objects](Data types#list) | {-No-} |[Rules](Rules) to display a button on a menu that works exactly the opposite |
| [click](#btnClicks) | [Object](Data types#object) | {-No-} | It contains actions on a click as well as a description of actions for different types of clicks |
>>>>>>> fd4067694f1dab6773d03251d46516b595e8256a
Как видно, обязательным для кнопки является только параметр `slot`, ведь предмет должен находится в конкретной ячейке.
...
...
@@ -195,15 +148,9 @@ items:[
]
```
<<<<<<< HEAD
В данном примере в меню есть два предмета. Первый (Железный меч) выведется в слоте 0 в любом случае. Второй (Алмазный меч) выведется в слоте 0, и заменит первый предмет только в том случае, если у игрока есть право "some.perm".
Рассмотрим похожий пример, но с применением инвертированных правил `iRules`.
=======
In this example, the menu has two items. The first _(Iron Sword)_ will be displayed in slot 0 in any case. The second _(Diamond Sword)_ will be displayed in slot 0, and will replace the first item only if the player has the right "some.perm".
Consider a similar example, but using inverted `iRules` rules.
>>>>>>> fd4067694f1dab6773d03251d46516b595e8256a
```hocon
...
...
@@ -247,11 +194,7 @@ items:[
Почти любое меню бессмысленно без обработки нажатий на кнопки. В плагине предусмотрена удобная система обработки кликов по кнопкам.
<<<<<<< HEAD
Итак, рассмотрим, что из себя представляет блок `click`.
=======
So, let's look at what a `click` block is all about.
>>>>>>> fd4067694f1dab6773d03251d46516b595e8256a
```hocon
items:[
...
...
@@ -267,15 +210,10 @@ items:[
]
```
<<<<<<< HEAD
Внутри блока `click` указан блок `left`. Это ничто иное, как тип клика, при котором сработают действия внутри блока. Внутри блока, отвечающего за тип клика можно описывать те же [действия](Действия) и [правила](Правила), что и в самом блоке click.
=======
Inside the `click` block, the `left` block is specified. This is nothing more than the type of click that triggers the actions within the block. Inside the block responsible for the type of click, you can describe the same [actions](Actions) and [rules](Rules) as in the click block itself.
>>>>>>> fd4067694f1dab6773d03251d46516b595e8256a
Все типы кликов вы можете найти [здесь](https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/inventory/ClickType.html). Мы же опишем основные, рабочие на всех версиях:
<<<<<<< HEAD
| **Тип клика** | **Описание** |
| --------------- | ----------------- |
| LEFT | Клик левой кнопкой мыши |
...
...
@@ -286,18 +224,6 @@ Inside the `click` block, the `left` block is specified. This is nothing more th
| DOUBLE_CLICK | Двойной клик левой кнопкой мыши |
Любой из этих типов можно использовать в блоке `click` как по отдельности, так и вместе с другими типами в одном блоке.