Documentação do servidor
EventBooster
AtivoHytale • Version 0.4.3
Guia de configuração: presets, agendas semanais, webhook Discord, GUI de admin, comandos, configuração, RPG Leveling, VKCraft, PartyPro e verificação de XP.
Como configurar o EventBooster no servidor: presets, agendas, webhook Discord, GUI de admin, permissões, comandos, config e integrações de leveling.
Visão geral
O EventBooster executa eventos temporários de XP no seu mundo ou servidor Hytale. Inicie fins de semana de XP dobrado, eventos de grupo ou boosts de party pelo painel ou por comandos, ou deixe uma agenda semanal executar um preset salvo.
Instalação
- Exige Hytale 0.7.0+
- Baixe EventBooster-0.4.3.jar na aba Files do CurseForge
- Coloque o JAR na pasta mods/ do servidor, ou no solo Windows em
%AppData%\Hytale\UserData\Mods\. Mantenha apenas um JAR do EventBooster instalado - Inicie o servidor. A config é gerada em mods/durkz_EventBooster/config/config.json
- Conceda permissões de staff (veja Permissões abaixo)
- Execute /eventboost start 2 10 e /eventboost status para verificar
Recomendado: instale RPG Leveling and Stats junto com o EventBooster para multiplicação confiável de XP.
Recuperação após reinício e edição segura
Com persistActiveBoosts: true, eventos ativos são salvos em mods/durkz_EventBooster/active-boosts.json. Reiniciar preserva o início, o prazo original, o público e o filtro de mundo. O tempo offline conta e eventos já expirados não são restaurados. Eventos sem prazo permanecem ativos até serem parados. O histórico recente não é persistido.
Uma falha ao salvar o estado recusa um início ou uma parada manual sem alterar o evento ativo. Configuração inválida, schemas incompatíveis e reloads recusados preservam o arquivo original e as últimas configurações válidas. Corrija o arquivo indicado antes de reiniciar um plugin que não consegue carregá-lo. Edições de presets e agendas são validadas e salvas antes de serem aplicadas. Reabra o editor após recarregar a config; páginas antigas não podem sobrescrever os dados atuais.
/eventboost status e o painel mostram a saúde das integrações, seu multiplicador efetivo e erros de persistência. O aviso de ausência de hook de XP significa que timers e mensagens podem funcionar sem mudar o XP.
Comandos
Comando principal: /eventboost (aliases: /eb, /boost, /eventbooster)
O Hytale exige dois argumentos posicionais para start (multiplier, minutes). Todas as outras opções usam flags (--name=value). Use /eventboost start --help no jogo para a lista completa.
| Comando | Permissão | Descrição |
|---|---|---|
/eventboost gui | eventbooster.admin.start | Abrir painel de admin (aliases: /eb gui, /eventboost panel, /eventboost menu) |
/eventboost start <mult> <minutes> [flags] | eventbooster.admin.start | Iniciar um boost de XP temporizado |
/eventboost stop [id|all] | eventbooster.admin.stop | Parar um boost ou todos |
/eventboost reload | eventbooster.admin.reload | Recarregar config |
/eventboost status | eventbooster.status | Listar boosts ativos |
/eventboost preset list | eventbooster.status ou eventbooster.admin.start | Listar presets salvos |
/eventboost preset start <id> | eventbooster.admin.start | Iniciar um preset |
/eventboost preset schedules | eventbooster.status ou eventbooster.admin.start | Listar agendas semanais (respeita schedulesEnabled) |
/eventboost help | Staff (veja abaixo) | Mostrar lista de comandos |
Flags de start
| Flag | Descrição |
|---|---|
--target=all | Todos online (padrão) |
--target=group | Apenas jogadores que correspondem a --groups |
--target=party | Apenas os membros da sua party atual (snapshot tirado no início; exige um plugin de party como o PartyPro) |
--groups=VIP,hytale:Admin | Nomes de grupo ou nós de permissão separados por vírgula |
--label=... | Nome de exibição em broadcasts e status |
--world=... | Aplicar boost apenas nesse mundo (nome ou string uuid) |
--id=... | Id do boost para stop/status (padrão: global) |
Exemplos
/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 de admin
Execute /eventboost gui (requer eventbooster.admin.start para abrir, criar boosts e iniciar presets; eventbooster.admin.stop para parar boosts; eventbooster.admin.reload para salvar presets e agendas no painel).
| Tela | Ações |
|---|---|
| Dashboard | Presets: New preset, por linha Start (um clique), Edit, Del. Agendas: New schedule, por linha On/Off, Edit, Del. Boosts ativos: New boost, Refresh, Stop all, Close; por linha Edit, Stop. Histórico recente: lista somente leitura dos últimos boosts iniciados, parados e expirados (em memória, sessão atual). Listas longas rolam dentro do painel; os botões do rodapé continuam visíveis. |
| New / edit boost | Presets de multiplicador (1.5x, 2x, 3x, 5x) ou personalizado; presets de duração (permanente, 30m, 1h, 2h) ou personalizado (0 = permanente). Alvo: todos online ou lista de grupo/permissão. Label, id do boost (apenas novo) e filtro de mundo opcionais. Save usa as mesmas regras que /eventboost start. Edit substitui o boost selecionado (mesmo id). |
| New / edit preset | Campos do modelo: id, nome de exibição, multiplicador, duração (0 = permanente), boost id, label, filtro de mundo, modo de alvo (ALL / GROUP), grupos. Save grava em presets[] (exige permissão de reload). |
| New / edit schedule | Id da agenda, preset ligado, boost id opcional, dia da semana (segunda=1 … domingo=7), hora/minuto início e fim, enabled. Save grava em schedules[] (exige permissão de reload). |
Padrões do formulário da GUI para novos boosts vêm de defaultMultiplier e defaultDurationMinutes na config.
Presets
Presets são modelos de evento salvos em presets[] no config.json: multiplicador, duração, label, boost id, modo de alvo, grupos e filtro de mundo opcional.
- GUI: secção Presets no dashboard, ou edite
config.jsondiretamente - Comandos:
/eventboost preset list,/eventboost preset start <id> - Permissões:
eventbooster.admin.startpara iniciar;eventbooster.admin.reloadpara criar, editar ou excluir presets na GUI - Padrões de instalação nova:
weekend(2x global) evip(grupoVIP). Entradas válidas existentes e listas de presets intencionalmente vazias são preservadas.
Presets aceitam ALL ou GROUP. Alvos desconhecidos e presets PARTY são recusados em vez de virarem eventos globais; inicie eventos de party com /eventboost start --target=party e os argumentos obrigatórios de multiplicador e duração.
Iniciar um preset usa a mesma validação, broadcasts, empilhamento e integrações que /eventboost start.
Agendas semanais
As agendas iniciam e param boosts automaticamente em janelas semanais. Cada entrada em schedules[] referencia um presetId:
| Campo | Descrição |
|---|---|
id | Id único da agenda |
enabled | Se false, a linha é ignorada |
presetId | Preset lançado ao abrir a janela |
boostId | Opcional: substitui o boost id do preset |
dayOfWeek | Dia ISO: segunda=1 … domingo=7 |
startHour, startMinute | Início da janela (fuso da agenda) |
endHour, endMinute | Fim da janela (o boost para ao fechar) |
Opções globais:
| Opção | Padrão | Descrição |
|---|---|---|
schedulesEnabled | true | Interruptor geral do serviço de agendas |
scheduleTimezone | "" | Id IANA (ex. Europe/Lisbon). Vazio = fuso padrão da JVM |
- GUI: secção Schedules no dashboard; On/Off alterna
enabled - Comando:
/eventboost preset scheduleslista as linhas com o fuso resolvido - Permissões:
eventbooster.admin.reloadpara criar, editar, excluir ou alternar agendas na GUI
O serviço verifica a cada 15 segundos. Janelas que cruzam a meia-noite pertencem ao dia em que começaram, inclusive de domingo para segunda, no fuso scheduleTimezone. O evento termina no fim exato da janela, sem reiniciar repetidamente pela duração do preset.
O override, o início e a parada usam o mesmo ID de boost. Agendas que compartilham um ID são consideradas pela ordem de ID da agenda. Um evento manual que ocupa esse ID é preservado e uma agenda não pode parar sua substituição manual. Parar o evento manualmente marca aquela janela como atendida, inclusive após reiniciar; ele não volta no próximo ciclo. O painel mostra o próximo início ou o fim atual e o fuso.
Webhook Discord (opcional)
Envie avisos de início e fim de boost para um webhook de canal Discord. Configure apenas em config.json (a URL é segredo e não aparece na GUI de admin).
| Opção | Padrão | Descrição |
|---|---|---|
discordWebhookEnabled | false | Ativar posts para o webhook |
discordWebhookUrl | "" | URL HTTPS completa das configurações do canal no Discord |
discordNotifyOnStart | true | Avisar em starts manuais ou pela GUI |
discordNotifyOnEnd | true | Avisar quando um boost termina |
discordNotifyOnSchedule | true | Avisar quando uma agenda inicia um boost |
discordUseEmbed | true | Embeds em vez de texto simples |
discordMention | @everyone | Linha de ping em cada mensagem |
discordStartFormat | (veja a config) | Placeholders: {label}, {duration}, {multiplier}, {target}, {staff} |
discordEndFormat | (veja a config) | Placeholders: {label}, {target} |
discordScheduleStartFormat | (veja a config) | Placeholders: {schedule}, {label}, {duration}, {multiplier}, {target} |
Valores de discordMention: @everyone, @here, <@&ROLE_ID> (cargo), <@USER_ID> (usuário) ou none para desativar pings.
Requisitos:
- A URL deve usar HTTPS e apontar para
discord.com(oudiscordapp.com) - Salvar presets ou agendas pela GUI não apaga uma URL de webhook existente no disco se a cópia em memória estiver vazia
Direcionamento de boost
O EventBooster usa as permissões existentes do Hytale no seu servidor. Sem plugin de rank separado.
Um jogador recebe um boost de grupo se:
- Estiver em um grupo listado (
PermissionsModule/permissions.json), ou - Tiver um nó de permissão listado
Se --groups estiver definido sem --target=group, o mod trata automaticamente como boost de grupo.
Alvo por party (--target=party) dá boost nos membros da party atual de quem rodou o comando. Os membros são resolvidos uma vez, no início, a partir de um plugin de party instalado (PartyPro) e guardados como lista fixa; quem entra ou sai da party depois não é adicionado nem removido do boost ativo. Se nenhum plugin de party expõe seus membros, o comando avisa que o alvo por party está indisponível.
Filtro de mundo (--world=...) pode ser combinado com boosts globais, de grupo ou de party: apenas jogadores nesse nome de mundo recebem o multiplicador.
Permissões
Apenas staff com os nós corretos pode iniciar, parar ou recarregar boosts. Jogadores não precisam de permissões para receber XP de um boost ativo.
| Permissão | Descrição |
|---|---|
eventbooster.admin.start | Iniciar boosts, iniciar presets e abrir a GUI de admin |
eventbooster.admin.stop | Parar eventos de boost (incluindo pela GUI) |
eventbooster.admin.reload | Recarregar config; salvar presets e agendas pela GUI |
eventbooster.admin | Todas as ações de admin (nó pai) |
eventbooster.status | Ver boosts ativos |
/eventboost help é apenas para staff: jogadores precisam de eventbooster.status, eventbooster.admin ou qualquer nó eventbooster.admin.*. Jogadores normais sem essas permissões não podem executar /eb help ou /eventboost help.
Para permitir que todos leiam a ajuda (opcional), defina "allowPublicHelp": true em config.json.
Setup rápido com Hytale /perm
/perm group add OP eventbooster.admin
Ou nós individuais:
/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
Exemplo permissions.json
{
"groups": {
"OP": {
"permissions": [
"eventbooster.admin"
]
},
"VIP": {
"permissions": []
}
}
}
Coloque jogadores VIP no grupo VIP nas permissões de usuário do save, depois execute:
/eventboost start 2 120 --target=group --groups=VIP
Configuração
Arquivo de config: mods/durkz_EventBooster/config/config.json (configVersion 4 em instalações novas)
Limites de boost
| Opção | Padrão | Descrição |
|---|---|---|
minMultiplier | 1.0 | Multiplicador mínimo permitido |
maxMultiplier | 10.0 | Multiplicador máximo permitido |
maxCombinedMultiplier | 10.0 | Limite quando vários boosts empilham |
defaultDurationMinutes | 60 | Duração padrão na GUI de admin; use 0 em comandos ou campo personalizado da GUI para permanente |
allowConsoleCommands | false | Permitir que o console do servidor execute comandos de admin sem jogador |
allowPublicHelp | false | Se true, qualquer jogador pode usar /eventboost help |
defaultMultiplier | 2.0 | Multiplicador padrão na GUI de admin |
maxDurationMinutes | 10080 | Duração máxima do evento (minutos) |
historySize | 20 | Quantidade de eventos recentes mantidos para o Histórico recente do dashboard (em memória, sessão atual) |
persistActiveBoosts | true | Manter eventos ativos e seus prazos originais após reinícios |
checkForUpdates | true | Avisar o staff sobre novas versões com um link clicável para o projeto no CurseForge |
Mensagens
| Opção | Padrão | Descrição |
|---|---|---|
broadcastOnStart | true | Broadcast quando um boost inicia |
broadcastOnEnd | true | Broadcast quando um boost termina |
notifyPlayerOnJoin | true | Lembrar jogadores elegíveis ao entrar |
reminderIntervalMinutes | 15 | Intervalo de lembrete periódico (0 = desligado) |
reminderBroadcastFormat | (veja a config) | Placeholders: {label}, {remaining}, {target} |
startBroadcastFormat | (veja a config) | Placeholders: {label}, {duration}, {multiplier}, {target} |
endBroadcastFormat | (veja a config) | Placeholders: {label}, {target} |
joinNoticeFormat | (veja a config) | Placeholders: {label}, {remaining}, {target} |
statusLineFormat | (veja a config) | Placeholders: {id}, {label}, {multiplier}, {remaining}, {target} |
partyProHudFormat | BOOST {multiplier}x | Texto do HUD PartyPro quando o boost se aplica àquele jogador |
Mensagens são enviadas apenas a jogadores elegíveis para aquele boost.
Integrações
| Opção | Padrão | Descrição |
|---|---|---|
integrationRpgLeveling | true | Multiplica XP do RPG Leveling enquanto o boost está ativo |
integrationVkCraft | true | Ativar a bridge compatível do VKCraft quando a API estiver disponível |
integrationPartyProHud | true | Indicador PartyPro por jogador; desativar mantém a resolução dos membros da party |
Presets e agendas
| Chave | Padrão | Descrição |
|---|---|---|
presets[] | weekend, vip | Array de objetos BoostEventPreset (veja Presets) |
schedules[] | [] | Array de objetos BoostSchedule (veja Agendas semanais) |
schedulesEnabled | true | Ativar serviço automático de agendas |
scheduleTimezone | "" | Fuso IANA para as janelas |
Exemplo de preset:
{
"id": "weekend",
"displayName": "Weekend 2x",
"multiplier": 2.0,
"durationMinutes": 120,
"boostId": "weekend",
"label": "Weekend XP",
"targetMode": "ALL",
"targetGroups": []
}
Webhook Discord
Veja Webhook Discord acima para discordWebhookEnabled, discordWebhookUrl, toggles de aviso, discordMention, embed e formatos de mensagem.
Integrações opcionais
| Mod | Função |
|---|---|
| RPG Leveling and Stats | Multiplica XP do RPG Leveling enquanto o boost está ativo (recomendado) |
| VKCraft | Bridge opcional para APIs compatíveis do VKCraft; os alvos disponíveis dependem da API exposta |
| PartyPro | Texto no HUD para jogadores elegíveis, e --target=party |
HyRPGCore não é suportado neste release. Nenhum mod de leveling é obrigatório. Sem um, comandos, timers e broadcasts ainda funcionam, mas o XP no jogo não muda.
Verifique o log do servidor na inicialização:
EventBooster started. Active integrations: RPGLeveling, ...
Integrações e limites
O RPG Leveling and Stats fornece o XP por jogador. O PartyPro fornece os membros da party e um indicador opcional no HUD; ele não é um hook de XP. Desativar integrationPartyProHud mantém o alvo por party disponível. O VKCraft exige uma API compatível; um hook apenas global não aplica filtros por mundo, grupo ou party. Eventos direcionados são recusados quando esse é o único hook de XP ativo.
Eventos de party capturam a lista de membros ao iniciar. Presets aceitam ALL e GROUP, não PARTY. O mundo atual do jogador determina o XP, os avisos, a contagem de elegíveis online e o indicador do PartyPro.
Recomendado
- Instale RPG Leveling and Stats junto com o EventBooster para multiplicação confiável de XP
- Conceda
eventbooster.adminao staff; salvar presets ou agendas na GUI exigeeventbooster.admin.reload - O log deve mostrar
EventBooster started. Active integrations: ...na inicialização
Verificando boosts de XP
- Inicie o servidor com EventBooster + um mod de leveling (RPG Leveling recomendado)
- Teste global: execute
/eventboost start 10 10. Todos os jogadores devem ganhar XP com boost. - Teste de grupo: execute
/eventboost start 10 10 --target=group --groups=VIP. Apenas jogadores do grupo VIP recebem boost. - Execute
/eventboost statuse confirme[target]na linha - Execute
/eventboost stopou aguarde a expiração. Jogadores elegíveis devem ver o broadcast de fim quando o boost realmente terminar.
API pública
if (EventBoosterAPI.isAvailable()) {
double multiplier = EventBoosterAPI.get()
.getExperienceMultiplier(playerUuid, worldName);
}
Use a sobrecarga com UUID para resultados corretos quando boosts de grupo estão ativos.
Observações
/eventboost reloadrecarrega a config e remove/reanexa integrações sem duplicar listeners de XP do RPG Leveling. Um reload recusado mantém as últimas configurações válidas. Reabra editores existentes após um reload bem-sucedido.
Licença
MIT License. Copyright (c) 2026 DurkzPRG