NPC Quests

NPC Quests

Create deep NPC-driven quests with branching stories and rewards. NPC Quests is an addon for NPC Dialog that adds a full quest system with prerequisites, item requirements, custom plugin checks, rewards, interaction tracking, and complex quest chains.

3.0 тысяч загрузок
Обновлён 9 дней назад

Скриншоты

Описание

 

ВАЖНО: Это дополнительный плагин для NPC Плагин Dialog. NPC Диалог должен быть установлен и работать перед установкой NPC Quests.

Сервер поддержки - https://discord.gg/DRxwt8Qg2W

 

NPC Quests - это дополнительный плагин для плагина NPC Dialog. Это дополнение расширяет NPC Dialog с полной функциональностью квеста и требований. NPC Диалог должен быть установлен первым, так как NPC Quests зависит от него. Это дополнение позволяет администраторам серверов создавать сложные интерактивные системы квестов с NPC, не требуя никаких знаний кодирования.

Аддон работает бесшовно с основным плагином NPC Dialog, автоматически обнаруживая, когда он установлен, и включая функции квеста во всей диалоговой системе. Когда аддон установлен, каждая кнопка на каждой диалоговой странице получает возможность настраивать требования и вознаграждения.

Ключевые функции включают в себя несколько типов требований, таких как требования к элементам, где игроки должны иметь определенные элементы в своем инвентаре, предпосылки NPC, где игроки должны сначала взаимодействовать с другими NPC, и пользовательские требования, которые интегрируются с другими плагинами через API. Система вознаграждения одинаково гибкая, поддерживает награды за элементы, награды за пользовательский плагин и выполнение команд консоли.

Плагин отслеживает все взаимодействия игроков с NPC, обеспечивая последовательное продвижение квеста. Игроки не могут получить доступ к NPC или кнопкам, если они не выполнили необходимые условия. Это позволяет создавать разветвленные сюжетные линии и сложные цепочки квестов, где важен порядок взаимодействия NPC.

Одной из мощных функций является система «Последняя кнопка», которая позволяет помечать любую кнопку в качестве конечного взаимодействия. Когда игрок нажимает последнюю кнопку, диалог закрывается, и он больше не может взаимодействовать с этим NPC. Это идеально подходит для завершения сюжетных линий или блокировки контента после завершения. Когда игрок пытается взаимодействовать с NPC после нажатия последней кнопки, он видит завершенную страницу с настраиваемыми сообщениями.

Аддон включает в себя полный пользовательский интерфейс администратора, доступный через команду /npcquest. Этот интерфейс обеспечивает легкую настройку всех параметров, связанных с квестами, без необходимости редактирования файлов JSON вручную. Администраторы могут выбирать NPC, диалоговые страницы и отдельные кнопки для настройки своих требований и вознаграждений.

Руководство по координации:

Показатель:

Предупреждение: NPC Диалоговый плагин должен быть установлен и работать до установки NPC Quests.

1. Установите и настройте плагин NPC Dialog
2. Поместите файл NPC Quests JAR в папку модов вашего сервера
3. Перезагрузить сервер
4. Аддон будет автоматически обнаруживать и интегрироваться с NPC Dialog.

Получение ADMIN UI:

Используйте команду /npcquest или /npcquests, чтобы открыть интерфейс конфигурации квеста. Вы должны иметь npcquests. Административное разрешение на использование этой команды.

Базовый текст:

1. Выберите NPC из выпадающего списка в верхней части
2. Выберите страницу диалога для этого NPC
3. Выберите, какую кнопку вы хотите настроить (Next, Previous, Close, Custom Button 1, или Custom Button 2).
4. Настройка требований и вознаграждений по мере необходимости
5. щелкнуть Сохранить свои изменения

Типы требований:

Требования к пункту:
Требования к предметам проверяют, есть ли у игрока конкретные предметы в инвентаре, прежде чем позволить ему нажать кнопку. Вы можете добавить несколько требований к одной кнопке.

Для добавления требования к пункту:
Введите идентификатор элемента в поле идентификатора элемента (например: Plant_Fruit_Apple)
- Введите количество, необходимое в количественном поле
Проверьте чекбокс потребления, если вы хотите, чтобы предметы были удалены при выполнении требования.
- Нажмите Add Item Requirement

Для устранения требования к предмету:
Найти требование в списке
Нажмите кнопку Remove рядом с ней

Идентификаторы предметов должны точно соответствовать системе элементов Hytale. Обычные идентификаторы включают Plant_Fruit_Apple, Ore_Iron, Weapon_Sword_Wooden и т.д.

NPC Предварительные условия:
Предпосылки NPC требуют от игроков взаимодействия с другими NPC, прежде чем они смогут получить доступ к определенным кнопкам или NPC. Это создает цепочки квестов, где игроки должны разговаривать с NPC в определенном порядке.

Чтобы добавить условие NPC:
Перейдите в файл npcs.json, найдите NPC и скопируйте идентификатор NPC.
Добавить NPC Prerequisite

