Quest Codex
Расширение Quest Codex предоставляет полностью настраиваемую систему GUI, позволяющую игрокам просматривать, отслеживать и управлять квестами, организованными по иерархическим категориям. Каждое меню строится через декларативные пулы раскладки на базе расширения GUI — никаких жёстко закодированных меню, бесконечная настройка.
- Исходный код — Посмотреть исходники на GitHub.
- Скачать релизы — Получить свежие JAR-файлы.
Возможности
- Иерархические категории — Вкладывайте категории через отношения родитель/потомок. Подкатегории наследуют видимость родителя.
- Пулы раскладки — Проектируйте каждое меню через декларативные пулы раскладки. Плейсхолдеры (
SORT_SLOT,CATEGORY_SLOT,QUEST_SLOT) внедряются автоматически. - Прокручиваемые списки квестов — Слоты квестов и категорий следуют вьюпортам
scrollable,paginatedиframe— стройте прокручиваемые сетки квестов любого размера (начиная с 0.3.0). - Динамическая сортировка — Переключайте Все → Не начатые → Активные → Завершённые, с отображением кнопки для каждого режима (метка, описание, пользовательский предмет).
- Отслеживание квестов — Отслеживайте активные квесты с индикаторами приоритета через нативную систему отслеживания QuestExtension.
- Полный звуковой дизайн — Настраивайте звуки для открытия меню, кликов, прокрутки и событий отслеживания/снятия отслеживания квеста.
- Интеграция с BlueMap — Отображайте значки квестов на BlueMap с динамическими метками и правилами видимости (версия BTC).
- Пулы раскладки — Проектируйте каждое меню через декларативные пулы раскладки. Плейсхолдеры (
Архитектура
Библиотека записей
Конфигурация
- Quest Codex Config — Глобальные звуки, число строк по умолчанию и шаблоны сообщений.
Система категорий
- Quest Category — Задаёт категорию с заголовком, значком, родителем и критериями видимости.
- Quest Assignment — Привязывает записи квестов к категории, с порядком и переопределениями по статусу.
Меню и отображение
- Category Menu — Проектируйте меню с декларативными пулами раскладки, слотами-плейсхолдерами и кнопками сортировки по режимам.
- Quest Lore — Переопределяйте строки описания по квесту и по статусу.
Быстрый старт
-
1. Добавьте глобальную конфигурацию (опционально) — Создайте запись Quest Codex Config в JSON страницы, чтобы настроить звуки и сообщения. Расширение работает «из коробки» и без этого — оно использует разумные значения по умолчанию.
json { "type": "quest_codex", "id": "my_codex_config", "defaultRows": 5, "nowTrackingMessage": "<green>Now tracking: {quest}</green>" }Разместите её на любой скомпилированной странице вplugins/Typewriter/pages/. → Quest Codex Config -
2. Определите категории — Добавьте запись Quest Category. Она задаёт логическую группу квестов в кодексе с отображаемым заголовком, значком и необязательным родителем для вложенности. Ключевые поля: -
category— Уникальное внутреннее имя (напр.,main_quests) -title— Отображаемый заголовок для игроков (MiniMessage) -icon— Предмет, показываемый в списке родителя/категории -parent— Оставьте пустым для верхнего уровня или задайте для вложенности → Quest Category -
3. Назначьте квесты — Добавьте запись Quest Assignment, чтобы привязать ваши квесты QuestExtension к категории. Управляйте порядком и переопределениями по статусу.
json { "type": "quest_assignment", "id": "assign_main", "category": "main_quests", "questRefs": ["quest:quest_main_1", "quest:quest_main_2"], "orders": [0, 1] }→ Quest Assignment -
4. Спроектируйте меню — Добавьте запись Category Menu для каждой категории, которой нужен собственный GUI. Используйте пул раскладки, чтобы разместить: -
CATEGORY_SLOT— Автоматически внедряемые значки категорий (главное меню) -QUEST_SLOT— Автоматически внедряемые кнопки квестов (меню категории) -SORT_SLOT— Автоматически внедряемая динамическая кнопка сортировки - Стандартные предметы GUI — Декоративные предметы, заполнители, статические кнопки Пул раскладки использует guiType CUSTOM. Всё позиционно: размещайте предметы по координатам (x, y). → Category Menu -
5. Откройте меню — Доступ к кодексу через команду:
/tw codex → главное меню кодекса (начиная с 0.3.0) /tw codex <category> → конкретная категорияПримеры: -/tw codex main_quests— Открывает категорию основных квестов -/tw codex daily_tasks— Открывает ежедневные задания > Главное меню: либо создайте записьcategory_menuс пустымcategoryи маркерамиCATEGORY_SLOT, либо постройте хаб как менюopen_guiрасширения GUI, кнопки которого запускаютcodex:open <category>, и укажите его вmainMenuTriggerконфигурации — тогда/tw codexи кнопкаBACKкодекса будут открывать его.
Команды
| Команда | Permission | Описание |
|---|---|---|
/tw codex | typewriter.codex.open | Открыть главное меню кодекса (category_menu с пустой категорией или mainMenuTrigger из конфигурации). |
/tw codex <category> | typewriter.codex.open | Открыть конкретную категорию квестов напрямую. Доступно автодополнение. |
Плейсхолдеры
Префикс: %typewriter_*%
Глобальные плейсхолдеры
| Плейсхолдер | Возвращает | Пример |
|---|---|---|
%typewriter_total_quests% | Общее число квестов по всем категориям | 42 |
%typewriter_total_completed% | Всего завершённых квестов | 15 |
%typewriter_total_in_progress% | Всего квестов в процессе | 5 |
%typewriter_total_not_started% | Всего не начатых квестов | 22 |
%typewriter_total_progress% | Завершённые/Всего в формате | 15/42 |
Плейсхолдеры по категории
Замените <name> на идентификатор категории (напр., main_quests).
| Плейсхолдер | Возвращает | Пример |
|---|---|---|
%typewriter_category_<name>% | Всего квестов в категории | 10 |
%typewriter_category_<name>_completed% | Завершённые в категории | 3 |
%typewriter_category_<name>_in_progress% | В процессе в категории | 2 |
%typewriter_category_<name>_not_started% | Не начатые в категории | 5 |
%typewriter_category_<name>_progress% | Прогресс в формате | 3/10 |
Псевдонимы:
_inprogress%и_notstarted%тоже работают.
Шаблонные переменные (в полях @Placeholder)
| Переменная | Контекст | Заменяется на |
|---|---|---|
{quest} | Шаблоны сообщений | Отображаемое название квеста |
{completed} | Сообщения о прогрессе | Число завершённых квестов |
{total} | Сообщения о прогрессе | Всего квестов в категории |
Права
| Permission | Описание |
|---|---|
typewriter.codex.open | Открыть кодекс квестов. |
Зависимости
| Extension | Обязательно | Назначение |
|---|---|---|
| QuestExtension | Обязательно | Основной движок квестов. |
| GUI Extension | Обязательно | Отрисовка меню и система пулов раскладки. |
| PlaceholderAPI | Опционально | Для полей @Placeholder. |