Создание квестов
Пример квеста
EliteMobs поставляется с предустановленным файлом test_quest.yml, который будет проанализирован здесь как простой формат квеста для следования.
Пользовательские квесты находятся в папке ~plugins/EliteMobs/customquests!
test_quest.yml
isEnabled: true
customObjectives:
Objective1:
amount: '1'
filename: test_boss.yml
objectiveType: KILL_CUSTOM
customRewards:
- filename=magmaguys_toothpick.yml:amount=1:chance=1
name: "&aKill the Test Boss"
questLore:
- "&cEnd the test boss'' reign of terror!"

Если ваш интерфейс квестов не выглядит так, вы можете изменить его с помощью /em alt.
Этот пример квеста даст игрокам задачу убить 1 test_boss.yml. (Фактическое имя босса, отображаемое в трекере квестов, будет name:, установленное в test_boss.yml.) И в качестве награды за выполнение квеста они получат 1 Зубочистку Magmaguy.
Создание пользовательских квестов
customObjectives
Устанавливает цели квеста.
| Ключ | Значения | По умолчанию |
|---|---|---|
customObjectives | Special [1] | none |
Примечание: Если вы используете многофазного босса в качестве цели, то целью должна быть первая фаза.
Примеры
KILL_CUSTOM:
customObjectives:
Objective1:
amount: '1'
filename: my_cool_boss.yml
objectiveType: KILL_CUSTOM
DIALOG:
customObjectives:
Objective1:
dialog:
- "&a[Dialog NPC] &fCome here often?"
- "&7&oI should eat more apples."
filename: dialog_npc.yml
npcName: Dialog NPC
location: at dialog location.
objectiveType: DIALOG
FETCH_ITEM:
customObjectives:
Objective1:
amount: '99'
itemName: Red Apples
filename: my_quest_item_red_apples.yml
objectiveType: FETCH_ITEM
ARENA:
customObjectives:
Objective1:
objectiveType: ARENA
filename: my_arena.yml
name: "Complete the Arena"

Special [1]
Развернуть таблицу
Пользовательские цели создаются с использованием следующих значений:
| Ключ | Описание |
|---|---|
KILL_CUSTOM / FETCH_ITEM / DIALOG / ARENA | Используется для установки типа цели. KILL_CUSTOM означает, что квест включает убийство определенного Custom Boss, FETCH_ITEM означает, что квест включает получение определенного Custom Item, DIALOG означает, что квест включает разговор с NPC, а ARENA означает, что квест включает прохождение определенной арены. |
filename | Используется для установки имени файла Custom Boss, Custom Item, которого игрок должен убить / получить, NPC, с которым нужно поговорить, или арены, которую нужно пройти. |
amount | Используется для установки количества Custom Bosses, которых нужно убить, или предметов, которые нужно получить. По умолчанию 1, если не указано. |
dialog | Используется для установки диалога NPC, с которым разговаривает игрок. |
name | Используется для установки имени цели квеста, будь то NPC, пользовательский предмет или арена. Только для визуальных целей. |
itemName | Используется только с FETCH_ITEM – Эта настройка изменяет отображение имени предмета в трекере квестов. Она позволяет отображать пользовательское имя, отличное от фактического внутриигрового имени предмета. |
Обратите внимание, что каждое поле Custom Objective разделяется : !
customRewards
Устанавливает награды за квест.
| Ключ | Значения | По умолчанию |
|---|---|---|
customRewards | Universal EliteMobs loot format | none |
Пример
customRewards:
- currencyAmount=50:amount=1:chance=0.05
- material=COOKED_COD:amount=3:chance=1.0
- filename=magmaguys_toothpick.yml:amount=1:chance=1.0

Примечание: Если вы не указываете customRewards, система квестов автоматически сгенерирует награды на основе уровня квеста. Качество наград масштабируется в зависимости от сложности квеста и включает как валюту, так и предметы. Для точного контроля над наградами всегда явно указывайте customRewards.
questAcceptPermission
Устанавливает разрешение, которое должен иметь игрок, чтобы принять квест.
| Ключ | Значения | По умолчанию |
|---|---|---|
questAcceptPermission | String | none |
Пример
questAcceptPermission: elitequest.my_permission
questAcceptPermissions
Устанавливает разрешения, которые должен иметь игрок, чтобы принять квест.
| Ключ | Значения | По умолчанию |
|---|---|---|
questAcceptPermissions | String List | none |
Пример
questAcceptPermissions:
- elitequest.my_previous_quest_one.yml
- elitequest.my_previous_quest_two.yml
questLockoutPermission
Устанавливает разрешение, которое игрок получит после завершения квеста, что заблокирует ему возможность снова выполнить квест. Если не указано, разрешение на блокировку квеста автоматически генерируется как elitequest.[filename].
| Ключ | Значения | По умолчанию |
|---|---|---|
questLockoutPermission | String | elitequest.[filename] |
Пример
questLockoutPermission: elitequest.my_quest.yml
questLockoutMinutes
Устанавливает, сколько минут игроку придется ждать, прежде чем он сможет снова выполнить квест (работает путем удаления разрешения на блокировку квеста).
| Ключ | Значения | По умолчанию |
|---|---|---|
questLockoutMinutes | Integer | -1(никогда не повторится) |
Пример
questLockoutMinutes: 60
name
Устанавливает имя квеста. Принимает Color Codes.
| Ключ | Значения | По умолчанию |
|---|---|---|
name | String | none |
Пример
name: "&aMy Great Quest Name"
questLore
Устанавливает описание квеста, которое будет отображаться во внутриигровом меню квестов.
| Ключ | Значения | По умолчанию |
|---|---|---|
questLore | String List | none |
Пример
questLore:
- "Interesting lore sentence."
- "Yet another interesting lore sentence."

