Módulo Seguridad¶
El módulo Seguridad proporciona autenticación BCrypt, protección anti-bot con CAPTCHA, gestión de sesiones, anti-duplicación y herramientas anti-lag — diseñado para servidores offline/crackeados.
Sub-sistemas¶
| Sub-sistema | Descripción |
|---|---|
| Auth | Registro/inicio de sesión con contraseñas BCrypt, sesiones persistentes |
| Anti-Bot | Limitación de tasa por IP, CAPTCHA en mapa, lista negra de nombres, detección de VPN |
| Anti-Dupe | Detecta y previene exploits comunes de duplicación de ítems |
| Anti-Lag | Limpiador de mundo programado, apilador de entidades |
Autenticación¶
Los jugadores en servidores crackeados deben /register en el primer acceso y /login en los accesos siguientes. Las cuentas premium son verificadas mediante la API de Mojang y omiten la autenticación.
Comandos¶
| Comando | Uso | Permiso |
|---|---|---|
/register <contraseña> <confirmar> |
Registrar una cuenta | (todos) |
/login <contraseña> |
Iniciar sesión | (todos) |
/changepassword <antigua> <nueva> |
Cambiar contraseña | (autenticado) |
Configuración Auth (security/auth.yml)¶
storage: sqlite
session-timeout-minutes: 30 # Re-login tras 30min inactivo
persistent-session-hours: 2 # Auto-login en 2h tras última sesión
max-failed-attempts: 5 # Bloqueo tras 5 contraseñas incorrectas
lockout-minutes: 10
login-spawn:
enabled: false
Verificación Premium¶
Cuando premium-check.enabled es true, NexusPrism valida las cuentas premium mediante un proceso de dos pasos para que los jugadores crackeados no puedan hacerse pasar por cuentas de pago:
- Verificación de versión de UUID — los servidores offline asignan UUIDs versión 3 a todos los jugadores. Un jugador premium autenticado mediante FastLogin/JPremium recibe su UUID real de Mojang (versión 4). Versión 3 = crackeado, rechazado inmediatamente.
- Comparación con la API de Mojang — incluso para UUIDs versión 4, el nombre se consulta en
api.mojang.comy el UUID devuelto se compara con el UUID real del jugador. Cualquier discrepancia se marca como intento de suplantación.
Caché y Resiliencia¶
| Capa | Detalle |
|---|---|
| Caché en memoria | TTL de 24 horas; limpiado al reiniciar |
| Caché persistente SQLite | Sobrevive a reinicios — archivo: security/premium-cache.db |
| Limitador de tasa | Máx. 50 llamadas a la API de Mojang por ventana de 10 minutos |
| Backoff exponencial | Retrocede hasta 60 s en fallos repetidos de la API |
| Fallback | Usa el último resultado en caché cuando la API no está disponible |
Detección de suplantación
Si un jugador se conecta con un UUID versión 3 (offline) pero la caché indica que ese nombre posee una cuenta de Mojang, se registra una advertencia: IMPERSONATION DETECTED. El jugador aún puede entrar, pero es tratado como crackeado (debe usar /login).
Anti-Bot¶
Configuración (security/antibot.yml)¶
rate-limit:
window-seconds: 10
max-joins: 3
name-blacklist-patterns:
- "[A-Za-z]{1,3}[0-9]{5,}"
- "bot[0-9]+"
captcha:
enabled: true
timeout-seconds: 60
session-hours: 24
premium-check:
enabled: true
alt-detection:
max-accounts-per-ip: 3
Anti-Lag¶
Comandos¶
| Comando | Uso | Permiso |
|---|---|---|
/cleanworld |
Ejecutar limpieza manual del mundo | nexusprism.security.cleanworld |
Configuración (security/antilag.yml)¶
cleaner:
interval-seconds: 300
warn-seconds: 5
item-age-ticks: 6000
worlds:
- world
- world_nether
stacker:
radius: 5.0
max-stack: 50
Comandos de Staff¶
| Comando | Uso | Permiso |
|---|---|---|
/vanish |
Alternar invisibilidad (OP) | nexusprism.staff.vanish |
/invsee <jugador> |
Inspeccionar inventario (OP) | nexusprism.staff.invsee |
/spy |
Alternar espionaje de chat (OP) | nexusprism.staff.spy |
Permisos¶
| Permiso | Descripción | Predeterminado |
|---|---|---|
nexusprism.security.cleanworld |
Limpieza manual del mundo | OP |
nexusprism.staff.vanish |
Volverse invisible | OP |
nexusprism.staff.invsee |
Inspeccionar inventarios | OP |
nexusprism.staff.spy |
Modo espía de chat | OP |
Mobs con Nivel¶
Cada mob hostil que aparece en el mundo recibe automáticamente un nivel que escala según el peligro del entorno. Los mobs de mayor nivel hacen más daño, tienen más vida y dan más XP.
Tabla de Tirada de Nivel¶
Los niveles se tiran al aparecer basándose en la altura Y, dimensión y bioma. Los bonificadores se acumulan.
| Condición | Rango / Bonificador |
|---|---|
| Y > 64 (superficie) | Nv. 1–4 |
| Y ≤ 64 | Nv. 3–6 |
| Y ≤ 30 | Nv. 5–8 |
| Y ≤ 0 (subterráneo profundo) | Nv. 8–12 |
| Dimensión Nether | +3 al resultado |
| The End | +4 al resultado |
| Bioma Deep Dark | +5 al resultado |
| Luna de Sangre activa | +2 a todos los resultados |
Todos los resultados se limitan al rango [1, max-level] de la configuración.
Formato del Nombre¶
| Situación | Nombre mostrado |
|---|---|
| Apilado + con nivel | 3x [Nv.5] Zombie |
| Individual + con nivel | [Nv.5] Zombie |
| Nivel 1 (cualquier pila) | 3x Zombie (sin etiqueta de nivel) |
Fórmulas de Estadísticas¶
| Estadística | Fórmula |
|---|---|
| Daño | dañoBase × (1 + (nivel-1) × multiplicadorDañoPorNivel) × contadorPila |
| XP | xpBase × contadorPila × (1 + (nivel-1) × multiplicadorXPPorNivel) |
| Vida | Escalada por multiplicadorVidaPorNivel por nivel sobre 1 |
Configuración (security/antilag.yml)¶
leveled-mobs:
enabled: true
max-level: 20
xp-multiplier-per-level: 0.20 # +20% XP por nivel sobre 1
damage-multiplier-per-level: 0.15 # +15% daño por nivel sobre 1
health-multiplier-per-level: 0.10 # +10% vida por nivel sobre 1
Integración con Luna de Sangre
Cuando la Luna de Sangre está activa (ver el módulo Events), todas las tiradas de nivel reciben un bonificador de +2, haciendo a los mobs de superficie significativamente más peligrosos de noche.
PlaceholderAPI¶
| Placeholder | Descripción |
|---|---|
%nexusprism_authenticated% |
true si el jugador está autenticado |
%nexusprism_auth_status% |
Estado de auth legible (Autenticado, Pendiente) |