MMOItems
Обзор
MMOItems соединяет плагин MMOItems с TypeWriter. Вы выбираете предмет по его типу MMOItems (например SWORD) и id, а TypeWriter может выдать его, забрать, посчитать или среагировать, когда игрок создаёт, использует, надевает предмет или вставляет в него самоцвет.
Расширение также включает Advanced Tooltip System (расширенную систему подсказок). Она на лету переписывает описание (lore) предметов MMOItems в виде пакетов, отправляемых игроку, поэтому один предмет может показывать несколько страниц, живую отметку «требования выполнены» и сравнение характеристик с другим предметом. Сохранённый предмет при этом никогда не меняется.
Всё настраивается в веб-панели: типы и id предметов подсказываются из вашей конфигурации MMOItems.
Возможности
- Выдача и удаление предметов — выдавайте или забирайте предметы MMOItems для одного игрока или целой группы, из списка или из факта.
- Подсчёт предметов — факт считает подходящие предметы в инвентаре (включая броню, вторую руку и курсор) и/или в основной руке.
- Событие и цель использования — реагируйте на правый клик или использование предмета MMOItems.
- Событие и цель создания — реагируйте на предметы, сделанные на станции крафта MMOItems, с необязательным фильтром станции.
- Событие и цель самоцвета — реагируйте на самоцвет, вставленный в предмет, с фильтром по целевому предмету и самоцвету.
- Цель экипировки — считайте предметы MMOItems, надетые в слот брони.
- Цель применения способности — считайте применения способности MMOItems.
- Цель владения предметами — выполняется, когда у игрока достаточно выбранных предметов, с модификаторами завершения.
- Переменная предмета — используйте предмет MMOItems везде, где ожидается предмет.
- Расширенные подсказки — многостраничное описание, отметки требований, сравнение характеристик и значки категорий.
Установка
- Установите MMOItems и его библиотеку MythicLib. Установите также MMOCore, если хотите, чтобы отметки требований системы подсказок проверяли класс, уровень и профессии.
- Установите официальное расширение TypeWriter Quest (оно нужно для целей).
- Получите расширение в магазинах (см. кнопки в сводной панели выше) и положите JAR-файл в
plugins/Typewriter/extensions/. - Перезапустите сервер. TypeWriter 0.9 опирается на PacketEvents, который система подсказок использует для переписывания описаний предметов.
Быстрый старт
Наградим игроков мечом, когда они создают зелье на алхимической станции:
- В веб-панели TypeWriter откройте страницу sequence и добавьте действие Give MMOItem.
- Оставьте
itemsпустым. Задайтеitemсtype(напримерSWORD) иid(напримерSTEEL_BLADE), аamountравным1. - Откройте страницу static и добавьте Craft Objective. Заполните
quest,display,amountи постоянный факт вfactдля хранения прогресса. - В
itemsдобавьте создаваемый предмет MMOItems (пусто означает любой предмет) и, при необходимости,stationIdsс id станции MMOItems. - Задайте
onCompleteравным действию Give MMOItem и опубликуйте.
Чтобы среагировать только один раз без отслеживания прогресса, используйте вместо этого Craft Event и свяжите действие Give в его triggers.
События и подсказки игнорируют игроков в творческом режиме. Проверяйте с игроком в режиме выживания или приключения.
Как это работает
Сопоставление предметов сравнивает тип и id MMOItems без учёта регистра. Пустые тип и id подходят под любой предмет MMOItems. Предметы, не являющиеся предметами MMOItems, никогда не подходят.
Цели, основанные на поле fact (создание, использование, экипировка, самоцвет, применение способности, открытие верстака), записывают прогресс в постоянный (кэшируемый) факт и один раз запускают onComplete, когда достигнуто amount.
Расширенные подсказки
Добавьте запись Advanced Tooltip System на страницу manifest и опубликуйте. Она применяется ко всем предметам MMOItems в инвентаре, хотбаре и контейнерах для всех игроков вне творческого режима.
Разбиение на страницы и расширенный лор применяются только в выживании и приключении. В творческом режиме показывается исходный лор MMOItems как есть, включая теги, потому что творческий клиент отправляет предметы обратно в том виде, в каком показывает их, и переписанный лор навсегда изменил бы настоящий предмет.
Если система отключена, overrideDefaultLore выключен или запись не опубликована, теги удаляются, а весь лор остаётся на одной странице.
Отредактируйте описание ваших предметов MMOItems (в редакторе предметов MMOItems или в его конфигурации) и добавьте эти теги:
| Тег | Эффект |
|---|---|
<page_break> | Начинает новую страницу. Пустые страницы отбрасываются. |
<category_image> | Заменяется значком, заданным в categoryImages для типа предмета. |
<pagination_indicator> | Заменяется значением paginationIndicator. |
<comparison_indicator> | Заменяется значением comparisonIndicator. |
<requirement_met> и <requirement_not_met> | Показывается только один из двух, с requirementMetSymbol или requirementNotMetSymbol. |
<comparison_value> и <comparison_sign> | Разница характеристик с базовым предметом сравнения и +, когда она положительна. |
Страницами и сравнением управляют клавиши, заданные в paginationKeybind (по умолчанию SWAP_OFFHAND, клавиша F) и comparisonKeybind (по умолчанию SNEAK). Допустимые значения: SWAP_OFFHAND, DROP, SNEAK, SHIFT_LEFT, SHIFT_RIGHT, LEFT_CLICK, RIGHT_CLICK и MIDDLE_CLICK.
- Нажатие клавиши листания на предмете MMOItems всегда отменяет ванильное действие (обмен, выброс, клик), чтобы избежать случайностей, даже для одностраничных предметов. Страницы переходят по кругу обратно на страницу 1, между нажатиями есть короткая задержка.
- Нажатие клавиши сравнения на предмете делает его базовым для сравнения. Повторное нажатие на том же предмете сбрасывает его. Сравниваются только предметы одного типа MMOItems, а база сбрасывается при закрытии инвентаря.
- Требования проверяются по данным MMOCore: уровень, класс, уровень профессии и право. Если любое требование не выполнено, показываются все
<requirement_not_met>.
Формат отображения целей
Строка цели в трекере квестов не зашита в код. Она читается из сниппетов TypeWriter, которые редактируются в plugins/Typewriter/snippets.yml. Плейсхолдеры: <display> (поле display цели), <current> и <required>; плейсхолдеры PlaceholderAPI тоже обрабатываются.
| Сниппет | Используется | По умолчанию |
|---|---|---|
advancedQuest.display | Цели Craft, Use, Equip, Gem Stone, Ability Cast и Open Crafting Table, пока они выполняются | <display> (<current>/<required>), в серых тонах |
advancedQuest.completed | Те же цели, когда amount достигнуто | ✔, затем зачёркнутый <display> и прогресс |
mmoitems.countObjective.display | Mmoitems Count Objective, пока она выполняется | <display> (<current>/<required>), в серых тонах |
mmoitems.countObjective.completed | Та же цель, когда amount достигнуто | Зелёный зачёркнутый <display>, затем прогресс |
Два ключа advancedQuest.* общие с другими расширениями целей BTC: одна правка меняет оформление всех.
Записи
Записей: 16, сгенерированы из исходного кода расширения.
Действия3
- Give Mmoitem ActionGive MMOItem
- Open Crafting Table ActionOpen Crafting Table
- Remove Mmoitem ActionRemove MMOItem
События3
- Mmoitems Gem Stone Apply EventMMOItems Gem Stone Apply Event
- Mmoitems Item Craft EventMMOItems Item Craft Event
- Use Mmoitem EventUse MMOItem Event
Цели7
- Mmoitems Ability Cast ObjectiveCast MMOItems abilities
- Mmoitems Count ObjectiveIdentify and count specific MMOItems from a fact
- Mmoitems Gem Stone Apply ObjectiveMMOItems Gem Stone Apply Objective
- Mmoitems Item Craft ObjectiveMMOItems Item Craft Objective
- Mmoitems Item Equip ObjectiveEquip MMOItems
- Open Crafting Table ObjectiveOpen Crafting Table Objective
- Use Mmoitem ObjectiveUse MMOItem Objective
Факты1
- Mmoitems Count FactCount MMOItems in player's inventory or hand
Переменные1
- Mmoitem VariableMMOItem Identifier
Манифесты1
- Advanced Tooltip ConfigAdvanced Tooltip System
Устранение неполадок
Список типов или id предметов в панели пуст. Списки берутся из конфигурации MMOItems работающего сервера. Убедитесь, что MMOItems загружен и содержит хотя бы один шаблон этого типа, затем заново откройте страницу в панели.
Give MMOItem ничего не делает. Действие выполняет mmoitems give <type> <id> <player> <amount> из консоли. Неизвестный type молча пропускает предмет, поэтому проверьте написание типа. Если задан fact, выдаются только предметы, предоставленные этим фактом (и подходящие под item / items, если они заполнены), с amount действия.
Remove MMOItem ничего не забирает. По умолчанию сканируется только инвентарь (checkInventory включён, checkHand выключен). Сканирование инвентаря включает броню, вторую руку и курсор. Включите checkHand, чтобы сначала забирать из основной руки.
Цель создания никогда не продвигается. По умолчанию считаются только мгновенные рецепты и очередь крафта. detectUpgradeRecipe существует, но результаты улучшения текущим кодом не считаются. Также проверьте id станции (stationIds, объединённый с устаревшим stationId) и что в fact связан постоянный факт.
События и цели не срабатывают в творческом режиме. События использования, создания и самоцвета завершаются досрочно для игроков в творческом режиме, а система подсказок для них отключена. Проверяйте в режиме выживания.
Теги подсказки видны как текст, или страницы не переключаются. Сначала проверьте, что игрок не в творческом режиме, где лор остаётся как есть. Страницы переключаются только при опубликованной записи Advanced Tooltip System с включёнными isEnabled и overrideDefaultLore; иначе теги удаляются, а лор остаётся на одной странице. Если клавиша F по умолчанию конфликтует с другим плагином, выберите другую клавишу в paginationKeybind.
Отметки требований всегда показывают «выполнено». Проверка читает данные игрока MMOCore. Без MMOCore (или для игрока без профиля) проверка по умолчанию считает требование выполненным.
Связанные расширения
- MMOCore — классы, профессии и навыки того же RPG-набора Phoenix Development.
- MMO Inventory — интеграция с MMOInventory, может использоваться как факт-поставщик предметов для действий Give и Remove.