Documentación del servidor
EventBooster
ActivoHytale • Version 0.4.3
Guía de configuración: presets, horarios semanales, webhook de Discord, GUI de administrador, comandos, configuración, RPG Leveling, VKCraft, PartyPro y verificación de XP.
Cómo configurar EventBooster en el servidor: presets, horarios semanales, webhook de Discord, GUI de admin, permisos, comandos, config e integraciones de leveling.
Descripción general
EventBooster ejecuta eventos temporales de XP en tu mundo o servidor Hytale. Inicia fines de semana de doble XP, eventos de grupo o boosts de party desde el panel o los comandos, o deja que un horario semanal ejecute un preset guardado.
Instalación
- Requiere Hytale 0.7.0+
- Descarga EventBooster-0.4.3.jar desde la pestaña Files de CurseForge
- Coloca el JAR en la carpeta mods/ del servidor, o en solo Windows en
%AppData%\Hytale\UserData\Mods\. Mantén un solo JAR de EventBooster instalado - Inicia el servidor. La configuración se genera en mods/durkz_EventBooster/config/config.json
- Otorga permisos de staff (consulta Permisos más abajo)
- Ejecuta /eventboost start 2 10 y /eventboost status para verificar
Recomendado: instala RPG Leveling and Stats junto con EventBooster para una multiplicación de XP fiable.
Recuperación tras reinicios y edición segura
Con persistActiveBoosts: true, los eventos activos se guardan en mods/durkz_EventBooster/active-boosts.json. Reiniciar conserva el inicio, el plazo original, el público y el filtro de mundo. El tiempo sin conexión cuenta y los eventos vencidos no se restauran. Los eventos sin plazo siguen activos hasta detenerlos. El historial reciente no se guarda entre sesiones.
Si falla el guardado del estado, se rechaza un inicio o una parada manual sin cambiar el evento activo. Una configuración inválida, esquemas incompatibles y recargas rechazadas conservan el archivo original y los últimos ajustes válidos. Corrige el archivo indicado antes de reiniciar un plugin que no puede cargarlo. Las ediciones de presets y horarios se validan y guardan antes de aplicarse. Reabre el editor tras recargar; las páginas antiguas no pueden sobrescribir los datos actuales.
/eventboost status y el panel muestran la salud de las integraciones, tu multiplicador efectivo y errores de persistencia. El aviso de ausencia de hook de XP significa que los temporizadores y avisos pueden funcionar sin cambiar el XP.
Comandos
Comando principal: /eventboost (alias: /eb, /boost, /eventbooster)
Hytale requiere dos argumentos posicionales para start (multiplier, minutes). Todas las demás opciones usan flags (--name=value). Usa /eventboost start --help en el juego para la lista completa.
| Comando | Permiso | Descripción |
|---|---|---|
/eventboost gui | eventbooster.admin.start | Abrir panel de administrador (alias: /eb gui, /eventboost panel, /eventboost menu) |
/eventboost start <mult> <minutes> [flags] | eventbooster.admin.start | Iniciar un boost de XP temporizado |
/eventboost stop [id|all] | eventbooster.admin.stop | Detener un boost o todos |
/eventboost reload | eventbooster.admin.reload | Recargar configuración |
/eventboost status | eventbooster.status | Listar boosts activos |
/eventboost preset list | eventbooster.status o eventbooster.admin.start | Listar presets guardados |
/eventboost preset start <id> | eventbooster.admin.start | Iniciar un preset |
/eventboost preset schedules | eventbooster.status o eventbooster.admin.start | Listar horarios semanales (respeta schedulesEnabled) |
/eventboost help | Staff (ver abajo) | Mostrar lista de comandos |
Flags de start
| Flag | Descripción |
|---|---|
--target=all | Todos los conectados (predeterminado) |
--target=group | Solo jugadores que coincidan con --groups |
--target=party | Solo los miembros de tu party actual (snapshot tomado al inicio; requiere un plugin de party como PartyPro) |
--groups=VIP,hytale:Admin | Nombres de grupo o nodos de permiso separados por comas |
--label=... | Nombre mostrado en transmisiones y estado |
--world=... | Aplicar boost solo en ese mundo (nombre o cadena uuid) |
--id=... | Id del boost para stop/status (predeterminado: global) |
Ejemplos
/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 administrador
Ejecuta /eventboost gui (requiere eventbooster.admin.start para abrir, crear boosts e iniciar presets; eventbooster.admin.stop para detener boosts; eventbooster.admin.reload para guardar presets y horarios desde el panel).
| Pantalla | Acciones |
|---|---|
| Dashboard | Presets: New preset, por fila Start (un clic), Edit, Del. Horarios: New schedule, por fila On/Off, Edit, Del. Boosts activos: New boost, Refresh, Stop all, Close; por fila Edit, Stop. Historial reciente: lista de solo lectura de los últimos boosts iniciados, detenidos y expirados (en memoria, sesión actual). Las listas largas se desplazan dentro del panel; los botones del pie siguen visibles. |
| Formulario nuevo / editar boost | Presets de multiplicador (1.5x, 2x, 3x, 5x) o personalizado; presets de duración (permanente, 30m, 1h, 2h) o personalizado (0 = permanente). Objetivo: todos conectados o lista de grupo/permiso. Etiqueta, id de boost (solo nuevo) y filtro de mundo opcionales. Save usa las mismas reglas que /eventboost start. Edit reemplaza el boost seleccionado (mismo id). |
| Formulario nuevo / editar preset | Campos de plantilla: id, nombre visible, multiplicador, duración (0 = permanente), boost id, etiqueta, filtro de mundo, modo de objetivo (ALL / GROUP), grupos. Save escribe en presets[] (requiere permiso de reload). |
| Formulario nuevo / editar horario | Id del horario, preset vinculado, boost id opcional, día de la semana (lunes=1 … domingo=7), hora/minuto inicio y fin, enabled. Save escribe en schedules[] (requiere permiso de reload). |
Los valores predeterminados del formulario de la GUI para nuevos boosts provienen de defaultMultiplier y defaultDurationMinutes en la configuración.
Presets
Los presets son plantillas de evento guardadas en presets[] dentro de config.json: multiplicador, duración, etiqueta, boost id, modo de objetivo, grupos y filtro de mundo opcional.
- GUI: sección Presets en el panel, o edita
config.jsondirectamente - Comandos:
/eventboost preset list,/eventboost preset start <id> - Permisos:
eventbooster.admin.startpara iniciar;eventbooster.admin.reloadpara crear, editar o eliminar presets en la GUI - Valores de una instalación nueva:
weekend(2x global) yvip(grupoVIP). Se conservan las entradas válidas existentes y las listas de presets vacías de forma intencional.
Los presets admiten ALL o GROUP. Los objetivos desconocidos y presets PARTY se rechazan en lugar de convertirse en eventos globales; inicia eventos de party con /eventboost start --target=party y los argumentos obligatorios de multiplicador y duración.
Iniciar un preset usa la misma validación, transmisiones, apilamiento e integraciones que /eventboost start.
Horarios semanales
Los horarios inician y detienen boosts automáticamente en ventanas semanales. Cada entrada en schedules[] referencia un presetId:
| Campo | Descripción |
|---|---|
id | Id único del horario |
enabled | Si es false, se ignora la fila |
presetId | Preset al abrir la ventana |
boostId | Opcional: sustituye el boost id del preset |
dayOfWeek | Día ISO: lunes=1 … domingo=7 |
startHour, startMinute | Inicio de ventana (zona del horario) |
endHour, endMinute | Fin de ventana (el boost se detiene al cerrar) |
Opciones globales:
| Opción | Predeterminado | Descripción |
|---|---|---|
schedulesEnabled | true | Interruptor general del servicio de horarios |
scheduleTimezone | "" | Id IANA (p. ej. Europe/Lisbon). Vacío = zona predeterminada de la JVM |
- GUI: sección Schedules en el panel; On/Off alterna
enabled - Comando:
/eventboost preset scheduleslista filas con la zona resuelta - Permisos:
eventbooster.admin.reloadpara crear, editar, eliminar o alternar horarios en la GUI
El servicio comprueba cada 15 segundos. Las ventanas nocturnas pertenecen al día de inicio, incluso del domingo al lunes, en scheduleTimezone. El evento termina en el plazo exacto de la ventana, sin reiniciarse repetidamente según la duración del preset.
El override, el inicio y la parada usan el mismo ID de boost. Los horarios que comparten un ID se consideran por orden de ID del horario. Un evento manual que ocupa ese ID se conserva y un horario no puede detener su reemplazo manual. Detener el evento manualmente marca esa ventana como atendida, incluso tras reiniciar; no vuelve en la siguiente comprobación. El panel muestra el próximo inicio o el final actual y la zona horaria.
Webhook de Discord (opcional)
Publica avisos de inicio y fin de boost en un webhook de canal de Discord. Configura solo en config.json (la URL es secreta y no aparece en la GUI de administrador).
| Opción | Predeterminado | Descripción |
|---|---|---|
discordWebhookEnabled | false | Activar envíos al webhook |
discordWebhookUrl | "" | URL HTTPS completa desde la configuración del canal en Discord |
discordNotifyOnStart | true | Avisar en inicios manuales o desde la GUI |
discordNotifyOnEnd | true | Avisar cuando termina un boost |
discordNotifyOnSchedule | true | Avisar cuando un horario inicia un boost |
discordUseEmbed | true | Embeds en lugar de texto plano |
discordMention | @everyone | Línea de ping en cada mensaje |
discordStartFormat | (ver config) | Placeholders: {label}, {duration}, {multiplier}, {target}, {staff} |
discordEndFormat | (ver config) | Placeholders: {label}, {target} |
discordScheduleStartFormat | (ver config) | Placeholders: {schedule}, {label}, {duration}, {multiplier}, {target} |
Valores de discordMention: @everyone, @here, <@&ROLE_ID> (rol), <@USER_ID> (usuario) o none para desactivar pings.
Requisitos:
- La URL debe usar HTTPS y apuntar a
discord.com(odiscordapp.com) - Guardar presets u horarios desde la GUI no borra una URL de webhook existente en disco si la copia en memoria está vacía
Objetivo del boost
EventBooster usa los permisos existentes de Hytale de tu servidor. No requiere un plugin de rangos separado.
Un jugador recibe un boost de grupo si:
- Está en un grupo listado (
PermissionsModule/permissions.json), o - Tiene un nodo de permiso listado
Si --groups está definido sin --target=group, el mod lo trata automáticamente como boost de grupo.
Objetivo por party (--target=party) da boost a los miembros de la party actual de quien ejecuta el comando. Los miembros se resuelven una vez, al inicio, desde un plugin de party instalado (PartyPro) y se guardan como lista fija; quien entra o sale de la party después no se añade ni se quita del boost activo. Si ningún plugin de party expone sus miembros, el comando avisa de que el objetivo por party no está disponible.
El filtro por mundo (--world=...) puede combinarse con boosts globales, de grupo o de party: solo los jugadores en ese nombre de mundo obtienen el multiplicador.
Permisos
Solo el staff con los nodos correctos puede iniciar, detener o recargar boosts. Los jugadores no necesitan permisos para recibir XP de un boost activo.
| Permiso | Descripción |
|---|---|
eventbooster.admin.start | Iniciar boosts, iniciar presets y abrir la GUI de administrador |
eventbooster.admin.stop | Detener eventos de boost (incluido desde la GUI) |
eventbooster.admin.reload | Recargar configuración; guardar presets y horarios desde la GUI |
eventbooster.admin | Todas las acciones de administrador (nodo padre) |
eventbooster.status | Ver boosts activos |
/eventboost help es solo para staff: los jugadores necesitan eventbooster.status, eventbooster.admin o cualquier nodo eventbooster.admin.*. Los jugadores normales sin esos permisos no pueden ejecutar /eb help ni /eventboost help.
Para permitir que todos lean la ayuda (opcional), establece "allowPublicHelp": true en config.json.
Configuración rápida con Hytale /perm
/perm group add OP eventbooster.admin
O nodos individuales:
/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
Ejemplo permissions.json
{
"groups": {
"OP": {
"permissions": [
"eventbooster.admin"
]
},
"VIP": {
"permissions": []
}
}
}
Coloca a los jugadores VIP en el grupo VIP en los permisos de usuario de tu guardado, luego ejecuta:
/eventboost start 2 120 --target=group --groups=VIP
Configuración
Archivo de configuración: mods/durkz_EventBooster/config/config.json (configVersion 4 en instalaciones nuevas)
Límites de boost
| Opción | Predeterminado | Descripción |
|---|---|---|
minMultiplier | 1.0 | Multiplicador de boost mínimo permitido |
maxMultiplier | 10.0 | Multiplicador de boost máximo permitido |
maxCombinedMultiplier | 10.0 | Tope cuando varios boosts se apilan |
defaultDurationMinutes | 60 | Duración predeterminada en la GUI de administrador; usa 0 en comandos o campo personalizado de la GUI para permanente |
allowConsoleCommands | false | Permitir que la consola del servidor ejecute comandos de administrador sin jugador |
allowPublicHelp | false | Si es true, cualquier jugador puede usar /eventboost help |
defaultMultiplier | 2.0 | Multiplicador predeterminado en la GUI de administrador |
maxDurationMinutes | 10080 | Duración máxima del evento (minutos) |
historySize | 20 | Cantidad de eventos recientes guardados para el Historial reciente del dashboard (en memoria, sesión actual) |
persistActiveBoosts | true | Conservar eventos activos y sus plazos originales tras reinicios |
checkForUpdates | true | Avisar al staff de versiones nuevas con un enlace al proyecto de CurseForge |
Mensajes
| Opción | Predeterminado | Descripción |
|---|---|---|
broadcastOnStart | true | Transmitir cuando inicia un boost |
broadcastOnEnd | true | Transmitir cuando termina un boost |
notifyPlayerOnJoin | true | Recordar a jugadores elegibles al unirse |
reminderIntervalMinutes | 15 | Intervalo de recordatorio periódico (0 = desactivado) |
reminderBroadcastFormat | (ver config) | Marcadores: {label}, {remaining}, {target} |
startBroadcastFormat | (ver config) | Marcadores: {label}, {duration}, {multiplier}, {target} |
endBroadcastFormat | (ver config) | Marcadores: {label}, {target} |
joinNoticeFormat | (ver config) | Marcadores: {label}, {remaining}, {target} |
statusLineFormat | (ver config) | Marcadores: {id}, {label}, {multiplier}, {remaining}, {target} |
partyProHudFormat | BOOST {multiplier}x | Texto HUD de PartyPro cuando el boost aplica a ese jugador |
Los mensajes se envían solo a jugadores elegibles para ese boost.
Integraciones
| Opción | Predeterminado | Descripción |
|---|---|---|
integrationRpgLeveling | true | Multiplica XP de RPG Leveling mientras el boost está activo |
integrationVkCraft | true | Activar el bridge compatible de VKCraft cuando su API esté disponible |
integrationPartyProHud | true | Indicador de PartyPro por jugador; desactivarlo mantiene la resolución de miembros de la party |
Presets y horarios
| Clave | Predeterminado | Descripción |
|---|---|---|
presets[] | weekend, vip | Array de objetos BoostEventPreset (ver Presets) |
schedules[] | [] | Array de objetos BoostSchedule (ver Horarios semanales) |
schedulesEnabled | true | Activar servicio automático de horarios |
scheduleTimezone | "" | Zona horaria IANA para las ventanas |
Ejemplo de preset:
{
"id": "weekend",
"displayName": "Weekend 2x",
"multiplier": 2.0,
"durationMinutes": 120,
"boostId": "weekend",
"label": "Weekend XP",
"targetMode": "ALL",
"targetGroups": []
}
Webhook de Discord
Consulta Webhook de Discord arriba para discordWebhookEnabled, discordWebhookUrl, toggles de aviso, discordMention, embed y cadenas de formato.
Integraciones opcionales
| Mod | Rol |
|---|---|
| RPG Leveling and Stats | Multiplica XP de RPG Leveling mientras el boost está activo (recomendado) |
| VKCraft | Bridge opcional para APIs compatibles de VKCraft; los objetivos disponibles dependen de la API expuesta |
| PartyPro | Texto HUD para jugadores elegibles, y --target=party |
HyRPGCore no es compatible en este lanzamiento. Ningún mod de nivelación es obligatorio. Sin uno, los comandos, temporizadores y transmisiones siguen funcionando, pero la XP en el juego no cambiará.
Comprueba el log del servidor al iniciar:
EventBooster started. Active integrations: RPGLeveling, ...
Integraciones y límites
RPG Leveling and Stats proporciona XP por jugador. PartyPro proporciona los miembros de la party y un indicador HUD opcional; no es un hook de XP. Desactivar integrationPartyProHud mantiene disponible el objetivo por party. VKCraft necesita una API compatible; un hook solo global no puede filtrar por mundo, grupo o party. Los inicios dirigidos se rechazan cuando ese es el único hook de XP activo.
Los eventos de party capturan sus miembros al empezar. Los presets admiten ALL y GROUP, no PARTY. El mundo actual del jugador determina el XP, los avisos, el recuento de elegibles conectados y el indicador de PartyPro.
Recomendado
- Instala RPG Leveling and Stats junto con EventBooster para multiplicación fiable de XP
- Concede
eventbooster.adminal staff; guardar presets u horarios en la GUI requiereeventbooster.admin.reload - El log debe mostrar
EventBooster started. Active integrations: ...al arrancar
Verificar boosts de XP
- Inicia el servidor con EventBooster + un mod de nivelación (RPG Leveling recomendado)
- Prueba global: ejecuta
/eventboost start 10 10. Todos los jugadores deberían ganar XP potenciada. - Prueba de grupo: ejecuta
/eventboost start 10 10 --target=group --groups=VIP. Solo los jugadores del grupo VIP reciben boost. - Ejecuta
/eventboost statusy confirma[target]en la línea - Ejecuta
/eventboost stopo espera a que expire. Los jugadores elegibles deberían ver la transmisión de fin cuando el boost termina realmente.
API pública
if (EventBoosterAPI.isAvailable()) {
double multiplier = EventBoosterAPI.get()
.getExperienceMultiplier(playerUuid, worldName);
}
Usa la sobrecarga con UUID para resultados correctos cuando hay boosts de grupo activos.
Notas
/eventboost reloadrecarga la configuración y desconecta/reconecta las integraciones sin duplicar listeners de XP de RPG Leveling. Una recarga rechazada conserva los últimos ajustes válidos. Reabre los editores existentes tras una recarga correcta.
Licencia
MIT License. Copyright (c) 2026 DurkzPRG