Для устранения предпосылки NPC:
Найти предпосылку в списке
Нажмите кнопку Remove рядом с ней

Предпосылки NPC проверяются при:
Игрок пытается взаимодействовать с NPC (проверяет требования к кнопке страницы)
- Игрок нажимает кнопку, настроенную с предпосылками NPC

Если предпосылки не выполнены, игрок видит настраиваемое сообщение о сбое и не может продолжить.

Пользовательские требования:
Пользовательские требования интегрируются с другими плагинами через API RequirementChecker. Это позволяет NPC Dialog проверять условия из других плагинов, таких как экономические системы, системы уровней или пользовательские трекеры квестов.

Чтобы добавить таможенное требование:
Введите идентификатор требования (это зарегистрировано другим плагином через API)
- Введите требуемую сумму (используйте 0 для булевых проверок)
- Нажмите Добавить пользовательские требования

Для устранения таможенного требования:
Найти требование в списке
Нажмите кнопку Remove рядом с ней

Идентификатор требований должен быть зарегистрирован другим плагином с использованием API NPC Dialog. Свяжитесь с разработчиком другого плагина, чтобы узнать, какие идентификаторы требований доступны.

РЕЗУЛЬТАТЫ:

Пункт Вознаграждение:
Награды за предметы дают игрокам предметы, когда они нажимают кнопку, на которой настроены награды. Вы можете добавить несколько вознаграждений в одну кнопку.

Чтобы добавить вознаграждение за товар:
- Введите идентификатор элемента в поле идентификатора элемента
Введите количество, чтобы дать в количественном поле
Нажмите Add Item Reward

Чтобы удалить элемент вознаграждения:
Найдите награду в списке
Нажмите кнопку Remove рядом с ней

Предметы отдаются инвентарю игрока. Если инвентарь заполнен, предметы могут быть потеряны или утеряны в зависимости от настроек сервера.

Custom Rewards:
Пользовательские награды интегрируются с другими плагинами через API RewardProvider. Это позволяет NPC Dialog предоставлять вознаграждения от других плагинов, таких как экономические системы, системы опыта или пользовательские трекеры вознаграждений.

Чтобы добавить награду:
Введите идентификатор вознаграждения (это зарегистрировано другим плагином через API)
Введите сумму, чтобы дать
Добавить Custom Reward

Чтобы удалить заказное вознаграждение:
Найдите награду в списке
Нажмите кнопку Remove рядом с ней

Идентификатор вознаграждения должен быть зарегистрирован другим плагином с использованием API NPC Dialog. Свяжитесь с разработчиком другого плагина, чтобы узнать, какие идентификаторы вознаграждения доступны.

Консольные команды:
Консольные команды выполняют команды сервера, когда нажимается кнопка с наградами. Команды выполняются как консоль, то есть они имеют полные разрешения и могут использовать команды администратора.

Чтобы добавить команду консоли:
Введите полную команду в поле Command (например: give @p Plant_Fruit_Apple --quantity=5)
Добавить команду Console

Чтобы удалить команду консоли:
Найти команду в списке
Нажмите кнопку Remove рядом с ней

Команды поддерживают заполнители, такие как @p для игрока, который запустил кнопку. Все команды выполняются с разрешения консоли.

РЕКОМЕНДУЮЩАЯ ПАГИЧЕСКАЯ КОНФИГРАЦИЯ:

Страница требований - это специальная диалоговая страница, которая отображается, когда игрок впервые взаимодействует с NPC, но не отвечает требованиям для доступа к основному диалогу. Вы можете настроить эту страницу, выбрав «Требуемая страница» из выпадающего списка страницы.

NPC Обязательное сообщение об отказе:
Это сообщение показывается игрокам, когда они не разговаривали с обязательными NPC. Вы можете использовать заполнитель {PREREQNPC} для предварительного имени NPC и заполнитель {NPC} для текущего имени NPC.

Требования Not Met Title:
Этот заголовок отображается в строке заголовка диалога, когда требования не выполняются. Оставьте пустой, чтобы использовать заголовок страницы.

Близкая кнопка Текст:
Текст отображается на кнопке закрытия, когда требования не выполняются. Оставьте пустой, чтобы использовать текст по умолчанию.

Последний БУТТОН:

Функция «Последняя кнопка» позволяет пометить любую кнопку как окончательное взаимодействие с NPC. Когда игрок нажимает последнюю кнопку:

1. Диалог закрывается немедленно
2. Взаимодействие отмечено как завершенное
3. Игрок больше не может взаимодействовать с этим NPC.

Если игрок попытается взаимодействовать с NPC после нажатия последней кнопки, он увидит завершенную страницу вместо обычного диалога.

Чтобы включить последнюю кнопку:
1. Выберите NPC, страницу и кнопку, которую вы хотите сделать последней.
2. Проверьте флажок «Mark as Last Button»
3. Настройка настроек готовой страницы (см. ниже)
4.Нажмите Сохранить

Окончательная сортировка страницы:

Завершенная страница отображается, когда игрок пытается взаимодействовать с NPC после нажатия последней кнопки. Настройте эту страницу в пользовательском интерфейсе администратора, когда включен флажок последней кнопки.

Завершенное название страницы:
Заголовок, показанный в диалоговой строке заголовка при отображении готовой страницы.

Завершенное сообщение страницы:
Главное сообщение, показанное игроку, объясняющее, что они уже завершили это взаимодействие.

Оригинальное название Close Button Text:
Текст отображается на кнопке закрытия готовой страницы.

СТОРОГА данных:

Все данные конфигурации квеста хранятся в файлах JSON в Hyronix_. Папка NPC Quests в каталоге данных вашего сервера. Файл interactionHistory.json отслеживает, с какими игроками взаимодействовали NPC, в том числе какие взаимодействия помечены как завершенные.

Структура папки данных:
Hyronix_NPC Квесты/
- npcs/ (индивидуальные файлы NPC JSON)
- interactionHistory.json (отслеживание взаимодействия игроков)

Интерактивная торговля:

Плагин автоматически отслеживает все взаимодействия игроков с NPC. Это отслеживание используется для:
Проверьте предварительные условия NPC
Предотвращение повторных взаимодействий при включении последней кнопки
Поддерживать состояние прогресса квеста

История взаимодействия хранится на одного игрока и сохраняется при перезапуске сервера. Чтобы сбросить историю взаимодействия игрока, вы можете вручную редактировать или удалять их запись в истории взаимодействия. Джейсон.

БУТТОННАЯ КОНФИГРАЦИЯ:

Вы можете настроить требования и вознаграждения для следующих кнопок:
- Следующая кнопка: Кнопка, которая переходит на следующую страницу диалога
- Предыдущая кнопка: Кнопка, которая возвращается к предыдущей странице диалога
- Кнопка закрытия: Кнопка, которая закрывает диалог
Пользовательская кнопка 1: Первая настраиваемая кнопка (если она включена на странице диалога)
Пользовательская кнопка 2: Вторая настраиваемая кнопка (если включена на странице диалога)

Каждая кнопка может иметь:
- Требования к нескольким пунктам
Несколько предпосылок NPC
- Множественные индивидуальные требования
- Многократное вознаграждение
- Множественные заказные награды
- Несколько команд консоли
Статус последней кнопки

BUTTON WORKFLOW:

Когда игрок нажимает кнопку, происходит следующее:

1. Требования проверяются:
- Требования к пункту: Проверка, требуется ли игроку
- Предпосылки NPC: Проверьте, разговаривал ли игрок с требуемыми NPC
- Пользовательские требования: Проверки с зарегистрированными контрольными требованиями

2. Если какое-либо требование не выполняется:
Сообщение о сбое показывается игроку
- Вознаграждение не выплачивается
- Действие кнопки не продолжается

3. Если все требования проходят:
Потребляемые предметы потребляются (если потребление разрешено)
- Вознаграждаются:
- Награды за товары добавляются в инвентарь
Пользовательские вознаграждения обрабатываются зарегистрированными поставщиками вознаграждений.
Консольные команды выполняются

4. Если включена последняя кнопка:
Диалог закрывается
Взаимодействие отмечено как завершенное
Игрок не может снова взаимодействовать с этим NPC

5. Если последняя кнопка не включена:
Нормальное действие кнопки продолжается (изменение страницы, закрытие диалога и т. Д.)

 

КВЕСТНАЯ СИСТЕМА USAGE GUIDE

В этом руководстве объясняется, как использовать систему квестов с помощью NPC Dialog, в частности, идентификаторы вознаграждений и требований.

-
Оригинальное название: How to Make a Quest
-
Выполните эти 3 простых шага, чтобы сделать основной квест (называемый квест_a):

1. Начать буттон (Пусть принимают)
- Reward ID:quest:start:quest_a
- Идентификатор требований:quest:status:quest_a:AVAILABLE
Результат: Кнопка показывает, только если у них ее нет. Нажав на него, начинается квест.

2. Финиш Баттон (Пусть завершают)
- Reward ID:quest:complete:quest_a
- Идентификатор требований:quest:active:quest_a
Результат: Кнопка показывает только тогда, когда у них есть квест. Щелчок его завершает его.

3. Следующий бутон (Пусть идут дальше)
- Идентификатор требований:quest:completed:quest_a
Результат: игрок не может нажать «Далее», пока не закончит квест.

-
Идентификаторы переоформления (Action to take)
-
1.quest:start:<quest_id>
- Описание: Запускает указанный квест (устанавливает статус на ACTIVE).
- Примечания: Ничего не делает, если квест уже активен или завершен.

2.quest:complete:<quest_id>
- Описание: Завершает указанный квест (устанавливает статус COMPLETED).

3.quest:set_status:<quest_id>:<status>
- Статусы: Закрыт, доступен, активен, укомплектован.

-
Требование Идентификаторы (Check quest status)
-
1.quest:active:<quest_id>
- Условие: Игрок должен иметь квест в статусе ACTIVE.

