← К документации

Документация сервера

EventBooster

Активный

Hytale • Version 0.4.3

Руководство по настройке: пресеты, еженедельное расписание, Discord webhook, админ-GUI, команды, конфигурация, RPG Leveling, VKCraft, PartyPro и проверка опыта.

Настройка EventBooster на сервере: пресеты, расписание, Discord webhook, админ-GUI, права, команды, конфиг и интеграции прокачки.


Обзор

EventBooster запускает временные события опыта в вашем мире или на сервере Hytale. Запускайте выходные с двойным опытом, групповые события и бонусы для пати через панель или команды либо назначьте еженедельный запуск сохранённого пресета.


Установка

  1. Требуется Hytale 0.7.0+
  2. Скачайте EventBooster-0.4.3.jar на вкладке Files CurseForge
  3. Положите JAR в папку mods/ сервера или для одиночной игры Windows в %AppData%\Hytale\UserData\Mods\. Оставьте только один JAR EventBooster
  4. Запустите сервер. Конфиг создаётся в mods/durkz_EventBooster/config/config.json
  5. Выдайте права персоналу (см. Права ниже)
  6. Выполните /eventboost start 2 10 и /eventboost status для проверки

Рекомендуется: установите RPG Leveling and Stats вместе с EventBooster для стабильного умножения опыта.


Восстановление после перезапуска и безопасное редактирование

При persistActiveBoosts: true активные события сохраняются в mods/durkz_EventBooster/active-boosts.json. Перезапуск сохраняет время начала, исходный срок, участников и фильтр мира. Время простоя учитывается, истёкшие события не восстанавливаются. Бессрочные события действуют до остановки. Недавняя история между сессиями не сохраняется.

Ошибка сохранения состояния отклоняет ручной запуск или остановку, не меняя активное событие. Неверный конфиг, несовместимая схема и отклонённая перезагрузка сохраняют исходный файл и последние рабочие настройки. Исправьте указанный файл перед перезапуском плагина, который не может его загрузить. Правки пресетов и расписаний проверяются и сохраняются до применения. После перезагрузки откройте редактор заново: старые страницы не могут перезаписать текущие данные.

/eventboost status и панель показывают состояние интеграций, ваш итоговый множитель и ошибки сохранения. Предупреждение об отсутствии хука XP означает, что таймеры и сообщения могут работать без изменения опыта.


Команды

Основная команда: /eventboost (алиасы: /eb, /boost, /eventbooster)

Hytale требует два позиционных аргумента для start (multiplier, minutes). Остальные опции : флаги (--name=value). Полный список в игре: /eventboost start --help.

CommandPermissionОписание
/eventboost guieventbooster.admin.startОткрыть админ-панель (алиасы: /eb gui, /eventboost panel, /eventboost menu)
/eventboost start <mult> <minutes> [flags]eventbooster.admin.startЗапустить временный буст опыта
/eventboost stop [id|all]eventbooster.admin.stopОстановить один буст или все
/eventboost reloadeventbooster.admin.reloadПерезагрузить конфиг
/eventboost statuseventbooster.statusСписок активных бустов
/eventboost preset listeventbooster.status или eventbooster.admin.startСписок сохранённых пресетов
/eventboost preset start <id>eventbooster.admin.startЗапуск пресета
/eventboost preset scheduleseventbooster.status или eventbooster.admin.startСписок еженедельных окон (учитывает schedulesEnabled)
/eventboost helpПерсонал (см. ниже)Показать список команд

Флаги start

FlagОписание
--target=allВсе онлайн (по умолчанию)
--target=groupТолько игроки из --groups
--target=partyТолько участники вашей текущей пати (снимок берётся при запуске; нужен party-плагин, например PartyPro)
--groups=VIP,hytale:AdminИмена групп или узлы прав через запятую
--label=...Отображаемое имя в объявлениях и статусе
--world=...Буст только в этом мире (имя или uuid)
--id=...Id буста для stop/status (по умолчанию: global)

Примеры

/eventboost start 2 0
/eventboost start 2 120
/eventboost start 2 120 --target=all --label="Server-wide 2x"
/eventboost start 2 120 --target=group --groups=VIP --label="VIP Happy Hour"
/eventboost start 2 120 --target=group --groups=hytale:Admin
/eventboost start 1.5 60 --id=mining --world=world_mine --label="Mining Boost"
/eventboost stop mining
/eventboost stop all
/eventboost status
/eventboost gui
/eventboost preset list
/eventboost preset start weekend
/eventboost preset schedules

