Справочник команд¶
Точный перечень всех команд InkQuest: что принимает, что возвращает, какими ошибками отвечает. Сюда заходят свериться — как именно записать. За моделью «квест как читаемое состояние» и разобранными связками — Интеграция с командами; за готовыми сборками — Паттерны квестов.
Все команды требуют уровень оператора 2+.
Соглашения¶
В записи синтаксиса: <обязательный> — обязательный аргумент, [необязательный] — необязательный, a|b|c — выбор одного из вариантов.
| Аргумент | Тип | Значение |
|---|---|---|
<player> |
селектор одного игрока (@s, @p, ник) |
@a нельзя — кроме quest scroll. |
<players> |
селектор нескольких игроков | Только у quest scroll. |
<id> |
Identifier namespace:path |
Идентификатор квеста, например example:escape. |
<taskId> |
строка без namespace | Идентификатор задачи внутри квеста, например push_the_lever. |
<title>, <description> |
Text | Строка в кавычках или JSON-текст. |
<icon> |
Identifier | Иконка квеста (см. quest modify ... icon). |
<index>, <n> |
int | Целое число. |
Два набора слов про статус — не путай.
- Задать исход задачи или этапа:
success·failure·skip(командаquest complete).- Проверить или отфильтровать статус квеста:
active·complete·succeeded·failed·pinned; статус задачи: те же плюсskipped(командыtest,query,list,execute if). Что они значат — Статусы квестов и задач.Каждая команда возвращает число — счётчик или
1/0. Его можно положить в scoreboard черезexecute store result score …или ветвить черезexecute if. Что именно возвращается — указано у команды.
Создание и редактирование квестов¶
Команды этого раздела работают только с динамическими квестами (созданными через
quest new). Квест из датапака (static) командами не редактируется и не удаляется — правь его JSON.
quest new¶
Создаёт пустой динамический квест. Без <title> заголовком становится идентификатор квеста (например example:escape). Заголовок и описание можно задать позже через quest modify.
Ошибки: квест с таким id уже существует.
quest modify ... title¶
Меняет заголовок квеста.
quest modify ... description¶
Меняет описание квеста.
quest modify ... icon¶
Меняет иконку квеста. icon — Identifier текстуры иконки, а не предмет Minecraft. Допустимые значения и значение по умолчанию — в Формат файла квеста.
quest modify ... index¶
Задаёт порядок сортировки в книге квестов: меньше — выше.
quest modify ... repeatable¶
Включает повторное прохождение. При true завершённый квест можно выдать заново — прогресс прошлого прохождения сбрасывается. При false (по умолчанию) выдача уже завершённого квеста блокируется. Активный (незавершённый) квест нельзя перевыдать ни при каком значении. См. Повторяемые квесты.
quest modify ... pin_mode¶
Режим автозакрепления при автовыдаче квеста как зависимого от только что завершённого. На ручную выдачу через quest give не влияет.
| Значение | Поведение |
|---|---|
auto |
Закрепить, если родительский квест был закреплён в HUD (по умолчанию). |
force |
Закрепить всегда. |
off |
Не закреплять. |
См. Закрепление.
quest modify ... tasks add¶
/quest modify <id> tasks add required <taskId> [<title>]
/quest modify <id> tasks add optional <taskId> [<title>]
Добавляет задачу к квесту. Без <title> заголовком становится ID задачи (например push_the_lever).
required— создаёт новый этап с этой задачей как обязательной.optional— добавляет необязательную задачу в последний этап (требует хотя бы одногоrequired).
Задачи, добавленные командой, не имеют условий выполнения — завершить их можно только командой quest complete.
Ошибки: задача с таким taskId уже есть в квесте · optional в квест без этапов.
quest modify ... tasks description¶
Меняет описание задачи.
Ошибки: задача не существует.
quest modify ... tasks remove¶
Удаляет задачу из квеста.
Ошибки: задача не существует · квест кто-то отслеживает (сначала сними его через quest drop или quest purge).
quest remove¶
Удаляет динамический квест целиком — после этого его нельзя выдать или изменить.
Ошибки: квест не существует · квест статический · квест кто-то отслеживает.
Выдача и прохождение¶
quest give¶
Выдаёт квест игроку — квест становится tracked. С флагом pin сразу закрепляется в HUD.
Ошибки: квест не существует · квест уже активен у игрока · квест завершён и не повторяемый.
quest drop¶
Снимает квест с игрока. Весь прогресс по квесту теряется; если квест был закреплён — открепляется.
Ошибки: квест не существует · игрок его не отслеживает.
quest complete ... task¶
Завершает одну задачу с указанным исходом (по умолчанию success). Работает с задачей любого этапа, не только активного. Если задача обязательная и условия перехода соблюдены — квест переходит на следующий этап или завершается.
Возвращает 1 при успехе.
Ошибки: квест не существует · игрок не отслеживает · квест уже завершён · задача уже завершена.
quest complete ... stage¶
Завершает задачи активного этапа (по умолчанию success required).
required— только обязательную задачу этапа.full— все задачи этапа (обязательную и необязательные).
Возвращает число завершённых задач.
Ошибки: квест не существует · игрок не отслеживает · квест уже завершён · у квеста нет активного этапа.
quest complete (весь квест)¶
Завершает незавершённые задачи всех этапов (по умолчанию success required).
required— обязательные задачи всех этапов.full— все задачи всех этапов.
Возвращает число завершённых задач.
Ошибки: квест не существует · игрок не отслеживает · квест уже завершён.
Завершение квеста — на следующем тике. Любая форма
quest completeпомечает задачи завершёнными сразу, но сам квест переходит вcomplete(и разблокирует зависимые поafterквесты) только на следующем серверном тике. Поэтому в одной функции «закрой задачу → тут же проверь квест» не сработает: идущая следомexecute if quest … completeещё застанет квест активным — разнеси проверку на следующий тик. Автозавершение по условию задачи этого лага не имеет: задача и квест завершаются в один тик. См. Структура квеста.
Закрепление в HUD¶
quest pin¶
Закрепляет квест в HUD игрока.
- без
taskId— закрепляет обязательную задачу активного этапа. - с
taskId— закрепляет указанную задачу (должна быть активной: в активном этапе и не завершённой).
Ошибки (без taskId): квест не существует · не отслеживается · квест завершён · уже закреплён.
Ошибки (с taskId): квест не существует · не отслеживается · задача не активна · задача уже закреплена.
quest unpin¶
Открепляет квест из HUD игрока.
Ошибки: квест не существует · не отслеживается · квест не закреплён.
Чтение состояния¶
Три команды читают одно состояние в разной форме: test — да/нет числом, execute if — ветка в цепочке, query — величина. Какую брать и как они сочетаются — Интеграция с командами.
quest test¶
/quest test <player> <id> active|complete|succeeded|failed|pinned
/quest test <player> <id> task <taskId> active|complete|succeeded|failed|skipped|pinned
Проверяет статус квеста или задачи. Возвращает 1, если статус совпал, иначе 0, и печатает результат в чат. Для «тихой» проверки внутри командной логики бери execute if quest.
Ошибки: квест не существует · игрок не отслеживает · (для задачи) задача не существует.
quest query¶
Возвращает число — прогресс квеста, этапа или условия задачи. Кладётся в scoreboard через execute store result score.
Прогресс по этапам квеста:
Задачи этапа:
/quest query <player> <id> stage active tasks complete|total|percent
/quest query <player> <id> stage <n> tasks complete|total|percent
stage active — задачи активного этапа; stage <n> — задачи этапа с номером n (нумерация с нуля).
Прогресс условия конкретной задачи:
success / failure — условие выполнения или провала; value — текущее значение, target — целевое, percent — процент 0–100. Применимо к условиям с прогресс-баром (score, all, optionals — см. Условия выполнения задачи).
| Метрика | Что возвращает |
|---|---|
complete |
Сколько единиц завершено (этапов с выполненной обязательной задачей / задач этапа). |
total |
Сколько единиц всего. Работает для квеста в любом состоянии. |
percent |
Процент завершения, 0–100. |
completeиpercentотвечают ошибкой и0для завершённого квеста: прогресс активного этапа после завершения недоступен.stage active …отвечает ошибкой, если активного этапа нет.
Пример — положить число пройденных этапов в scoreboard:
Ошибки: квест не существует · игрок не отслеживает · квест завершён (complete / percent) · нет активного этапа (stage active) · номер этапа вне диапазона (stage <n>) · задача не существует (task).
/execute if|unless quest и /execute if|unless task¶
/execute if|unless quest <player> <id> active|complete|succeeded|failed|pinned …
/execute if|unless task <player> <id> <taskId> active|complete|succeeded|failed|skipped|pinned …
Расширение ванильной /execute: статус квеста или задачи становится таким же условием, как if score или if block, и комбинируется с ними в одной строке.
execute if quest @s story:ch1 succeeded unless quest @s story:ch2 active run say С возвращением!
execute if task @s example:escape push_the_lever succeeded run setblock ~ ~ ~ air
Разбор модели и связок — Интеграция с командами.
Просмотр¶
quest list¶
Список зарегистрированных квестов.
| Фильтр | Что показывает |
|---|---|
all |
Все квесты (по умолчанию). |
static |
Только загруженные из датапаков. |
dynamic |
Только созданные командами. |
Возвращает число квестов.
quest list trackedby¶
Квесты, которые отслеживает игрок, с фильтром по статусу (по умолчанию all).
Возвращает число квестов.
quest list tasks¶
Задачи квеста.
| Фильтр | Что показывает |
|---|---|
all |
Задачи по этапам и неиспользуемые (по умолчанию). |
required |
Только обязательные (по одной на этап). |
optional |
Только необязательные. |
unused |
Объявлены в tasks, но не попали ни в один этап. |
Возвращает число задач.
Служебные¶
quest purge¶
Снимает квест со всех игроков, включая офлайн: онлайн-игроки получают корректные события (HUD обновится), у офлайн — тихое удаление из сохранения. Нужна перед структурными правками (tasks remove, quest remove) или для сброса ивента. Уничтожает прогресс всех по этому квесту — применяй осознанно.
Возвращает число затронутых игроков.
Ошибки: квест не существует.
quest scroll¶
Выдаёт игрокам свиток квеста — предмет, выдающий квест <id> по ПКМ. Без <players> свиток получает исполнитель команды, если это игрок. В отличие от остальных команд, <players> — множественный селектор (можно @a).
Возвращает число игроков, получивших свиток.
Ошибки: квест не существует.
См. также¶
- Интеграция с командами — модель «квест как состояние» и разобранные связки
test/query/execute if. - Статусы квестов и задач — что значат
active,complete,succeeded,failed,pinned; почему квест не получаетskipped. - Закрепление — как
pinвыглядит на стороне игрока. - Формат файла квеста — те же поля (
title,icon,repeatable,pin_mode) в JSON датапака. - Предметы — свиток и книга квеста.
- Паттерны квестов — готовые сборки на этих командах.