XLeaderBoards

Bienvenida

XLeaderBoards es un plugin de rankings para servidores Minecraft Spigot/Paper que permite mostrar clasificaciones diarias, semanales, mensuales y permanentes. Compatible con versiones desde 1.8 hasta 1.21.8, funciona con SQLite, MySQL o MongoDB como sistema de almacenamiento.

Ideal para servidores competitivos que buscan mostrar quiénes son los mejores jugadores en diferentes aspectos como kills, dinero, bloques minados, etc.

Requisitos

  • Servidor Spigot o Paper (1.8 - 1.21.8)

  • Java 8 o superior

  • Plugin PlaceholderAPI (Necesario para los tops)

  • Sistema de base de datos:

    • SQLite (por defecto)
    • MySQL (opcional)
    • MongoDB (opcional)

Instalación

  1. Descarga el archivo XLeaderBoards.jar.
  2. Coloca el archivo en la carpeta /plugins de tu servidor.
  3. Inicia el servidor para que se generen los archivos de configuración.
  4. Configura los tops en config.yml explicación a continuación.

Configuración

check-updates: true

Activa o desactiva la comprobación automática de nuevas versiones del plugin.

  • true: verifica si hay actualizaciones.
  • false: no realiza ninguna verificación.
tops:
  kills:
    placeholder: "%statistic_player_kills%"
    name: "Kills"

Define las categorías de leaderboard que se mostrarán.

  • kills: identificador único de esta categoría.

    • placeholder: el valor que se usará para contar en la tabla, compatible con PlaceholderAPI.
    • name: el nombre que se mostrará al usuario en los mensajes de recompensa.

Puedes crear la cantidad de categorias que quieras, solo copiando y pegando este formato.

databaseId: survival_top

Identificador único para diferenciar las estadísticas por servidor. Útil si usas la misma base de datos para múltiples servidores.

debug: false

Activa o desactiva los mensajes de depuración en consola.

optimizations:
  max-bulk-size: 1000
  cached-top-entries: 10
  ticks-between-updates: 600
  max-reset-bulk-size: 5000
  save-top-on-update: false

Configuraciones para optimizar el rendimiento:

  • max-bulk-size: Número máximo de registros a procesar por lote en MongoDB.
  • cached-top-entries: Número de entradas del top que se mantienen en caché.
  • ticks-between-updates: Intervalos de actualización de tops en ticks (1 segundo = 20 ticks).
  • max-reset-bulk-size: Tamaño máximo de lote para reiniciar tops temporales.
  • save-top-on-update: Guarda automáticamente el top tras cada actualización. No recomendable en servidores con muchos jugadores.
topUpdates:
  daily:
    minutes: 10
  weekly:
    minutes: 30
  monthly:
    hours: 3
  permanent:
    hours: 6

Frecuencia con la que se actualiza cada tipo de leaderboard:

  • daily: Cada cuántos minutos se actualiza el top diario.
  • weekly: Minutos entre actualizaciones del top semanal.
  • monthly: Horas entre actualizaciones del top mensual.
  • permanent: Horas entre actualizaciones del top permanente.

Diario - Recomendaciones por cantidad de registros.

Registros activosIntervalo recomendadoMotivo
1,000 o menos5-10 minutosCarga muy ligera, ideal para estadísticas muy dinámicas.
10,000 o menos15-30 minutosEquilibrio entre frescura de datos y rendimiento.
100,000 o más30-60 minutosMuchos datos diarios pueden saturar el servidor si se actualiza con frecuencia.

Si notas que el top diario tarda mucho en cargar, incrementa el max-bulk-size.

Semanal - Recomendaciones por cantidad de registros.

Registros activosIntervalo recomendadoMotivo
10,000 o menos10-20 minutosBajo volumen acumulado semanalmente.
100,000 o menos20-30 minutosSe empieza a acumular más historial, requiere más tiempo de procesamiento.
500,000 o más30-60 minutosActualizar cada poco tiempo puede sobrecargar si tienes muchos datos históricos.

No necesitas actualizar el top semanal constantemente, solo asegúrate que el cambio se vea reflejado antes de cada reinicio semanal.

Mensual - Recomendaciones por cantidad de registros.