Админ-GUI

Запустите /eventboost gui (нужен eventbooster.admin.start для открытия, создания бустов и запуска пресетов; eventbooster.admin.stop для остановки; eventbooster.admin.reload для сохранения пресетов и расписания из панели).

ScreenActions
DashboardПресеты: New preset, в строке Start (один клик), Edit, Del. Расписание: New schedule, в строке On/Off, Edit, Del. Активные бусты: New boost, Refresh, Stop all, Close; в строке Edit, Stop. Недавняя история: список только для чтения последних запущенных, остановленных и истёкших бустов (в памяти, текущая сессия). Длинные списки прокручиваются внутри панели; кнопки внизу остаются на месте.
New / edit boostПресеты множителя (1.5x, 2x, 3x, 5x) или свой; длительность (бессрочно, 30m, 1h, 2h) или своя (0 = бессрочно). Цель: все онлайн или группа/права. Опционально label, id буста (только новый), фильтр мира. Save : те же правила, что у /eventboost start. Edit заменяет выбранный буст (тот же id).
New / edit presetПоля шаблона: id, отображаемое имя, множитель, длительность (0 = бессрочно), boost id, label, фильтр мира, режим цели (ALL / GROUP), группы. Save пишет в presets[] (нужно право reload).
New / edit scheduleId расписания, связанный пресет, опциональный boost id, день недели (понедельник=1 … воскресенье=7), час/минута начала и конца, enabled. Save пишет в schedules[] (нужно право reload).

Значения по умолчанию для новых бустов в GUI: defaultMultiplier и defaultDurationMinutes в конфиге.


Пресеты

Пресеты : сохранённые шаблоны событий в presets[] файла config.json: множитель, длительность, label, boost id, режим цели, группы и опциональный фильтр мира.

  • GUI: раздел Presets на панели или правка config.json напрямую
  • Команды: /eventboost preset list, /eventboost preset start <id>
  • Права: eventbooster.admin.start для запуска; eventbooster.admin.reload для создания, правки и удаления пресетов в GUI
  • Новая установка: weekend (2x для всех) и vip (группа VIP). Существующие корректные записи и намеренно пустые списки пресетов сохраняются.

Пресеты поддерживают ALL или GROUP. Неизвестные цели и пресеты PARTY отклоняются вместо запуска глобального события; для пати используйте /eventboost start --target=party с обязательными аргументами множителя и длительности.

Запуск пресета использует те же проверки, объявления, стек и интеграции, что и /eventboost start.


Еженедельное расписание

Расписание автоматически запускает и останавливает бусты в еженедельных окнах. Каждая запись в schedules[] ссылается на presetId:

ПолеОписание
idУникальный id расписания
enabledПри false строка игнорируется
presetIdПресет при открытии окна
boostIdОпционально: переопределяет boost id пресета
dayOfWeekДень ISO: понедельник=1 … воскресенье=7
startHour, startMinuteНачало окна (часовой пояс расписания)
endHour, endMinuteКонец окна (буст останавливается при закрытии)

Глобальные опции:

ОпцияПо умолчаниюОписание
schedulesEnabledtrueГлавный переключатель сервиса расписания
scheduleTimezone""IANA (напр. Europe/Lisbon). Пусто = часовой пояс JVM
  • GUI: раздел Schedules; On/Off переключает enabled
  • Команда: /eventboost preset schedules выводит строки с выбранным поясом
  • Права: eventbooster.admin.reload для создания, правки, удаления и переключения расписания в GUI

Сервис проверяет расписание каждые 15 секунд. Ночные окна относятся ко дню начала, включая переход с воскресенья на понедельник, в зоне scheduleTimezone. Событие заканчивается точно в конце окна, а не перезапускается по длительности пресета.

Переопределение, запуск и остановка используют один ID буста. Расписания с общим ID рассматриваются по порядку ID расписания. Ручное событие с этим ID сохраняется; расписание не может остановить его ручную замену. Ручная остановка отмечает окно как обработанное, в том числе после перезапуска; на следующей проверке событие не запускается снова. Панель показывает следующий запуск или текущий конец и часовой пояс.


Discord webhook (опционально)

Отправка уведомлений о старте и остановке буста в webhook канала Discord. Настраивается только в config.json (URL секретен и не показывается в админ-GUI).

