Квесты на сервере Minecraft: BetonQuest
Полный гайд по BetonQuest: установка, структура пакетов, диалоги NPC, цепочки квестов и награды на сервере Minecraft.
Кратко: BetonQuest - лучший плагин для создания квестов на серверах Minecraft с полноценными диалогами, ветвлением и условиями. Установите плагин, создайте пакет с YAML-конфигами, свяжите с NPC через Citizens - и квестовая система заработает без программирования.
Квесты на сервере Minecraft: BetonQuest
BetonQuest - это один из самых функциональных плагинов для квестов в экосистеме Minecraft Java Edition. В отличие от простых “убей X мобов - получи награду” решений, BetonQuest позволяет строить полноценные RPG-сценарии: разветвлённые диалоги с NPC, многоэтапные задания, условные ветки, дневник заданий, глобальные переменные и интеграцию с десятками других плагинов. По состоянию на 2026 год актуальна ветка BetonQuest 2.1.x, которая работает на Paper/Spigot от Minecraft 1.19 и выше. Плагин полностью бесплатен и открыт на GitHub. Если вы хотите сделать сервер с живым миром, где игроки берут задания у NPC, проходят цепочки квестов и получают уникальные награды - BetonQuest даёт всё необходимое для этого.
Pterohost - игровой хостинг с NVMe-дисками, DDoS-защитой и поддержкой 24/7: идеальная база для сервера с тяжёлыми плагинами вроде BetonQuest. Промокод 4START даёт -20% на первый заказ. Заказать Minecraft хостинг
Установка BetonQuest
BetonQuest распространяется как .jar-файл. Для полноценной работы потребуются зависимости.
Что нужно:
- Paper или Spigot 1.19+ (Paper предпочтительнее - BetonQuest активно использует его API)
- Java 17 или выше
- Citizens 2.x - для NPC-диалогов (рекомендуется)
- Vault + любой экономический плагин - для денежных наград
Шаги установки:
- Скачайте
BetonQuest-2.x.x.jarс официального сайта betonquest.org или с GitHub Releases. - Скачайте
Citizens.jarс dev.bukkit.org или SpigotMC. - Поместите оба .jar в папку
plugins/вашего сервера. - Перезапустите сервер.
- BetonQuest создаст папку
plugins/BetonQuest/с конфигами и директориейQuestPackages/.
После первого запуска проверьте лог - плагин сообщит об успешной загрузке и о найденных интеграциях (Vault, Citizens, EssentialsX и другие).
[BetonQuest] Hooking into Citizens
[BetonQuest] Hooking into Vault
[BetonQuest] Loaded 1 packages
Если Citizens не подключился - проверьте, что Citizens.jar присутствует в plugins/ и загрузился без ошибок до BetonQuest.
Структура пакетов
Вся логика квестов в BetonQuest организована в пакеты (packages). Каждый пакет - это папка внутри plugins/BetonQuest/QuestPackages/. Пакеты независимы и могут ссылаться друг на друга.
Типичная структура пакета:
QuestPackages/
MainQuests/
package.yml # конфиг пакета: название, включение/выключение
events.yml # события (что происходит)
conditions.yml # условия (когда происходит)
objectives.yml # цели (что должен сделать игрок)
conversations/
village_elder.yml # диалог с NPC "Старейшина деревни"
items.yml # предметы для квестов
journal.yml # записи в журнале игрока
messages.yml # сообщения игроку
package.yml - главный файл пакета:
package:
enabled: true
version: "1.0"
Все остальные файлы можно называть произвольно - BetonQuest загружает весь пакет целиком. Разделение на events.yml, conditions.yml и т.д. - удобное соглашение, но не обязательное. Можно держать всё в одном файле, если пакет небольшой.
События, условия и цели
Три кита BetonQuest:
События (Events) - действия, которые выполняются в ответ на что-то. Выдать предмет, показать сообщение, дать опыт, открыть следующую часть квеста.
# events.yml
give_sword:
type: giveitem
item: iron_sword
amount: 1
send_start_message:
type: notify
message: "&aЗадание получено! Найдите пещеру на севере."
give_gold:
type: money
amount: 300
add_quest_point:
type: point
category: main_quest
count: 1
Условия (Conditions) - проверки перед выполнением события или в диалоге. Есть ли у игрока предмет, достаточно ли у него уровня, выполнено ли предыдущее задание.
# conditions.yml
has_wood:
type: item
item: oak_log
amount: 20
quest_not_started:
type: tag
tag: quest_started
inverted: true
player_level_10:
type: experience
level: 10
Цели (Objectives) - то, что игрок должен сделать. Убить моба, добыть ресурс, добраться до точки, поговорить с NPC.
# objectives.yml
kill_zombies:
type: mobkill
mob: ZOMBIE
amount: 10
events: quest_step_2_start
conditions: on_main_quest
collect_iron:
type: craft
item: iron_ingot
amount: 5
events: craft_done_notify
reach_cave:
type: location
loc: 450;64;-320;world
range: 15
events: cave_reached_event
Связь между элементами: события запускают другие события или завершают цели; условия фильтруют, когда что-то работает; цели следят за действиями игрока и при выполнении запускают события.
Диалоги NPC через Citizens
Самая сильная сторона BetonQuest - разветвлённые диалоги. Создаётся файл в папке conversations/ пакета.
Пример диалога conversations/village_elder.yml:
conversations:
village_elder:
quester: "Старейшина"
first:
- start_condition
stop: "false"
NPC_options:
start_condition:
text: "&7Путник, ты пришёл вовремя. Нашу деревню осадили нежить. Поможешь?"
conditions: quest_not_started
pointer: yes_or_no
quest_already_active:
text: "&7Ты уже занимаешься нашей проблемой. Возвращайся, когда убьёшь 10 зомби."
conditions: quest_started, not_quest_done
quest_done:
text: "&6Ты сделал это! Держи награду, герой."
events: give_reward, complete_quest
player_options:
yes_or_no:
text: "Конечно помогу!"
events: start_quest_event
pointer: quest_accepted_reply
decline:
text: "Извини, мне некогда."
pointer: farewell
quest_accepted_reply:
text: "Хорошо, иду разбираться."
farewell:
text: "Удачи тебе."
Чтобы привязать диалог к NPC в Citizens:
- Выберите нужного NPC в игре или создайте нового:
/npc create Старейшина - Запомните ID NPC (показывается командой
/npc list) - Назначьте диалог:
/q npc assign village_elder MainQuests(гдеMainQuests- имя пакета)
После этого правый клик по NPC открывает диалог BetonQuest.
Опции диалога
В диалоге есть два типа узлов:
NPC_options- реплики NPC, игрок их видит и выбирает следующий шагplayer_options- ответы игрока, видны как кнопки выбора
Каждый узел может иметь:
text- текст реплики (поддерживает цветовые коды&)conditions- условия отображения (через запятую = AND)events- события при выбореpointer- следующий узел(ы) диалога
Журнал заданий
BetonQuest имеет встроенный журнал - книгу, где игрок видит активные и завершённые квесты. Записи добавляются через событие journal.
В events.yml:
add_journal_entry:
type: journal
action: add
entry: quest_cave_entry
В journal.yml (или в основном файле пакета):
journal:
quest_cave_entry: "&fЗадание: уничтожить нежить\n&7Старейшина попросил меня убить 10 зомби\nу северных ворот деревни. Нужно спешить."
Игрок открывает журнал командой /j (по умолчанию) или через бэкпак (инвентарь квестов). Можно настроить отображение в главном меню сервера через интеграцию с плагинами GUI.
Бэкпак (Backpack)
BetonQuest предоставляет специальный GUI-инвентарь (/q или /backpack), где отображаются:
- Активные квесты и их прогресс
- Журнал с записями
- Специальные квестовые предметы
Настраивается в config.yml плагина: default_package указывает, какой пакет открывается по умолчанию.
Награды
BetonQuest поддерживает разнообразные типы наград через систему событий.
Предметы:
give_reward_items:
type: giveitem
item: diamond_sword{name:Клинок_Тьмы, lore:Награда_за_отвагу}
amount: 1
Деньги (через Vault):
give_gold_reward:
type: money
amount: 500
Опыт:
give_exp:
type: experience
amount: 10
level: true
Очки квеста (внутренняя валюта):
quest_points_reward:
type: point
category: reputation
count: 5
Запуск команды:
run_reward_command:
type: command
commands:
- "give %player% golden_apple 3"
- "say Игрок %player% завершил квест!"
Составная награда - несколько событий сразу:
full_reward:
type: folder
events: give_gold_reward, give_exp, quest_points_reward, add_journal_complete_entry
Тип folder позволяет объединить несколько событий в одно - удобно, когда нужно выдать всё сразу при завершении квеста.
Пример цепочки квестов
Разберём полную цепочку: получить задание у NPC -> выполнить несколько целей -> сдать квест и получить награду.
Сценарий: Квест “Угроза из тьмы”. Три этапа: убить 10 зомби, найти пещеру, поговорить с NPC для завершения.
events.yml:
# Запуск квеста
quest_start:
type: folder
events: set_tag_started, start_objective_kill, notify_quest_start, add_journal_start
set_tag_started:
type: tag
tag: quest_darkness_started
action: add
notify_quest_start:
type: notify
message: "&6[Квест] &fУгроза из тьмы начат! Убейте 10 зомби у деревни."
add_journal_start:
type: journal
action: add
entry: quest_darkness_start
# Переход к шагу 2 (найти пещеру)
step2_start:
type: folder
events: start_objective_cave, notify_step2, add_journal_step2
notify_step2:
type: notify
message: "&6[Квест] &fОтлично! Теперь найдите пещеру на севере (450, 64, -320)."
add_journal_step2:
type: journal
action: add
entry: quest_darkness_step2
# Завершение квеста
quest_complete:
type: folder
events: set_tag_done, remove_tag_started, give_final_reward, notify_complete, add_journal_done
set_tag_done:
type: tag
tag: quest_darkness_done
action: add
remove_tag_started:
type: tag
tag: quest_darkness_started
action: remove
give_final_reward:
type: folder
events: reward_money, reward_exp, reward_item
reward_money:
type: money
amount: 500
reward_exp:
type: experience
amount: 5
level: true
reward_item:
type: giveitem
item: iron_sword
amount: 1
notify_complete:
type: notify
message: "&a[Квест завершён] &fУгроза из тьмы! Получено: 500 монет, 5 уровней, железный меч."
add_journal_done:
type: journal
action: add
entry: quest_darkness_done
start_objective_kill:
type: objective
objective: kill_quest_zombies
start_objective_cave:
type: objective
objective: reach_north_cave
conditions.yml:
quest_not_started:
type: tag
tag: quest_darkness_started
inverted: true
quest_started:
type: tag
tag: quest_darkness_started
quest_not_done:
type: tag
tag: quest_darkness_done
inverted: true
quest_done:
type: tag
tag: quest_darkness_done
on_step2:
type: tag
tag: quest_darkness_step2
step2_not_done:
type: tag
tag: quest_darkness_step2
inverted: true
objectives.yml:
kill_quest_zombies:
type: mobkill
mob: ZOMBIE
amount: 10
notify: "&7Зомби уничтожено: {amount}/10"
events: step2_start
conditions: quest_started
reach_north_cave:
type: location
loc: 450;64;-320;world
range: 15
events: set_step2_tag, add_journal_cave_reached
conditions: quest_started
conversations/elder.yml (сокращённый вариант):
conversations:
elder:
quester: "Старейшина"
first:
- offer_quest
- in_progress_step1
- in_progress_step2
- can_complete
NPC_options:
offer_quest:
text: "&7Нам нужна помощь. Нежить атакует деревню по ночам. Возьмёшься?"
conditions: quest_not_started, quest_not_done
pointer: accept_quest
in_progress_step1:
text: "&7Как дела с зомби? Продолжай, мы в тебя верим."
conditions: quest_started, step2_not_done
in_progress_step2:
text: "&7Ты нашёл пещеру? Разберись с источником нежити!"
conditions: quest_started, on_step2
can_complete:
text: "&6Ты сделал невероятное! Вот твоя награда, герой деревни."
conditions: quest_done
events: quest_complete
player_options:
accept_quest:
text: "Помогу вашей деревне!"
events: quest_start
pointer: quest_accepted
quest_accepted:
text: "Считайте дело сделанным."
Эта цепочка показывает ключевой паттерн: теги (tag) используются как флаги состояния квеста, условия фильтруют нужные ветки диалога, события-папки (folder) группируют действия.
Интеграции и расширения
BetonQuest 2.x имеет встроенные интеграции с популярными плагинами:
| Плагин | Что даёт |
|---|---|
| Citizens 2 | NPC с диалогами, квестовые персонажи |
| Vault | Денежные награды и условия на баланс |
| EssentialsX | Команды /back, homes как условия |
| MythicMobs | Квестовые боссы, моб с кастомными дропами |
| WorldGuard | Условия на регион (игрок в зоне) |
| PlaceholderAPI | Плейсхолдеры в тексте квестов |
| Skript | Кастомные события через скрипты |
| LuckPerms | Условия на права/группу игрока |
Для подключения интеграции достаточно установить нужный плагин - BetonQuest обнаружит его автоматически при загрузке сервера.
Советы по оптимизации и отладке
Отладка конкретного игрока:
/q debug <player>
Показывает активные цели, теги и очки квестов для игрока. Незаменимо при тестировании.
Перезагрузка без рестарта:
/q reload
Перезагружает все пакеты без перезапуска сервера. Используйте во время разработки после каждого изменения YAML.
Проверка синтаксиса: BetonQuest при перезагрузке выводит в консоль все ошибки конфигурации с указанием файла и строки. Всегда смотрите лог после /q reload.
Производительность: Если на сервере много активных игроков с квестами, тяжелее всего работают цели типа location с маленьким range (частые проверки) и mobkill без условий (слушают все убийства). Используйте условия, чтобы сузить область срабатывания.
Резервные копии: Перед крупными изменениями в пакетах делайте копию папки QuestPackages/. Также данные игроков хранятся в plugins/BetonQuest/playerdata/ - эту папку тоже включайте в бэкапы.
Связанные материалы
Для комфортной работы с BetonQuest важна надёжная инфраструктура сервера. Читайте как настроить бэкапы Minecraft-сервера, чтобы не потерять данные игроков и прогресс квестов. Если планируете расширять функционал, смотрите обзор лучших плагинов для сервера. Для управления игроками и командами пригодится гайд по EssentialsX.
Заключение
BetonQuest - профессиональный инструмент для создания квестовых систем на Minecraft-серверах. С его помощью можно реализовать полноценные RPG-сценарии: разветвлённые диалоги через Citizens, многоэтапные цепочки заданий, условные ветки, журнал и разнообразные награды - всё через YAML без программирования. Главный принцип - события, условия и цели: освоив их взаимодействие, вы сможете создавать квесты любой сложности. Начните с простой линейной цепочки, затем добавляйте ветвление и интеграции с другими плагинами. Документация на betonquest.org подробная и актуально поддерживается командой разработчиков.
Pterohost - игровой хостинг с быстрыми NVMe-дисками, защитой от DDoS и живой поддержкой: ваш сервер с квестами BetonQuest будет работать стабильно и без лагов. Промокод 4START даёт -20% на первый заказ. Заказать Minecraft хостинг