Документация сервера
EventBooster
АктивныйHytale • Version 0.4.3
Руководство по настройке: пресеты, еженедельное расписание, Discord webhook, админ-GUI, команды, конфигурация, RPG Leveling, VKCraft, PartyPro и проверка опыта.
Настройка EventBooster на сервере: пресеты, расписание, Discord webhook, админ-GUI, права, команды, конфиг и интеграции прокачки.
Обзор
EventBooster запускает временные события опыта в вашем мире или на сервере Hytale. Запускайте выходные с двойным опытом, групповые события и бонусы для пати через панель или команды либо назначьте еженедельный запуск сохранённого пресета.
Установка
- Требуется Hytale 0.7.0+
- Скачайте EventBooster-0.4.3.jar на вкладке Files CurseForge
- Положите JAR в папку mods/ сервера или для одиночной игры Windows в
%AppData%\Hytale\UserData\Mods\. Оставьте только один JAR EventBooster - Запустите сервер. Конфиг создаётся в mods/durkz_EventBooster/config/config.json
- Выдайте права персоналу (см. Права ниже)
- Выполните /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.
| Command | Permission | Описание |
|---|---|---|
/eventboost gui | eventbooster.admin.start | Открыть админ-панель (алиасы: /eb gui, /eventboost panel, /eventboost menu) |
/eventboost start <mult> <minutes> [flags] | eventbooster.admin.start | Запустить временный буст опыта |
/eventboost stop [id|all] | eventbooster.admin.stop | Остановить один буст или все |
/eventboost reload | eventbooster.admin.reload | Перезагрузить конфиг |
/eventboost status | eventbooster.status | Список активных бустов |
/eventboost preset list | eventbooster.status или eventbooster.admin.start | Список сохранённых пресетов |
/eventboost preset start <id> | eventbooster.admin.start | Запуск пресета |
/eventboost preset schedules | eventbooster.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 для сохранения пресетов и расписания из панели).
| Screen | Actions |
|---|---|
| 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 schedule | Id расписания, связанный пресет, опциональный 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 | Конец окна (буст останавливается при закрытии) |
Глобальные опции:
| Опция | По умолчанию | Описание |
|---|---|---|
schedulesEnabled | true | Главный переключатель сервиса расписания |
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).
| Опция | По умолчанию | Описание |
|---|---|---|
discordWebhookEnabled | false | Включить отправку в webhook |
discordWebhookUrl | "" | Полный HTTPS URL из настроек канала Discord |
discordNotifyOnStart | true | Уведомлять при ручном/GUI старте |
discordNotifyOnEnd | true | Уведомлять при окончании буста |
discordNotifyOnSchedule | true | Уведомлять при старте по расписанию |
discordUseEmbed | true | Embeds вместо простого текста |
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 в новых установках)
Лимиты буста
| Option | Default | Описание |
|---|---|---|
minMultiplier | 1.0 | Минимальный множитель буста |
maxMultiplier | 10.0 | Максимальный множитель буста |
maxCombinedMultiplier | 10.0 | Потолок при складывании нескольких бустов |
defaultDurationMinutes | 60 | Длительность по умолчанию в админ-GUI; 0 в командах или своём поле GUI = бессрочно |
allowConsoleCommands | false | Разрешить админ-команды из консоли сервера без игрока |
allowPublicHelp | false | Если true, любой игрок может использовать /eventboost help |
defaultMultiplier | 2.0 | Множитель по умолчанию в админ-GUI |
maxDurationMinutes | 10080 | Максимальная длительность события (минуты) |
historySize | 20 | Сколько недавних событий буста хранится для списка Недавняя история на панели (в памяти, текущая сессия) |
persistActiveBoosts | true | Сохранять активные события и исходные сроки после перезапуска |
checkForUpdates | true | Уведомлять персонал о новой версии ссылкой на проект CurseForge |
Сообщения
| Option | Default | Описание |
|---|---|---|
broadcastOnStart | true | Объявление при старте буста |
broadcastOnEnd | true | Объявление при окончании буста |
notifyPlayerOnJoin | true | Напоминание при входе подходящим игрокам |
reminderIntervalMinutes | 15 | Интервал периодических напоминаний (0 = выкл.) |
reminderBroadcastFormat | (см. конфиг) | Плейсхолдеры: {label}, {remaining}, {target} |
startBroadcastFormat | (см. конфиг) | Плейсхолдеры: {label}, {duration}, {multiplier}, {target} |
endBroadcastFormat | (см. конфиг) | Плейсхолдеры: {label}, {target} |
joinNoticeFormat | (см. конфиг) | Плейсхолдеры: {label}, {remaining}, {target} |
statusLineFormat | (см. конфиг) | Плейсхолдеры: {id}, {label}, {multiplier}, {remaining}, {target} |
partyProHudFormat | BOOST {multiplier}x | Текст PartyPro HUD, когда буст действует на игрока |
Сообщения отправляются только игрокам, подходящим для этого буста.
Интеграции
| Option | Default | Описание |
|---|---|---|
integrationRpgLeveling | true | Умножает опыт RPG Leveling, пока буст активен |
integrationVkCraft | true | Включить совместимый мост VKCraft при наличии API |
integrationPartyProHud | true | Индикатор PartyPro для игрока; отключение сохраняет получение состава пати |
Пресеты и расписание
| Ключ | По умолчанию | Описание |
|---|---|---|
presets[] | weekend, vip | Массив BoostEventPreset (см. Пресеты) |
schedules[] | [] | Массив BoostSchedule (см. Еженедельное расписание) |
schedulesEnabled | true | Включить автосервис расписания |
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 и строки формата.
Опциональные интеграции
| Mod | Role |
|---|---|
| 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: ...
Проверка бустов опыта
- Запустите сервер с EventBooster и модом прокачки (рекомендуется RPG Leveling)
- Глобальный тест:
/eventboost start 10 10. Все игроки должны получать усиленный опыт. - Групповой тест:
/eventboost start 10 10 --target=group --groups=VIP. Буст только у игроков группы VIP. /eventboost status: проверьте[target]в строке/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