2.quest:completed:<quest_id>
- Условие: Игрок должен иметь квест в статусе COMPLETED.

3.quest:status:<quest_id>:<status>
- Условие: Игрок должен обладать определенным статусом.

-
Пример: 4-BUTTON SETUP (жизненный цикл "quest_a")
-

Эта настройка позволяет NPC обрабатывать весь поток квеста с помощью 4 кнопок.

1. КУСТОМ БУТТОН 1: "Принять квест"
- Требования:quest:status:quest_a:AVAILABLE
- Награда: квест: Начало:квест_a
- Логика: Сначала видна только кнопка. Нажатие на него запускает квест и заставляет эту кнопку исчезнуть.

2.КУСТОМ БУТТОН 2: "Полный поиск"
- Требование:quest:active:quest_a
- Награда: квест:полный:квест_a
- Логика: Он появляется только тогда, когда у вас есть квест. На клике, он заканчивает его. (Здесь вы также можете добавить дополнительные требования!)

3. Next Button (Навигация по умолчанию)
- Требование: Quest: Completed:quest_a
- Логика: Эта кнопка «выключена» или скрыта, пока вы не закончите квест. Перейти на следующую страницу диалога можно только после завершения.

4. CLOSE BUTTON (навигация по умолчанию)
- Требования: (нет)
- Логика: Всегда доступен, чтобы игрок мог оставить разговор.

-
СОВЕТ
-
- Множественные требования: Вы можете комбинировать требования к поиску с предметами (например, нужно иметь 5 яблок и квест должен быть активным).
- Выступление: Квесты обрабатываются локально на объекте игрока.

 

 

Пермиссионы:

Единственное необходимое разрешение — npcquests. Админ для доступа к команде /npcquest. Вся логика и требования квеста работают автоматически для всех игроков после настройки.

Советы и лучшие практики:

1. Планируйте свои цепочки квестов, прежде чем создавать их. Определите, с какими NPC нужно поговорить в каком порядке.

2. Используйте значимые имена NPC и диалоговый контент, чтобы естественным образом направлять игроков по цепочкам квестов.

3. Тщательно проверьте свои цепочки квестов. Убедитесь, что предпосылки работают правильно, а награды даются правильно.

4. Используйте функцию последней кнопки экономно. Только помечайте кнопки как «Последние кнопки», когда вы действительно хотите предотвратить дальнейшее взаимодействие.

5. Держите ваши идентификаторы требований и идентификаторы вознаграждения задокументированными, если вы интегрируетесь с пользовательскими плагинами. Это облегчает конфигурацию.

6. Используйте команды консоли для сложных сценариев вознаграждения, с которыми элемент или пользовательские вознаграждения не могут справиться.

7. Всегда сохраняйте изменения после настройки требований или вознаграждений. Несохраненные изменения будут потеряны.

8. Пользовательский интерфейс администратора показывает все настроенные требования и вознаграждения. Используйте это для проверки вашей конфигурации перед тестированием в игре.

Беспокойство:

Вопрос: Требования не проверяются
Решение: Убедитесь, что вы выбрали правильный NPC, страницу и кнопку, прежде чем добавлять требования. Убедитесь, что вы нажали Save после внесения изменений.

Вопрос: Вознаграждения не выплачиваются
Решение: проверить, выполняются ли требования. Вознаграждение запускается только тогда, когда все требования проходят. Проверьте, что идентификаторы элементов верны, и зарегистрированы пользовательские идентификаторы вознаграждения.

Вопрос: Предпосылки NPC не работают
Решение: Убедитесь, что предпосылка NPC настроена в NPC Dialog. Предпосылка NPC должна существовать и быть доступной. Проверка истории взаимодействия отслеживается правильно.

Вопрос: Последняя кнопка не препятствует взаимодействию
Решение: Убедитесь, что вы сохранили конфигурацию последней кнопки. Убедитесь, что файл interactionHistory.json написан правильно.

Проблема: Невозможность доступа к admin UI
Решение: Убедитесь, что у вас есть npcquests. Разрешение администратора. Убедитесь, что плагин NPC Dialog установлен и работает. Убедитесь, что NPC Quests загружается без ошибок.

Проблема: Пользовательские требования или вознаграждения не работают
Решение: Убедитесь, что другой плагин зарегистрировал свой RequirementChecker или RewardProvider с помощью NPC Dialog. Проверьте, что идентификаторы требований и идентификаторы вознаграждения точно совпадают между плагинами.

Расширенные объекты:

Добавление NPC Quests включает поддержку API-интерфейсов RequirementChecker и RewardProvider. Другие плагины могут регистрировать пользовательские проверки требований и поставщиков вознаграждений, что позволяет обеспечить глубокую интеграцию между NPC Dialog и другими серверными системами.

ДОКУМЕНТАЦИЯ NPC DIALOG API для разработчиков:

Начинается:

Получите экземпляр плагина:
плагин NPCDialogPlugin = NPCDialogPlugin.getInstance();
если (plugin == null)
Возвращение // NPC Диалог не установлен
?

РЕКОМЕНДУЮЩИЙ CHECKER API:

Регистрируйте пользовательские требования, которым должны соответствовать игроки, чтобы продолжить диалоги NPC.

Интерфейс: com.hytale.npcdialog.api.RequirementChecker

Методы:
Boolean CheckRequirement (Игрок, Требование к струне) Ид
Возвращается, если игрок соответствует требованиям.

Струна получает ErrorMessage (строчное требование) Ид
Необязательно. Возвращает пользовательское сообщение об ошибке или нуль по умолчанию.

Регистрация:
plugin.registerRequirementChecker("economy.money", new RequirementChecker()) {
@Override
Public Boolean CheckRequirement (Игрок, Струнное требование) Id) {
// Проверьте, достаточно ли у игрока денег.
возвратить достаточно денег (игрок);
?
    
@Override
Публичное струнное сообщение (String Requirement) Id) {
возвращение «У вас недостаточно денег»;
?
}

Провайдер API:

Зарегистрируйте пользовательские награды, которые могут быть предоставлены игрокам через взаимодействие NPC.

Интерфейс: com.hytale.npcdialog.api.RewardProvider

Методы:
Boolean GiveReward (Игрок, Стринг) Ид, двойная сумма
Возвращается, если вознаграждение было успешно получено.

Струнная награда (String reward) Ид, двойная сумма
Возвращает сообщение, чтобы показать, когда награда дается.

