- •Реле и стражиДве цели открывают переход к следующей фазе.
- •Удержание зоныПрогресс цели достигает заданного порога.
- ✓ЗавершениеВсе цели выполнены — сценарий завершён.
Процесс
Порядок сценария
- Реле ×2Стражи ×31
Реле и стражи
Два активированных реле и три побеждённых стража открывают следующую фазу.
- Прогресс удержанияПорог: 52
Удержание зоны
Прогресс засчитывается до заданного порога. Событие завершения отправляется один раз.
- COMPLETEDВсе цели выполнены3
Завершение
Сценарий получает итоговый статус. Сброс возвращает его к исходному состоянию.
Архитектура
Правила игры отдельно от сервера
Ядро хранит состояние и проверяет цели. Конфигурация описывает сценарий, а Paper-адаптер связывает его с командами сервера.
Ядро: состояние и переходы
Фазы, прогресс целей, события и условие перехода.
EncounterEngine.javaКонфигурация: фазы и цели
Определение сценария и параметров в YAML.
config.ymlPaper: запуск, прогресс и сброс
Команды и обработка событий на стороне серверного адаптера.
PaperEncounterPlugin.javaJavaEncounterEngine.java ↗
private boolean currentPhaseComplete() { return currentPhase().objectives().stream() .allMatch(objective -> progress.get(objective.id()) >= objective.requiredProgress());}Все цели выполнены — фаза завершается
Движок сравнивает прогресс каждой цели с требуемым значением. Переход разрешается только после выполнения всех целей текущей фазы.
Исходный код
Код можно изучить в браузере или скачать архивом.