ОпцияПо умолчаниюОписание
discordWebhookEnabledfalseВключить отправку в webhook
discordWebhookUrl""Полный HTTPS URL из настроек канала Discord
discordNotifyOnStarttrueУведомлять при ручном/GUI старте
discordNotifyOnEndtrueУведомлять при окончании буста
discordNotifyOnScheduletrueУведомлять при старте по расписанию
discordUseEmbedtrueEmbeds вместо простого текста
discordMention@everyoneСтрока пинга в каждом сообщении
discordStartFormat(см. конфиг)Плейсхолдеры: {label}, {duration}, {multiplier}, {target}, {staff}
discordEndFormat(см. конфиг)Плейсхолдеры: {label}, {target}
discordScheduleStartFormat(см. конфиг)Плейсхолдеры: {schedule}, {label}, {duration}, {multiplier}, {target}

Значения discordMention: @everyone, @here, <@&ROLE_ID> (роль), <@USER_ID> (пользователь) или none без пинга.

Требования:

  • URL должен быть HTTPS и вести на discord.com (или discordapp.com)
  • Сохранение пресетов или расписания из GUI не стирает существующий URL webhook на диске, если в памяти он пустой

Нацеливание буста

EventBooster использует существующие права Hytale на сервере. Отдельный плагин рангов не нужен.

Игрок получает групповой буст, если:

  • Он в указанной группе (PermissionsModule / permissions.json), или
  • У него есть указанный узел права

Если задан --groups без --target=group, мод автоматически считает это групповым бустом.

Party-цель (--target=party) бустит участников текущей пати того, кто запустил команду. Участники определяются один раз, при запуске, из установленного party-плагина (PartyPro) и сохраняются как фиксированный список; кто входит или выходит из пати позже, не добавляется и не удаляется из активного буста. Если ни один party-плагин не предоставляет своих участников, команда сообщает, что party-цель недоступна.

Фильтр мира (--world=...) можно сочетать с глобальным, групповым или party-бустом: множитель только у игроков в этом мире.


Права

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

PermissionОписание
eventbooster.admin.startЗапуск бустов и пресетов, открытие админ-GUI
eventbooster.admin.stopОстановка бустов (в т.ч. из GUI)
eventbooster.admin.reloadПерезагрузка конфига; сохранение пресетов и расписания из GUI
eventbooster.adminВсе админ-действия (родительский узел)
eventbooster.statusПросмотр активных бустов

/eventboost help только для персонала: нужен eventbooster.status, eventbooster.admin или любой узел eventbooster.admin.*. Обычные игроки без этих прав не могут выполнить /eb help или /eventboost help.

Чтобы help был доступен всем (опционально), в config.json: "allowPublicHelp": true.

Быстрая настройка через Hytale /perm

/perm group add OP eventbooster.admin

Или отдельные узлы:

/perm group add OP eventbooster.admin.start
/perm group add OP eventbooster.admin.stop
/perm group add OP eventbooster.admin.reload
/perm group add OP eventbooster.status

Пример permissions.json

{
  "groups": {
    "OP": {
      "permissions": [
        "eventbooster.admin"
      ]
    },
    "VIP": {
      "permissions": []
    }
  }
}

Добавьте VIP-игроков в группу VIP в правах сохранения, затем:

/eventboost start 2 120 --target=group --groups=VIP

Конфигурация

Файл конфига: mods/durkz_EventBooster/config/config.json (configVersion 4 в новых установках)

Лимиты буста

OptionDefaultОписание
minMultiplier1.0Минимальный множитель буста
maxMultiplier10.0Максимальный множитель буста
maxCombinedMultiplier10.0Потолок при складывании нескольких бустов
defaultDurationMinutes60Длительность по умолчанию в админ-GUI; 0 в командах или своём поле GUI = бессрочно
allowConsoleCommandsfalseРазрешить админ-команды из консоли сервера без игрока
allowPublicHelpfalseЕсли true, любой игрок может использовать /eventboost help
defaultMultiplier2.0Множитель по умолчанию в админ-GUI
maxDurationMinutes10080Максимальная длительность события (минуты)
historySize20Сколько недавних событий буста хранится для списка Недавняя история на панели (в памяти, текущая сессия)
persistActiveBooststrueСохранять активные события и исходные сроки после перезапуска
checkForUpdatestrueУведомлять персонал о новой версии ссылкой на проект CurseForge

Сообщения