Registros activosIntervalo recomendadoMotivo
100,000 o menos1-2 horasCarga mensual ligera, sin problemas de rendimiento.
500,000 o menos2-3 horasVolumen considerable, pero aún manejable en servidores optimizados.
1 millon o mas4-6 horasEvita impactos de rendimiento si se actualiza con demasiada frecuencia.

El top mensual no requiere tanta precisión. Concéntrate en mantenerlo estable en lugar de en tiempo real.

Permanente - Recomendaciones por cantidad de registros.

Registros activosIntervalo recomendadoMotivo
1 millon o menos3-6 horasPocos datos acumulados, bajo impacto.
4 millones6-12 horasPuede tardar más en procesarse, mejor no hacerlo tan seguido.
4 millones o mas12-24 horasEste top acumula todo el historial, actualizaciones frecuentes pueden saturar CPU/RAM.

El top permanente tarda en actualizarse para no afectar al rendimiento de tu servidor, el tiempo no es excesivo sera 1 minuto por cada millon de jugadores pero si tienes muchos tipos de tops multiplica esa cantidad, puede ser molesto pero evita que el servidor se caiga.

databases:
  type: "h2"
  h2:
    database: XLeaderBoards
  mysql:
    host: localhost
    port: 3306
    database: XLeaderBoards
    user: admin
    password: 123456
  mongodb:
    host: localhost
    port: 27017
    database: leaderboards
    user: root
    password: root

Configuración del sistema de almacenamiento:

  • type: tipo de base de datos a usar: h2, mysql o mongodb.

  • Para cada tipo, define los parámetros necesarios para la conexión:

    • h2: base de datos local.
    • mysql: host, puerto, base de datos, usuario y contraseña.
    • mongodb: configuración similar a MySQL, pero para Mongo.

Comandos y permisos

Comandos principales

ComandoDescripciónPermiso
/xlb gettop <periodo> <tipo>Obtiene el top en el chat.xleaderboards.admin
/xlb forceupdate <periodo>Fuerza la actualizacion del tipo de tiempo de tops.xleaderboards.admin
/xlb forcereset <periodo>Fuerza el reinicio de un tipo de tiempo de tops.xleaderboards.admin
/xlb reloadRecarga el plugin.xleaderboards.admin

Tipos disponibles

  • kills
  • y todos los tipos que crees

Periodos disponibles

  • daily
  • weekly
  • monthly
  • permanent

Integración con PlaceholderAPI

Si tienes PlaceholderAPI instalado, puedes usar placeholders en hologramas, scoreboards, tablists, etc.

Ejemplo de placeholders

%xleaderboard_top_coins;daily;top_name;1%
%xleaderboard_top_coins;weekly;top_name;2%
%xleaderboard_top_coins;monthly;top_name;3%
%xleaderboard_top_coins;permanent;top_name;4%

%xleaderboard_top_coins;daily;top_value;1%
%xleaderboard_top_coins;weekly;top_value;2%
%xleaderboard_top_coins;monthly;top_value;3%
%xleaderboard_top_coins;permanent;top_value;4%

%xleaderboard_ranking_daily_coins%
%xleaderboard_ranking_weekly_coins%
%xleaderboard_ranking_monthly_coins%
%xleaderboard_ranking_permanent_coins%

%xleaderboard_amount_daily_coins%
%xleaderboard_amount_weekly_coins%
%xleaderboard_amount_monthly_coins%
%xleaderboard_amount_permanent_coins%

Preguntas frecuentes

¿Puedo crear mis propios tipos de leaderboard?

Sí, puedes registrarlos desde otro plugin usando la API o solicitarlo en futuras versiones.

¿Se puede limitar el leaderboard a un mundo específico?

Por ahora no, pero se planea añadirlo como opción en próximas versiones.

¿Puedo resetear los datos?

Sí, puedes borrar manualmente el archivo SQLite o truncar las tablas en MySQL. O usar el comando mencionado arriba.

Notas finales

  • Este plugin se encuentra en constante desarrollo.
  • Si encuentras un bug, repórtalo con logs y pasos para reproducirlo. Discord
  • ¡Gracias por usar XLeaderBoards!