temporaryPermissions
Устанавливает разрешения, назначенные игроку до тех пор, пока он не сдаст квест.
Если вы используете эту настройку для обеспечения выпадения предмета только когда у игроков активен определенный квест, вам также нужно настроить Same Permission в конфигурационном файле предмета.
| Ключ | Значения | По умолчанию |
|---|---|---|
temporaryPermissions | String List | none |
Пример
temporaryPermissions:
- elitequest.item_that_should_drop_only_during_quest.yml
questAcceptDialog
Устанавливает диалог, который появляется в чате при принятии квеста.
| Ключ | Значения | По умолчанию |
|---|---|---|
questAcceptDialog | String List | none |
Пример
questAcceptDialog:
- "My hero! You are so helpful!"
- "I wish you the best of luck!"

questCompleteMessage
Устанавливает диалог, который появляется в чате при завершении квеста.
| Ключ | Значения | По умолчанию |
|---|---|---|
questCompleteMessage | String List | none |
Пример
questCompleteMessage:
- "My hero! You have completed my difficult quest!"
- "As a reward you can have this loaf of bread!"

questCompleteCommands
Устанавливает команды, которые будут выполнены при завершении квеста. Поддерживает плейсхолдеры: $player для имени игрока и $getX, $getY, $getZ для координат местоположения игрока.
| Ключ | Значения | По умолчанию |
|---|---|---|
questCompleteCommands | String List | none |
Пример
questCompleteCommands:
- say $player has finished a quest at $getX, $getY, $getZ!
- give $player diamond 1
![]()
turnInNPC
Устанавливает имя файла NPC, с которым игрокам нужно поговорить/взаимодействовать для завершения квеста. Это не обязательно должен быть тот же NPC, который выдал квест.
| Ключ | Значения | По умолчанию |
|---|---|---|
turnInNPC | Filename | none |
Пример
turnInNPC: my_cool_quest_npc.yml
Quest Givers
Чтобы назначить квест NPC, который будет выдавать его игрокам, вам нужно настроить файл NPC, а не файл квеста.
В файле конфигурации NPC (~/plugins/EliteMobs/npcs/) добавьте:
questFileName: my_quest.yml
Для NPC, которые выдают несколько квестов:
questFileName:
- quest_one.yml
- quest_two.yml
Смотрите документацию по созданию NPC для получения дополнительной информации о настройке NPC.
trackable
Устанавливает, будет ли квест использовать трекер квестов.
| Ключ | Значения | По умолчанию |
|---|---|---|
trackable | Boolean | true |
Пример
trackable: true
questLevel
Устанавливает уровень квеста. Это только визуальная подсказка, чтобы игроки могли определить, насколько сложным будет квест. Это не влияет на уровень боссов, предметов или других элементов.
| Ключ | Значения | По умолчанию |
|---|---|---|
questLevel | Integer | 0 |
Пример
questLevel: 10

questAcceptSound
Устанавливает звук, который воспроизводится при принятии квеста. Возможно воспроизводить как звуки Minecraft, так и звуки из ресурс-пака.
| Ключ | Значения | По умолчанию |
|---|---|---|
questAcceptSound | String | none |
Пример
questAcceptSound: entity.experience_orb.pickup

questCompleteSound
Устанавливает звук, который воспроизводится при завершении квеста (сдаче). Возможно воспроизводить как звуки Minecraft, так и звуки из ресурс-пака.
| Ключ | Значения | По умолчанию |
|---|---|---|
questCompleteSound | String | none |
Пример
questCompleteSound: entity.player.levelup

Localization Support
Следующие поля поддерживают локализацию для многоязычных серверов:
namequestLorequestAcceptDialogquestCompleteMessage
Это позволяет вам предоставлять переводы для разных языков на вашем сервере.
Permissions
Как упоминалось в таблицах выше, разрешения обычно являются Strings или String Lists. Но давайте более подробно рассмотрим, как вы будете использовать их для блокировки и разблокировки квестов.
Предположим, что вы создаете quest_3 в серии квестов, которые вы запланировали, и вы не хотите, чтобы игроки могли взять quest_3 до того, как они закончат quest_2. Мы настроили бы файл квеста следующим образом:
questAcceptPermission: elitequest.quest_2.yml
questLockoutPermission: elitequest.quest_3.yml
Установив questAcceptPermissions на elitequest.quest_2.yml, мы теперь предотвратили возможность игроков взять quest_3.yml до того, как они закончат quest_2.yml.
Установив questLockoutPermission на elitequest.quest_3.yml, мы предотвратили возможность игроков получить этот квест, пока у них уже есть этот квест в трекере или если они уже выполнили этот квест. Это останавливает игроков от возможности повторить квест.
Если вы хотите сделать квест, который станет доступным только после того, как игроки завершат серию квестов, то вы настроите файл квеста следующим образом:
questAcceptPermissions:
- elitequest.quest_2.yml
- elitequest.quest_3.yml
- elitequest.quest_4.yml
Если вы хотите, чтобы игроки могли получать определенные предметы только когда у них активен правильный квест, то мы можем сделать это с помощью temporaryPermissions. Мы создадим разрешение в файле квеста, используя temporaryPermissions, затем создадим соответствующее permission в файле предмета, используя permission.
Например, мы откроем наш файл квеста и добавим следующее:
temporaryPermissions:
- elitequest.my_cool_item.yml
Затем мы откроем файл предмета, в нашем случае my_cool_item.yml, и затем добавим следующее:
permission: elitequest.my_cool_item.yml
Оба файла теперь имеют соответствующие разрешения, что теперь должно сделать наш предмет доступным для выпадения только когда у игроков активен правильный квест.