OptionDefaultОписание
broadcastOnStarttrueОбъявление при старте буста
broadcastOnEndtrueОбъявление при окончании буста
notifyPlayerOnJointrueНапоминание при входе подходящим игрокам
reminderIntervalMinutes15Интервал периодических напоминаний (0 = выкл.)
reminderBroadcastFormat(см. конфиг)Плейсхолдеры: {label}, {remaining}, {target}
startBroadcastFormat(см. конфиг)Плейсхолдеры: {label}, {duration}, {multiplier}, {target}
endBroadcastFormat(см. конфиг)Плейсхолдеры: {label}, {target}
joinNoticeFormat(см. конфиг)Плейсхолдеры: {label}, {remaining}, {target}
statusLineFormat(см. конфиг)Плейсхолдеры: {id}, {label}, {multiplier}, {remaining}, {target}
partyProHudFormatBOOST {multiplier}xТекст PartyPro HUD, когда буст действует на игрока

Сообщения отправляются только игрокам, подходящим для этого буста.

Интеграции

OptionDefaultОписание
integrationRpgLevelingtrueУмножает опыт RPG Leveling, пока буст активен
integrationVkCrafttrueВключить совместимый мост VKCraft при наличии API
integrationPartyProHudtrueИндикатор PartyPro для игрока; отключение сохраняет получение состава пати

Пресеты и расписание

КлючПо умолчаниюОписание
presets[]weekend, vipМассив BoostEventPreset (см. Пресеты)
schedules[][]Массив BoostSchedule (см. Еженедельное расписание)
schedulesEnabledtrueВключить автосервис расписания
scheduleTimezone""IANA для окон расписания

Пример пресета:

{
  "id": "weekend",
  "displayName": "Weekend 2x",
  "multiplier": 2.0,
  "durationMinutes": 120,
  "boostId": "weekend",
  "label": "Weekend XP",
  "targetMode": "ALL",
  "targetGroups": []
}

Discord webhook

См. Discord webhook выше: discordWebhookEnabled, discordWebhookUrl, переключатели уведомлений, discordMention, embed и строки формата.


Опциональные интеграции

ModRole
RPG Leveling and StatsУмножает опыт RPG Leveling, пока буст активен (рекомендуется)
VKCraftНеобязательный мост для совместимых API VKCraft; доступные цели зависят от API
PartyProТекст HUD для подходящих игроков и --target=party

HyRPGCore в этом выпуске не поддерживается. Мод прокачки не обязателен. Без него команды, таймеры и объявления работают, но опыт в игре не изменится.

При старте сервера проверьте лог:

EventBooster started. Active integrations: RPGLeveling, ...

Интеграции и ограничения

RPG Leveling and Stats начисляет XP отдельным игрокам. PartyPro предоставляет состав пати и необязательный индикатор HUD; это не хук XP. Отключение integrationPartyProHud сохраняет выбор пати. Для VKCraft нужен совместимый API; глобальный хук не может фильтровать миры, группы или пати. Запуск с такими целями отклоняется, если доступен только глобальный хук XP.

События для пати запоминают участников при запуске. Пресеты поддерживают ALL и GROUP, но не PARTY. Текущий мир игрока определяет XP, уведомления, число подходящих игроков онлайн и индикатор PartyPro.


Рекомендации

  • Установите RPG Leveling and Stats вместе с EventBooster для надёжного умножения XP
  • Выдайте staff eventbooster.admin; сохранение presets/schedules в GUI требует eventbooster.admin.reload
  • В логе при старте должно быть EventBooster started. Active integrations: ...

Проверка бустов опыта

  1. Запустите сервер с EventBooster и модом прокачки (рекомендуется RPG Leveling)
  2. Глобальный тест: /eventboost start 10 10. Все игроки должны получать усиленный опыт.
  3. Групповой тест: /eventboost start 10 10 --target=group --groups=VIP. Буст только у игроков группы VIP.
  4. /eventboost status : проверьте [target] в строке
  5. /eventboost stop или дождитесь окончания. Подходящие игроки должны увидеть объявление об окончании, когда буст реально завершился.

Публичный API

if (EventBoosterAPI.isAvailable()) {
    double multiplier = EventBoosterAPI.get()
            .getExperienceMultiplier(playerUuid, worldName);
}

Используйте перегрузку с UUID для корректных результатов при активных групповых бустах.


Заметки

  • /eventboost reload перезагружает конфиг и отключает/подключает интеграции без дублирования слушателей XP RPG Leveling. Отклонённая перезагрузка сохраняет последние рабочие настройки. После успешной перезагрузки откройте редакторы заново.

Лицензия

MIT License. Copyright (c) 2026 DurkzPRG