← Voltar à documentação

Documentação do servidor

EventBooster

Ativo

Hytale • 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

  1. Exige Hytale 0.7.0+
  2. Baixe EventBooster-0.4.3.jar na aba Files do CurseForge
  3. Coloque o JAR na pasta mods/ do servidor, ou no solo Windows em %AppData%\Hytale\UserData\Mods\. Mantenha apenas um JAR do EventBooster instalado
  4. Inicie o servidor. A config é gerada em mods/durkz_EventBooster/config/config.json
  5. Conceda permissões de staff (veja Permissões abaixo)
  6. 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.

ComandoPermissãoDescrição
/eventboost guieventbooster.admin.startAbrir painel de admin (aliases: /eb gui, /eventboost panel, /eventboost menu)
/eventboost start <mult> <minutes> [flags]eventbooster.admin.startIniciar um boost de XP temporizado
/eventboost stop [id|all]eventbooster.admin.stopParar um boost ou todos
/eventboost reloadeventbooster.admin.reloadRecarregar config
/eventboost statuseventbooster.statusListar boosts ativos
/eventboost preset listeventbooster.status ou eventbooster.admin.startListar presets salvos
/eventboost preset start <id>eventbooster.admin.startIniciar um preset
/eventboost preset scheduleseventbooster.status ou eventbooster.admin.startListar agendas semanais (respeita schedulesEnabled)
/eventboost helpStaff (veja abaixo)Mostrar lista de comandos

Flags de start

FlagDescrição
--target=allTodos online (padrão)
--target=groupApenas jogadores que correspondem a --groups
--target=partyApenas os membros da sua party atual (snapshot tirado no início; exige um plugin de party como o PartyPro)
--groups=VIP,hytale:AdminNomes 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).

TelaAções
DashboardPresets: 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 boostPresets 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 presetCampos 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 scheduleId 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.json diretamente
  • Comandos: /eventboost preset list, /eventboost preset start <id>
  • Permissões: eventbooster.admin.start para iniciar; eventbooster.admin.reload para criar, editar ou excluir presets na GUI
  • Padrões de instalação nova: weekend (2x global) e vip (grupo VIP). 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:

CampoDescrição
idId único da agenda
enabledSe false, a linha é ignorada
presetIdPreset lançado ao abrir a janela
boostIdOpcional: substitui o boost id do preset
dayOfWeekDia ISO: segunda=1 … domingo=7
startHour, startMinuteInício da janela (fuso da agenda)
endHour, endMinuteFim da janela (o boost para ao fechar)

Opções globais:

OpçãoPadrãoDescrição
schedulesEnabledtrueInterruptor 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 schedules lista as linhas com o fuso resolvido
  • Permissões: eventbooster.admin.reload para 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çãoPadrãoDescrição
discordWebhookEnabledfalseAtivar posts para o webhook
discordWebhookUrl""URL HTTPS completa das configurações do canal no Discord
discordNotifyOnStarttrueAvisar em starts manuais ou pela GUI
discordNotifyOnEndtrueAvisar quando um boost termina
discordNotifyOnScheduletrueAvisar quando uma agenda inicia um boost
discordUseEmbedtrueEmbeds em vez de texto simples
discordMention@everyoneLinha 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 (ou discordapp.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ãoDescrição
eventbooster.admin.startIniciar boosts, iniciar presets e abrir a GUI de admin
eventbooster.admin.stopParar eventos de boost (incluindo pela GUI)
eventbooster.admin.reloadRecarregar config; salvar presets e agendas pela GUI
eventbooster.adminTodas as ações de admin (nó pai)
eventbooster.statusVer 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çãoPadrãoDescrição
minMultiplier1.0Multiplicador mínimo permitido
maxMultiplier10.0Multiplicador máximo permitido
maxCombinedMultiplier10.0Limite quando vários boosts empilham
defaultDurationMinutes60Duração padrão na GUI de admin; use 0 em comandos ou campo personalizado da GUI para permanente
allowConsoleCommandsfalsePermitir que o console do servidor execute comandos de admin sem jogador
allowPublicHelpfalseSe true, qualquer jogador pode usar /eventboost help
defaultMultiplier2.0Multiplicador padrão na GUI de admin
maxDurationMinutes10080Duração máxima do evento (minutos)
historySize20Quantidade de eventos recentes mantidos para o Histórico recente do dashboard (em memória, sessão atual)
persistActiveBooststrueManter eventos ativos e seus prazos originais após reinícios
checkForUpdatestrueAvisar o staff sobre novas versões com um link clicável para o projeto no CurseForge

Mensagens

OpçãoPadrãoDescrição
broadcastOnStarttrueBroadcast quando um boost inicia
broadcastOnEndtrueBroadcast quando um boost termina
notifyPlayerOnJointrueLembrar jogadores elegíveis ao entrar
reminderIntervalMinutes15Intervalo 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}
partyProHudFormatBOOST {multiplier}xTexto 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çãoPadrãoDescrição
integrationRpgLevelingtrueMultiplica XP do RPG Leveling enquanto o boost está ativo
integrationVkCrafttrueAtivar a bridge compatível do VKCraft quando a API estiver disponível
integrationPartyProHudtrueIndicador PartyPro por jogador; desativar mantém a resolução dos membros da party

Presets e agendas

ChavePadrãoDescrição
presets[]weekend, vipArray de objetos BoostEventPreset (veja Presets)
schedules[][]Array de objetos BoostSchedule (veja Agendas semanais)
schedulesEnabledtrueAtivar 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

ModFunção
RPG Leveling and StatsMultiplica XP do RPG Leveling enquanto o boost está ativo (recomendado)
VKCraftBridge opcional para APIs compatíveis do VKCraft; os alvos disponíveis dependem da API exposta
PartyProTexto 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.admin ao staff; salvar presets ou agendas na GUI exige eventbooster.admin.reload
  • O log deve mostrar EventBooster started. Active integrations: ... na inicialização

Verificando boosts de XP

  1. Inicie o servidor com EventBooster + um mod de leveling (RPG Leveling recomendado)
  2. Teste global: execute /eventboost start 10 10. Todos os jogadores devem ganhar XP com boost.
  3. Teste de grupo: execute /eventboost start 10 10 --target=group --groups=VIP. Apenas jogadores do grupo VIP recebem boost.
  4. Execute /eventboost status e confirme [target] na linha
  5. Execute /eventboost stop ou 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 reload recarrega 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