Перейти к содержанию

Интеграция с командами

Главная идея: состояние квеста читается командами. Квест — не закрытый чёрный ящик, а источник данных: его можно опрашивать прямо из командных блоков, функций и цепочек /execute.

Эта страница — про мысленную модель и про то, как инструменты сочетаются. Точный синтаксис каждой команды — в Справочник команд.


Три способа прочитать состояние

Инструмент Что возвращает Когда брать
quest test 1 / 0 и печать в чат Свериться со статусом вручную.
execute if quest / execute if task Ветку /execute (да / нет) Вплести статус в цепочку команд — без вывода в чат.
quest query Число — прогресс, счётчик, процент Получить величину, а не просто да/нет.

Все три читают одно и то же состояние, просто в разной форме. Выбор — по тому, что нужно на выходе: quest test отвечает в чат, когда сверяешься вручную; execute if тихо ветвит команды; quest query отдаёт число для scoreboard.


execute if — статус как условие

/execute if|unless quest и /execute if|unless task — расширение ванильной /execute. Статус квеста становится таким же условием, как if block или if score, и комбинируется с ними в одной строке:

execute if quest @s story:ch1 succeeded unless quest @s story:ch2 active run say С возвращением!

Это самый прямой способ привязать игровое событие к прогрессу: открыть дверь, заспавнить NPC, выдать награду — ровно тем игрокам, чьё состояние подходит.


quest query — прогресс как число

quest query отдаёт числовую величину, которую удобно положить в scoreboard через store result:

execute store result score @s dungeon_pct run quest query @s story:dungeon stages percent

Дальше это число — обычный счёт: его можно показать на табло, сравнить через if score, отобразить в bossbar. Так из квестового прогресса собираются прогресс-бары, пороги и индикаторы, живущие средствами ванильного scoreboard.

quest query читает прогресс в обе стороны: можно спросить и про этапы квеста, и про задачи этапа, и про значение конкретного условия (value / target / percent). Полный список форм — в Справочник команд.


Обратная сторона: команды меняют состояние

Чтение — половина интеграции. Вторая половина в том, что и сам квест управляется командами: выдача (quest give), завершение задач (quest complete), закрепление (quest pin). А задачи, в свою очередь, умеют запускать твои функции через хуки on — см. Хуки жизненного цикла задачи.

Получается замкнутый цикл: командный блок выдаёт квест → задача при завершении вызывает твою функцию → функция читает состояние других квестов и решает, что выдать дальше. На этом цикле строятся все паттерны — от цепочек до серверных ивентов.


Связь со scoreboard напрямую

Условие score читает обычный scoreboard objective, а хуки on могут этот objective менять своими функциями. Это вторая точка стыковки с ванильными командами: считаешь что угодно средствами Minecraft (статистику, кастомные счётчики), а квест лишь следит за достижением цели. Самый наглядный пример — общесерверный счётчик в Глобальный квест.


См. также