Квест-заметка (страница дневника)¶
Когда игрок нашёл записку, увидел странный знак на скале или услышал слух — это не «задание». Это нарративная мелочь, которая должна появиться в дневнике. Прогресс выполнять не нужно: запись существует ради текста.
В InkQuest для этого подходит обычный квест без задач (или с одной декоративной задачей). Никаких новых полей в JSON.
Зачем нужен этот паттерн¶
- Лор без принуждения. Записка не должна гореть в HUD и требовать действий — она просто лежит в книге, пока игрок не захочет перечитать.
- Дешёвый способ дать сюжет. Любую найденную улику можно превратить в квест-заметку за минуту: один JSON + одна команда
quest give. - Архив прочитанного. Если хочется, чтобы после прочтения запись ушла в «завершённые» — добавь одну пропускаемую задачу.
Шаг 1. Создаём заметку без задач¶
Положи файл в data/<namespace>/quests/strange_sign.json:
{
"version": 3,
"variant": 0,
"title": "Странный знак на скале",
"description": "На отвесной стене вырезан символ — четыре полумесяца, сходящиеся в центре. Кто-то ставит метки в этих горах. Возможно, я здесь не один.",
"tasks": {},
"stages": []
}
Это всё. Поля tasks и stages пустые — у квеста нет ни одной задачи и ни одного этапа.
Шаг 2. Выдаём игроку¶
Через команду:
Или, что удобнее для записок, — через свиток квеста. Игрок поднимает свиток (физически — это записка), ПКМ выдаёт ему квест и сразу открывает в книге.
Шаг 3. Что увидит игрок¶
- В книге квестов: квест появится в разделе «Активные» с указанным заголовком и описанием.
- В HUD: ничего. У квеста нет задач — закреплять нечего.
- В разделе «Завершённые»: ничего. Квест без обязательных задач никогда не завершается автоматически — нет ничего, по чему система могла бы вычислить итог.
Запись будет лежать в активных вечно, пока её не уберут вручную:
Проверка¶
После quest give у себя в книге (по клавише J):
1. Квест есть в разделе «Активные»? ✅
2. У него нет ни одной задачи внутри (детали пустые)? ✅
3. В HUD ничего не появилось? ✅
Если квест случайно попал в HUD — у тебя где-то осталась задача в tasks. Убери её или этап stages.
Вариант с архивом: прочитанная запись¶
Если хочешь, чтобы после взаимодействия запись уходила в «завершённые», добавь одну задачу без условия — её придётся закрывать вручную через команду или кнопку.
{
"version": 3,
"variant": 0,
"title": "Письмо отца",
"description": "Сложенный лист пергамента с восковой печатью. Слова дрожат перед глазами.",
"tasks": {
"read": {
"title": "Прочитать письмо",
"description": "Открыть глаза навстречу правде."
}
},
"stages": [["read"]]
}
Чтобы пометить запись прочитанной — вызови команду в командном блоке у таблички, в on.success advancement или из кнопки в книге:
Квест уйдёт в «завершённые» со статусом success — задача помечается как пропущенная (skipped), но сам квест всегда завершается успехом (или провалом), не пропуском. Через /quest test можно отдельно проверить статус задачи (skipped) или квеста (succeeded).
Расширения¶
Кнопка «Прочитано» прямо в книге¶
Чтобы игрок мог закрыть запись из квестовой книги без помощи командного блока — добавь задаче поле buttons:
В книге под задачей появится кнопка «Skip». Клик — задача завершается, квест уходит в архив.
Закрытие по событию мира¶
Если запись должна закрыться, только когда игрок дойдёт до места или поговорит с NPC — повесь условие predicate:
"read": {
"title": "Прочитать письмо",
"condition": {
"success": { "type": "predicate", "predicate": "story:read_letter" }
}
}
data/story/predicates/read_letter.json — проверка, что игрок находится в комнате с письмом (координаты в нужном диапазоне):
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"location": {
"position": {
"x": { "min": 120, "max": 124 },
"z": { "min": -8, "max": -4 }
}
}
}
}
Как только игрок зайдёт в зону (120..124, *, -8..-4) — условие сработает, задача завершится, квест уйдёт в архив сам.
Аналогично можно проверять предмет в инвентаре, биом, время суток — см. полный список условий в Minecraft Wiki: Predicate.
Серия записок в одну тему¶
Если по одной локации разбросана серия записок («Дневник старого траппера, часть 1», «…часть 2», «…часть 3») — заведи на каждую отдельный квест-заметку и свяжи их через Цепочка квестов. Каждая следующая часть появится в книге только после прочтения предыдущей.
Заметка, которая запоминает выбор¶
Записка может не просто «появиться», а зафиксировать факт прочтения как тег:
"read": {
"title": "Прочитать письмо",
"buttons": ["success"],
"on": {
"success": { "tags": ["story.read_fathers_letter"] }
}
}
После прочтения у игрока появится scoreboard-тег story.read_fathers_letter. Дальнейшие квесты могут проверить этот тег через require.tags и открыться только тем, кто читал письмо — см. Развилка и память выбора.
Какой вариант когда¶
| Запись… | Вариант |
|---|---|
| остаётся актуальной — это улика, цель, ориентир | Без задач (шаг 1) |
| должна «закрыться» сразу после прочтения и уйти в архив | С пропускаемой задачей + команда quest complete или кнопка |
| должна закрыться по событию мира — игрок дошёл, поговорил, нашёл | С пропускаемой задачей + условие predicate |
См. также¶
- Структура квеста — про квесты без этапов
- Предметы — Quest Scroll, самый удобный способ раздавать заметки
- Цепочка квестов — если заметок несколько и они идут серией
- Развилка и память выбора — если факт прочтения должен влиять на дальнейшее