WarriorClasses — Sistema de Clases & Combate Táctico
WarriorClasses es un motor de combate RPG nativo y liviano para servidores Minecraft Purpur/Paper. Integra 5 clases especializadas, 35 habilidades, pericia de armas con reducción dinámica de cooldowns, mitigación de daño vanilla (Swing Softening), estados alterados (Sangrado, Herida Profunda) y un Motor de Amenaza Universal (Threat Engine) autónomo basado en la API nativa de Paper 1.21.1.
1. Arquitectura & Rendimiento
Diseño thread-safe, 100% dirigido por eventos y sin bucles globales pesados.
Sistema de Pasivas Zero-Lag
Sin bucles globales por tick verificando jugadores. Todas las pasivas y estados alterados son dirigidos por eventos (EntityDamageEvent, EntityDeathEvent) y un único task por segundo para el gestor de estados.
I/O Asíncrono de Perfiles
Perfiles, historial de maestría y configuraciones se gestionan de forma asíncrona mediante ConcurrentHashMap y guardado I/O no bloqueante, protegiendo el TPS del hilo principal (Main Thread).
Experiencia Móvil / Bedrock
Elimina la necesidad de escribir comandos en consolas y celulares. El Selector de Habilidades (Brújula) rota con un clic y dispara con otro, complementado con el Compendio Rápido /fl (GUI de 27 slots).
2. Instalación y Despliegue
Pasos para desplegar en tu servidor Purpur o Paper.
-
1
Requisitos del Entorno Servidor Purpur 1.21.11 o Paper 1.21.1 ejecutando sobre Java 21.
-
2
Colocar el Plugin Copia
WarriorClasses.jardentro de la carpeta/plugins/del servidor. -
3
Dependencias Opcionales Instala PlaceholderAPI si deseas proyectar variables de clase en scoreboards, TAB o chat (el plugin opera de forma autónoma sin dependencias externas obligatorias).
-
4
Iniciar el Servidor Se generará automáticamente la carpeta
plugins/WarriorClasses/conmessages.ymly perfiles enuserdata/.
3. Matriz de Clases & Habilidades
Parámetros exactos, fórmulas, cooldowns y efectos según messages.yml.
4. Mecánicas Avanzadas de Combate
Fórmulas implementadas en WeaponMechanicsManager.java y CombatListener.java.
1. Pericia de Arma (0 a 400 pts)
Escala el daño físico base de un 80% a un 160% y reduce los tiempos de recarga de habilidades activas hasta un 40%.
- • Cap por Tier: Tier 1 = 100 pts, Tier 2 = 200 pts, Tier 3 = 400 pts.
- • Reducción de Cooldowns:
calculateDynamicCooldown()aplica hasta -40% al CD base (a 400 de pericia, 10s baja a 6s exactos).
2. Swing Softening (Mitigación Vanilla)
El spam-click en Vanilla castiga severamente el daño (hasta -80%). WarriorClasses suaviza esta penalización en proporción a la pericia acumulada por el guerrero.
3. Golpe Rozado (Glancing Blow)
Atacar a un mob o jugador de mayor nivel activa un Golpe Rozado (10% a 55% según diferencia de nivel), reduciendo el daño saliente en un 22% plano.
4. Estados Alterados Personalizados
5. Threat Engine & Sistema de Progresión
Evaluación de amenaza en tiempo real, calibración del motor y avance por Tiers.
Fórmula de Amenaza (Dificultad Dinámica):
Escanea atributos nativos de Paper API (vida máxima, daño base, armadura y efectos poción activos) al iniciar el combate, categorizando el objetivo automáticamente y asignando los Puntos de Amenaza ganados.
Evolución de Clase, Ritmo y Topes Diarios (Modo Calibración)
La evolución entre Tiers (Tier 1 → Tier 2 → Tier 3) no depende de compras de monedas ni de matar enemigos comunes: está gobernada directamente por el Motor de Amenaza mediante el combate contra enemigos de élite y monstruos de alto riesgo.
- Tier 1 → Tier 2: 25.000 Puntos de Amenaza + 500 XP de Rol + 1 Desafío Vencido (calabozo/mob ≥150 amenaza).
- Tier 2 → Tier 3: 62.500 Puntos de Amenaza + 2.000 XP de Rol + 5 Desafíos Vencidos (o Trofeo de Jefe ≥400 amenaza).
6. Comandos & Permisos
Comandos oficiales y matriz completa de nodos de permisos declarados en plugin.yml.
Comandos de Jugador
Default: TodosComandos de Administración
Default: OPMatriz de Permisos (plugin.yml)
Soporte Multilingüe Dinámico en Comandos
Los comandos /class y /skill reconocen automáticamente dos formas de entrada en el juego:
/class Bastion, /skill Shield Wall o el ID técnico /skill shield-wall).
display_name (en clases) o alias (en habilidades) a cualquier idioma (español, portugués, etc.), el motor procesará el comando en ese idioma de forma automática al guardar o ejecutar /warrior reload.
7. Expansión PlaceholderAPI
Variables registradas en WarriorClassesExpansion.java para Tablist, Chat y Scoreboard.
WarriorClassesExpansion se autoregistra automáticamente en el motor de PlaceholderAPI al arrancar el servidor. Si PlaceholderAPI se instala, actualiza o recarga con el servidor ya iniciado, simplemente ejecuta /papi reload para sincronizar los placeholders.
8. Archivos de Configuración
Ajustes de persistencia, multiplicadores de XP, conmutadores de combate y localización.
Persistencia y Rendimiento
-
storage.auto-save-interval-minutes: Controla la frecuencia (en minutos) con la que los perfiles almacenados enuserdata/se sincronizan en el disco. -
storage.async-io: Mantiene el guardado en un hilo secundario (asíncrono) para evitar micro-tirones (stuttering) y proteger los 20 TPS del hilo principal (Main Thread). -
storage.debug-mode: Activa trazas detalladas de combate y eventos en la consola para administradores.
Progresión y Pericia de Arma
-
progression.role-xp-multiplier: Factor multiplicador para la XP de rol recibida por bajas de monstruos. -
progression.expertise-per-hit: Puntos sumados a la pericia por golpe acertado (sujeto a cooldown interno anti-spam). -
progression.expertise-caps: Topes máximos de pericia por Tier (Tier 1: 100, Tier 2: 200, Tier 3: 400 pts).
Conmutadores y Módulos de Combate
-
combat-mechanics.swing-softening: Mitiga dinámicamente hasta un 50% de la penalización vanilla por golpear antes de recargar el arma según tu pericia. -
combat-mechanics.glancing-blow: Calcula si un golpe roza (-22%de daño) frente a mobs de amenaza muy superior (probabilidad entre 10% y 55%). -
combat-mechanics.status-effects: Configura el tick de Sangrado (0.8 HP/s) y la reducción de curación por Herida Profunda (-50%).
Threat Engine Universal
-
threat-engine.enabled: Habilita el cálculo algorítmico de amenaza sobre cualquier entidad sin depender de plugins externos. -
thresholds.moderate (15.0): Puntos requeridos para contar como baja meritoria en la evolución de Tier 1 a Tier 2. -
thresholds.epic (40.0): Puntos de amenaza para categorizar jefes de élite y calabozos requeridos en la ascensión a Tier 3.
9. Calculadora Interactiva de Cooldowns
Simula cómo la pericia reduce el tiempo de recarga de tus habilidades.
10. API para Desarrolladores & Integración
Librería pública independiente distribuida vía JitPack para desarrolladores de plugins.
WarriorClasses cuenta con una API pública liviana y desacoplada (warriorclasses-api) alojada en GitHub y distribuida mediante JitPack.
Esta librería permite a desarrolladores de plugins de terceros consultar perfiles de jugadores, escuchar eventos clave de progresión e integrarse con las mecánicas de combate sin requerir acceso al motor interno ni generar dependencias rígidas.
1. Añadir la Dependencia
Agrega el repositorio de JitPack y las coordenadas de la API en tu gestor de proyectos (Maven o Gradle):
2. Descriptor del Plugin (plugin.yml)
Para garantizar que tu plugin cargue después de WarriorClasses, agrégalo a tu lista de softdepend o depend:
3. Ejemplos de Uso: Consultar Perfiles de Jugador
Puedes consultar el perfil de un jugador usando WarriorClassesAPI.getProfile(Player). Siempre realiza una comprobación de nulidad (null check) por si el jugador aún no ha seleccionado clase o sus datos están cargando:
4. Escuchar Eventos Personalizados de Bukkit
La API expone eventos de Bukkit que se disparan en momentos clave de la progresión:
Disparado cuando un jugador selecciona, cambia o resetea su clase. Brinda acceso a la clase anterior y a la nueva vocación.
Disparado cuando un jugador asciende/evoluciona al siguiente Tier de clase (Tier 1 → 2 o Tier 2 → 3).
Disparado en combate cuando un jugador genera puntos de amenaza contra entidades compatibles, exponiendo la ganancia y el nuevo total.
Código Fuente & Repositorio Oficial
Consulta la documentación completa de interfaces, Javadocs y releases en GitHub bajo licencia de código abierto.