CASE 02
CombatForge
Motor de combate e XP por nível para Paper 1.21+. Anti-farm por janela deslizante, ranking global, API pública com evento cancelável e três idiomas.
3 idiomas · PT · EN · ES
Contexto
Servidores de RPG no Paper dependem de progressão por nível para dar sentido ao combate.
As opções pagas amarram o servidor a um ecossistema; as gratuitas costumam ter fórmula fixa e nenhuma proteção real contra farm.
A staff queria ajustar curva e limites sem recompilar nada.
Meu papel
Implementei as fórmulas de dano corpo a corpo e à distância, independentes e configuráveis.
Modelei o XP pela relação entre nível do mob e nível do jogador, com janela deslizante anti-farm e penalidade por sobrenível.
Criei ranking de abates e de XP de todos os tempos, com placeholders para scoreboard.
Integrei opcionalmente com MMOCore, MythicMobs, LevelledMobs e PlaceholderAPI.
Publiquei API com CombatXpGainEvent cancelável e traduzi tudo em PT, EN e ES.
Decisões técnicas
Janela deslizante em vez de cooldown fixo
Cooldown pune quem joga rápido; janela deslizante pune quem repete o mesmo alvo em loop. O jogador legítimo nunca sente a diferença.
Evento cancelável como contrato público
Outros plugins precisam interferir no XP — boost de evento, classe de RPG, penalidade de zona. Um evento cancelável evita fork e mantém o núcleo pequeno.
Integração opcional, nunca obrigatória
Com soft-depend, se o plugin de terceiro não estiver instalado o CombatForge sobe igual. Integração não pode ser pré-requisito de boot.
Três idiomas desde a primeira versão
Tradução tardia vira retrofit em toda string do projeto. Fazer desde o início custou horas; fazer depois custaria dias.
Resultado
Licença MIT e versão 2.0.0 publicada no GitHub.
API pública documentada, com evento cancelável usado por terceiros.
Curva, limites e mensagens em YAML, sem recompilar.
Stack
- Java
- Paper 1.21+
- MIT
Galeria
Próximo case
03 · minecraft-statusbot →