Регистрация:
plugin.registerRewardProvider("эконом.деньги", новый RewardProvider()) {
@Override
public boolean giveReward (Игрок, Стринг вознаграждение, двойная сумма)
// Дайте деньги игроку
возвратить дополнительные деньги (игрок, сумма);
?
    
@Override
String getRewardMessage (Стринговое вознаграждение) Id, двойная сумма {
возвращение "Вы получили "+сумма +" монеты!"
?
}

USAGE:

После регистрации администраторы могут использовать ваши идентификаторы требований и идентификаторы вознаграждения в пользовательском интерфейсе администратора NPC Quests. Используйте описательные идентификаторы, такие как «yourplugin.feature.requirement».

Убрать:

Незарегистрируйтесь во время отключения плагина:
plugin.unregisterRequirementChecker («эконом.деньги»)
plugin.unregisterRewardProvider («эконом.деньги»)

 

Уведомление о распространении:
Этот мод не может быть перераспределен или объединен со сторонними настройками без Ясный и видимый кредит Hyronix Studios и название мода. В противном случае перераспределение не допускается.

Показать оригинальное описание (English)

 

IMPORTANT: This is an addon plugin for the NPC Dialog plugin. NPC Dialog must be installed and working before installing NPC Quests. 

Support Server - https://discord.gg/DRxwt8Qg2W

 

NPC Quests is an addon plugin for the NPC Dialog plugin. This addon extends NPC Dialog with comprehensive quest and requirement functionality. NPC Dialog must be installed first, as NPC Quests depends on it to function. This addon enables server administrators to create complex, interactive quest systems with NPCs without requiring any coding knowledge.

The addon works seamlessly with the main NPC Dialog plugin, automatically detecting when it is installed and enabling quest features throughout the dialog system. When the addon is installed, every button on every dialog page gains the ability to have requirements and rewards configured.

Key features include multiple types of requirements such as item requirements where players must have specific items in their inventory, NPC prerequisites where players must interact with other NPCs first, and custom requirements that integrate with other plugins through an API. The reward system is equally flexible, supporting item rewards, custom plugin rewards, and console command execution.

The plugin tracks all player interactions with NPCs, allowing for sequential quest progression. Players cannot access NPCs or buttons if they haven't completed required prerequisites. This enables the creation of branching storylines and complex quest chains where the order of NPC interactions matters.

One powerful feature is the Last Button system, which allows any button to be marked as the final interaction. When a player clicks a Last Button, the dialog closes and they can no longer interact with that NPC. This is perfect for completing storylines or locking content after completion. When a player attempts to interact with an NPC after a Last Button has been clicked, they see a Finished Page with customizable messages.

The addon includes a comprehensive admin UI accessible via the /npcquest command. This interface provides easy configuration of all quest-related settings without needing to edit JSON files manually. Administrators can select NPCs, dialog pages, and individual buttons to configure their requirements and rewards.

CONFIGURATION GUIDE:

INSTALLATION:

PREREQUISITE: NPC Dialog plugin must be installed and working before installing NPC Quests.

1. Install and configure the NPC Dialog plugin first
2. Place NPC Quests JAR file in your server's mods folder
3. Restart the server
4. The addon will automatically detect and integrate with NPC Dialog

ACCESSING THE ADMIN UI:

Use the command /npcquest or /npcquests to open the quest configuration interface. You must have the npcquests.admin permission to use this command.

BASIC SETUP:

1. Select an NPC from the dropdown at the top
2. Select a dialog page for that NPC
3. Select which button you want to configure (Next, Previous, Close, Custom Button 1, or Custom Button 2)
4. Configure requirements and rewards as needed
5. Click Save to save your changes

REQUIREMENT TYPES:

Item Requirements:
Item requirements check if the player has specific items in their inventory before allowing them to click a button. You can add multiple item requirements to a single button.

To add an item requirement:
- Enter the Item ID in the Item ID field (for example: Plant_Fruit_Apple)
- Enter the quantity required in the Quantity field
- Check the Consume checkbox if you want items to be removed when the requirement is met
- Click Add Item Requirement

To remove an item requirement:
- Find the requirement in the list
- Click the Remove button next to it

Item IDs must match exactly with Hytale's item system. Common item IDs include Plant_Fruit_Apple, Ore_Iron, Weapon_Sword_Wooden, etc.

NPC Prerequisites:
NPC prerequisites require players to interact with other NPCs before they can access certain buttons or NPCs. This creates quest chains where players must talk to NPCs in a specific order.

To add an NPC prerequisite:
- Navigate to npcs.json file, search for the NPC and copy the NPC ID.
- Click Add NPC Prerequisite

To remove an NPC prerequisite:
- Find the prerequisite in the list
- Click the Remove button next to it

NPC prerequisites are checked when:
- A player tries to interact with an NPC (checks requirement page button prerequisites)
- A player clicks a button that has NPC prerequisites configured

If prerequisites are not met, the player sees a customizable failure message and cannot proceed.

Custom Requirements:
Custom requirements integrate with other plugins through the RequirementChecker API. This allows NPC Dialog to check conditions from other plugins like economy systems, level systems, or custom quest trackers.

To add a custom requirement:
- Enter the Requirement ID (this is registered by another plugin via the API)
- Enter the Amount required (use 0 for boolean checks)
- Click Add Custom Requirement

To remove a custom requirement:
- Find the requirement in the list
- Click the Remove button next to it

The Requirement ID must be registered by another plugin using the NPC Dialog API. Contact the developer of the other plugin to find out what requirement IDs are available.

REWARD TYPES:

Item Rewards:
Item rewards give players items when they click a button that has rewards configured. You can add multiple item rewards to a single button.

To add an item reward:
- Enter the Item ID in the Item ID field
- Enter the quantity to give in the Quantity field
- Click Add Item Reward

To remove an item reward:
- Find the reward in the list
- Click the Remove button next to it

Items are given to the player's inventory. If the inventory is full, items may be dropped or lost depending on server settings.

Custom Rewards:
Custom rewards integrate with other plugins through the RewardProvider API. This allows NPC Dialog to grant rewards from other plugins like economy systems, experience systems, or custom reward trackers.

To add a custom reward:
- Enter the Reward ID (this is registered by another plugin via the API)
- Enter the Amount to give
- Click Add Custom Reward

To remove a custom reward:
- Find the reward in the list
- Click the Remove button next to it

The Reward ID must be registered by another plugin using the NPC Dialog API. Contact the developer of the other plugin to find out what reward IDs are available.

Console Commands:
Console commands execute server commands when a button with rewards is clicked. Commands execute as console, meaning they have full permissions and can use admin commands.

To add a console command:
- Enter the full command in the Command field (for example: give @p Plant_Fruit_Apple --quantity=5)
- Click Add Console Command

To remove a console command:
- Find the command in the list
- Click the Remove button next to it

Commands support placeholders like @p for the player who triggered the button. All commands execute with console permissions.

REQUIREMENT PAGE CONFIGURATION:

The Requirement Page is a special dialog page that is shown when a player first interacts with an NPC but hasn't met the prerequisites to access the main dialog. You can configure this page by selecting "Requirement page" from the Page dropdown.

NPC Prerequisite Failure Message:
This message is shown to players when they haven't talked to required prerequisite NPCs. You can use {PREREQNPC} placeholder for the prerequisite NPC name and {NPC} placeholder for the current NPC name.

Requirements Not Met Title:
This title is shown in the dialog title bar when requirements are not met. Leave empty to use the page title.

Close Button Text:
The text displayed on the close button when requirements are not met. Leave empty to use default text.

LAST BUTTON FEATURE:

The Last Button feature allows any button to be marked as the final interaction with an NPC. When a player clicks a Last Button:

1. The dialog closes immediately
2. The interaction is marked as finished
3. The player can no longer interact with that NPC

If a player attempts to interact with an NPC after clicking a Last Button, they will see the Finished Page instead of the normal dialog.

To enable Last Button:
1. Select the NPC, page, and button you want to make the last button
2. Check the "Mark as Last Button" checkbox
3. Configure the Finished Page settings (see below)
4. Click Save

FINISHED PAGE CONFIGURATION:

The Finished Page is shown when a player tries to interact with an NPC after a Last Button has been clicked. Configure this page in the admin UI when the Last Button checkbox is enabled.

Finished Page Title:
The title shown in the dialog title bar when the finished page is displayed.

Finished Page Message:
The main message shown to the player explaining that they have already completed this interaction.

Finished Close Button Text:
The text displayed on the close button for the finished page.

DATA STORAGE:

All quest configuration data is stored in JSON files in the Hyronix_NPC Quests folder within your server's data directory. The interactionHistory.json file tracks which players have interacted with which NPCs, including which interactions are marked as finished.

The data folder structure:
- Hyronix_NPC Quests/
  - npcs/ (individual NPC JSON files)
  - interactionHistory.json (player interaction tracking)

INTERACTION TRACKING:

The plugin automatically tracks all player interactions with NPCs. This tracking is used to:
- Check NPC prerequisites
- Prevent repeated interactions when Last Button is enabled
- Maintain quest progression state

Interaction history is stored per player and persists across server restarts. To reset a player's interaction history, you can manually edit or delete their entry in interactionHistory.json.

BUTTON CONFIGURATION:

You can configure requirements and rewards for the following buttons:
- Next Button: The button that advances to the next dialog page
- Previous Button: The button that goes back to the previous dialog page
- Close Button: The button that closes the dialog
- Custom Button 1: First customizable button (if enabled on the dialog page)
- Custom Button 2: Second customizable button (if enabled on the dialog page)

Each button can have:
- Multiple item requirements
- Multiple NPC prerequisites
- Multiple custom requirements
- Multiple item rewards
- Multiple custom rewards
- Multiple console commands
- Last Button status

BUTTON WORKFLOW:

When a player clicks a button, the following happens in order:

1. Requirements are checked:
   - Item requirements: Checks if player has required items
   - NPC prerequisites: Checks if player has talked to required NPCs
   - Custom requirements: Checks with registered requirement checkers

2. If any requirement fails:
   - A failure message is shown to the player
   - No rewards are given
   - The button action does not proceed

3. If all requirements pass:
   - Required items are consumed (if consume is enabled)
   - Rewards are given:
     - Item rewards are added to inventory
     - Custom rewards are processed by registered reward providers
     - Console commands are executed

4. If Last Button is enabled:
   - Dialog closes
   - Interaction is marked as finished
   - Player cannot interact with this NPC again

5. If Last Button is not enabled:
   - Normal button action proceeds (page change, dialog close, etc.)

 

QUEST SYSTEM USAGE GUIDE

This guide explains how to use the quest system with NPC Dialog, specifically the 'quest:' reward and requirement IDs.

---
QUICK START: HOW TO MAKE A QUEST
---
Follow these 3 easy steps to make a basic quest (called 'quest_a'):

1. START BUTTON (Let them accept)
   - Reward ID: quest:start:quest_a
   - Requirement ID: quest:status:quest_a:AVAILABLE
   - Result: Button only shows if they don't have it. Clicking it starts the quest.

2. FINISH BUTTON (Let them complete)
   - Reward ID: quest:complete:quest_a
   - Requirement ID: quest:active:quest_a
   - Result: Button only shows while they have the quest. Clicking it finishes it.

3. NEXT BUTTON (Let them proceed)
   - Requirement ID: quest:completed:quest_a
   - Result: Player CANNOT click "Next" until they finish the quest.

---
REWARD IDs (Action to take)
---
1. quest:start:<quest_id>
   - Description: Starts the specified quest (sets status to ACTIVE).
   - Notes: Does nothing if the quest is already ACTIVE or COMPLETED.

2. quest:complete:<quest_id>
   - Description: Completes the specified quest (sets status to COMPLETED).

3. quest:set_status:<quest_id>:<status>
   - Statuses: LOCKED, AVAILABLE, ACTIVE, COMPLETED.

---
REQUIREMENT IDs (Check quest status)
---
1. quest:active:<quest_id>
   - Condition: Player must have the quest in ACTIVE status.

2. quest:completed:<quest_id>
   - Condition: Player must have the quest in COMPLETED status.

3. quest:status:<quest_id>:<status>
   - Condition: Player must have the specified status exactly.

---
EXAMPLE: 4-BUTTON SETUP (Lifecycle of 'quest_a')
---

This setup allows an NPC to handle the entire flow of a quest using 4 buttons.

1. CUSTOM BUTTON 1: "Accept Quest"
   - Requirement: quest:status:quest_a:AVAILABLE
   - Reward: quest:start:quest_a
   - Logic: Only button visible initially. Clicking it starts the quest and makes this button disappear.

2. CUSTOM BUTTON 2: "Complete Quest"
   - Requirement: quest:active:quest_a
   - Reward: quest:complete:quest_a
   - Logic: Only appears while you have the quest. On click, it finishes it. (You can add item requirements here too!)

3. NEXT BUTTON (Default Navigation)
   - Requirement: quest:completed:quest_a
   - Logic: This button is "greyed out" or hidden until you finish the quest. Allows moving to the next dialog page only after completion.

4. CLOSE BUTTON (Default Navigation)
   - Requirement: (None)
   - Logic: Always available so the player can leave the conversation.

---
TIPS
---
- Multiple Requirements: You can combine quest requirements with items (e.g., must have 5 apples AND quest must be active).
- Performance: Quests are processed locally on the player entity.

 

 

PERMISSIONS:

The only permission required is npcquests.admin for accessing the /npcquest command. All quest logic and requirements work automatically for all players once configured.

TIPS AND BEST PRACTICES:

1. Plan your quest chains before creating them. Draw out which NPCs need to be talked to in what order.

2. Use meaningful NPC names and dialog content to guide players through your quest chains naturally.

3. Test your quest chains thoroughly. Make sure prerequisites work correctly and rewards are given properly.

4. Use the Last Button feature sparingly. Only mark buttons as Last Buttons when you truly want to prevent further interaction.

5. Keep your Requirement IDs and Reward IDs documented if you're integrating with custom plugins. This makes configuration easier.

6. Use console commands for complex reward scenarios that item or custom rewards can't handle.

7. Always save your changes after configuring requirements or rewards. Unsaved changes will be lost.

8. The admin UI shows all configured requirements and rewards. Use this to verify your configuration before testing in-game.

TROUBLESHOOTING:

Issue: Requirements not being checked
Solution: Make sure you selected the correct NPC, page, and button before adding requirements. Ensure you clicked Save after making changes.

Issue: Rewards not being given
Solution: Verify that requirements are being met. Rewards only trigger when all requirements pass. Check that item IDs are correct and custom reward IDs are registered.

Issue: NPC prerequisites not working
Solution: Make sure the prerequisite NPC is configured in NPC Dialog. The prerequisite NPC must exist and be accessible. Verify interaction history is being tracked correctly.

Issue: Last Button not preventing interaction
Solution: Make sure you saved the Last Button configuration. Check that the interactionHistory.json file is being written to correctly.

Issue: Cannot access admin UI
Solution: Verify you have the npcquests.admin permission. Check that the NPC Dialog plugin is installed and working. Ensure the NPC Quests addon loaded without errors.

Issue: Custom requirements or rewards not working
Solution: Verify that the other plugin has registered its RequirementChecker or RewardProvider with NPC Dialog. Check that requirement IDs and reward IDs match exactly between the plugins.

ADVANCED FEATURES:

The NPC Quests addon includes support for the RequirementChecker and RewardProvider APIs. Other plugins can register custom requirement checkers and reward providers, allowing for deep integration between NPC Dialog and other server systems.

NPC DIALOG API DOCUMENTATION FOR DEVELOPERS:

GETTING STARTED:

Get the plugin instance:
NPCDialogPlugin plugin = NPCDialogPlugin.getInstance();
if (plugin == null) {
    return; // NPC Dialog not installed
}

REQUIREMENT CHECKER API:

Register custom requirements that players must meet to proceed in NPC dialogs.

Interface: com.hytale.npcdialog.api.RequirementChecker

Methods:
boolean checkRequirement(Player player, String requirementId)
    Returns true if player meets the requirement.

String getErrorMessage(String requirementId)
    Optional. Returns custom error message or null for default.

Registration:
plugin.registerRequirementChecker("economy.money", new RequirementChecker() {
    @Override
    public boolean checkRequirement(Player player, String requirementId) {
        // Check if player has enough money
        return hasEnoughMoney(player);
    }
    
    @Override
    public String getErrorMessage(String requirementId) {
        return "You do not have enough money.";
    }
});

REWARD PROVIDER API:

Register custom rewards that can be given to players through NPC interactions.

Interface: com.hytale.npcdialog.api.RewardProvider

Methods:
boolean giveReward(Player player, String rewardId, double amount)
    Returns true if reward was successfully given.

String getRewardMessage(String rewardId, double amount)
    Returns message to display when reward is given.

Registration:
plugin.registerRewardProvider("economy.money", new RewardProvider() {
    @Override
    public boolean giveReward(Player player, String rewardId, double amount) {
        // Give money to player
        return addMoney(player, amount);
    }
    
    @Override
    public String getRewardMessage(String rewardId, double amount) {
        return "You received " + amount + " coins!";
    }
});

USAGE:

Once registered, administrators can use your requirement IDs and reward IDs in the NPC Quests admin UI. Use descriptive, namespaced IDs like "yourplugin.feature.requirement".

CLEANUP:

Unregister during plugin shutdown:
plugin.unregisterRequirementChecker("economy.money");
plugin.unregisterRewardProvider("economy.money");

 

Distribution Notice:
This mod may not be redistributed or bundled with third-party setups without clear and visible credit to Hyronix Studios and the mod name. Otherwise, redistribution is not permitted.

Последние версии

NPCQuests-1.0.2.jar

Early Access 25.01.2026 335.0 КБ
Скачать

NPCQuests-1.0.1.jar

Early Access 18.01.2026 317.7 КБ
Скачать

NPCQuests-1.0.0Beta.jar

Early Access 17.01.2026 317.0 КБ
Скачать