AegisPunish v1.0.5
ESC

AegisPunish Docs

A mais avançada suíte corporativa de moderação, auditoria e punições do ecossistema Minecraft. Construída para alto desempenho em Paper, Folia, Velocity e BungeeCord.

Paper / Folia / Purpur 1.16 - 1.21+ Velocity & BungeeCord Proxies SQLite & MySQL / MariaDB Java 17+ (Java 21 Ready) SkinsRestorer & Geyser / Floodgate

Visão Geral #

O AegisPunish foi projetado a partir do zero para suprir as demandas críticas de servidores modernos e grandes redes de Minecraft. Ao contrário de soluções legadas e pesadas, o AegisPunish conta com um motor de cache em memória thread-safe e I/O assíncrono para garantir impacto zero no TPS do servidor.

💡
DICA DE ARQUITETURA

Em redes com proxy (Velocity ou BungeeCord), o AegisPunish pode rodar diretamente na ponta dos proxies ou sincronizado com múltiplos servidores Paper/Folia compartilhando uma base de dados MySQL.

Instalação & Requisitos #

Para utilizar o AegisPunish em sua rede ou servidor, verifique os requisitos mínimos:

  • Java Runtime: Java 17 ou superior (testado e otimizado para Java 21 LTS).
  • Plataforma: Paper, Folia, Purpur (1.16 até 1.21+), Velocity 3.3+, ou BungeeCord / Waterfall.
  • Banco de Dados: SQLite local (nativo, sem configuração) ou MySQL / MariaDB (para redes).

Passo a Passo de Instalação

  1. Baixe o .jar correspondente à sua plataforma no Modrinth, SpigotMC ou GitHub Releases.
  2. Coloque o arquivo dentro da pasta plugins/ do servidor ou proxy.
  3. Inicie o servidor para gerar os arquivos padrão em plugins/AegisPunish/.
  4. Ajuste o config.yml (adicione seu webhook do Discord ou credenciais MySQL se aplicável).
  5. Execute /aegispunish reload ou reinicie o servidor.
ℹ️
SUPORTE A FOLIA

O AegisPunish possui detecção automática de ambiente Folia através do FoliaLib. Tarefas agendadas e eventos de entrada respeitam os limites de tick de regiões isoladas sem causar crashes.

Plataformas & Integrações #

Plataforma / Módulo Compatibilidade Observações
Paper / Purpur 100% Nativo Suporte a MiniMessage, Hex colors, PlaceholderAPI e CommandMap injection.
Folia 100% Suportado Assíncrono e compatível com multithreading por regiões de chunks.
Velocity Proxy 100% Nativo Bloqueio antes do encaminhamento aos backends com mensagens ricas Kyori.
BungeeCord / Waterfall 100% Nativo Compatível com proxies clássicos e controle em rede.
Geyser & Floodgate Detectado Auto Punição e busca unificadas para jogadores de Bedrock (prefixo '.' ou '*' suportados).
SkinsRestorer Detectado Auto Exibição da cabeça / skin real em menus gráficos (GUIs) e notificações.

Punições Completas #

O AegisPunish suporta múltiplos tipos de sanções disciplinares, todas com suporte a motivos customizados e especificações de tempo simplificadas:

Sintaxe de Duração
s = segundos (ex: 30s)
m = minutos  (ex: 15m)
h = horas    (ex: 2h)
d = dias     (ex: 7d)
w = semanas  (ex: 2w)
mo = meses   (ex: 1mo)
y = anos     (ex: 1y)

Exemplo: /tempban Steve 3d12h Uso de Trapaças

Tipos de Ação

  • /ban & /tempban: Impede a entrada no servidor ou rede permanentemente ou por tempo determinado.
  • /ipban & /tempipban: Pune tanto o UUID do jogador quanto o endereço de IP associado, impedindo a criação de contas alternativas.
  • /mute & /tempmute: Bloqueia mensagens no chat global, local e comandos restritos configuráveis.
  • /kick: Desconecta imediatamente o jogador com aviso sonoro e tela de punição.
  • /warn: Registra avisos formais. Configuração para acionar banimento automático após atingir N avisos acumulados.

Histórico & Rollbacks #

Nenhuma punição é perdida ou deletada permanentemente sem rastreio. Quando uma punição é revogada com /unban ou /unmute, seu estado no banco de dados é alterado para inativo e o operador que realizou a anulação fica registrado.

⚠️
PROTEÇÃO CONTRA ABUSO DE STAFF (/ROLLBACKSTAFF)

Caso uma conta de staff seja comprometida ou um membro cometa abuso aplicando banimentos em massa, administradores podem executar /rollbackstaff <staff> <tempo> para anular todas as ações aplicadas por ele naquele período em uma única transação atômica!

Exemplo de Rollback
# Anula todas as punições aplicadas por StaffAbusivo nas últimas 2 horas
/rollbackstaff StaffAbusivo 2h

Hierarquia de Staff (Anti-Abuse) #

O sistema de hierarquia baseado em peso protege os cargos mais altos contra punições aplicadas por cargos inferiores ou disputas internas.

config.yml • staff-hierarchy
staff-hierarchy:
  enabled: true
  weights:
    owner: 100
    admin: 80
    mod: 50
    helper: 20

# Regras de negócio:
# 1. Um membro com peso 50 (Mod) NÃO pode punir quem possui peso 80 (Admin).
# 2. Um membro da staff NÃO pode punir a si mesmo.
# 3. Punições ignoram restrições se o emissor for o Console (peso infinito).

Discord Webhooks #

Integração nativa com canais de auditoria do Discord. Quando uma punição ocorre ou é revogada, um embed profissional é enviado instantaneamente através de requisições HTTP assíncronas.

config.yml • discord
discord:
  webhook-url: "https://discord.com/api/webhooks/SEU_WEBHOOK_AQUI"
  embed:
    title: "🛡️ Nova Punição Aplicada"
    color: "#00D2FF"
    fields:
      - name: "Alvo"
        value: "{player} ({uuid})"
      - name: "Autor"
        value: "{staff}"
      - name: "Tipo"
        value: "{type}"
      - name: "Duração"
        value: "{duration}"
      - name: "Motivo"
        value: "{reason}"

Auto-Updater Modrinth #

O AegisPunish consulta periodicamente a API oficial do Modrinth buscando novas versões lançadas. Ao detectar uma versão mais recente, o arquivo é baixado em segundo plano e salvo como substituto para entrar em ação no próximo restart, sem interrupção de gameplay.

⚡
ATUALIZAÇÃO EM TEMPO REAL

Você pode forçar a busca ou download manual a qualquer momento executando /aegispunish update no console ou in-game com a permissão aegispunish.admin.

Arquivo config.yml #

plugins/AegisPunish/config.yml
# Idioma padrão das mensagens (pt_BR, en, es)
language: pt_BR

# Verificação e download automático de atualizações via Modrinth
auto-update:
  enabled: true
  auto-download: true

# Configurações de Banco de Dados
database:
  type: SQLITE # Opções: SQLITE ou MYSQL
  mysql:
    host: "127.0.0.1"
    port: 3306
    database: "aegispunish"
    username: "root"
    password: ""
    pool:
      maximum-pool-size: 10
      minimum-idle: 5

Banco de Dados (SQLite & MySQL) #

Por padrão, o AegisPunish utiliza SQLite local com o arquivo aegispunish.db, não necessitando de nenhuma configuração externa. Para sincronização entre servidores via Velocity/BungeeCord, configure o tipo MYSQL. Todas as consultas utilizam pools HikariCP e índices para velocidade ultrarrápida.

PlaceholderAPI #

Integração automática para uso em scoreboards, TAB, chat e menus gráficos:

Placeholder Descrição Exemplo de Retorno
%aegispunish_is_banned% Indica se o jogador está banido true / false
%aegispunish_is_muted% Indica se o jogador está silenciado true / false
%aegispunish_warns_count% Quantidade de avisos ativos 2
%aegispunish_staff_punishments% Total de punições aplicadas pelo staff 142

Comandos & Permissões #

Lista de todos os comandos registrados pelo AegisPunish:

Comando Permissão Descrição
/ban <player> [reason] aegispunish.command.ban Bane um jogador permanentemente.
/tempban <player> <time> [reason] aegispunish.command.tempban Bane temporariamente com duração.
/ipban <player/ip> [reason] aegispunish.command.ipban Bane permanentemente por endereço IP.
/unban <player/ip> aegispunish.command.unban Revoga o banimento de um jogador ou IP.
/mute <player> [reason] aegispunish.command.mute Silencia o jogador permanentemente.
/tempmute <player> <time> [reason] aegispunish.command.tempmute Silencia temporariamente com duração.
/unmute <player> aegispunish.command.unmute Desmuta um jogador silenciado.
/kick <player> [reason] aegispunish.command.kick Expulsa o jogador imediatamente do servidor.
/warn <player> [reason] aegispunish.command.warn Aplica um aviso disciplinar.
/check <player> aegispunish.command.check Abre menu GUI ou lista de status do jogador.
/historic <player> aegispunish.command.historic Exibe todo o histórico de infrações de um jogador.
/rollbackstaff <staff> <time> aegispunish.command.rollbackstaff Anula em massa punições aplicadas por um staff no intervalo.
/aegispunish reload aegispunish.admin Recarrega os arquivos de configuração e mensagens.
/aegispunish clearvanilla aegispunish.admin Remove todos os banimentos residuais do Vanilla / Essentials.
/aegispunish update aegispunish.admin Checa e baixa atualizações via Modrinth.

Developer API & Eventos #

O AegisPunish oferece uma API moderna em Java para desenvolvedores externos criarem integrações, bots ou painéis web:

Java • AegisPunishAPI
// Obter instância do serviço
AegisPunishAPI api = AegisPunishAPIProvider.get();

// Verificar se um jogador está banido
UUID playerUuid = player.getUniqueId();
if (api.isBanned(playerUuid)) {
    Punishment ban = api.getActiveBan(playerUuid);
    player.sendMessage("Banido por: " + ban.getReason());
}

// Escutar eventos de punição
@EventHandler
public void onPunish(PlayerPunishEvent event) {
    if (event.getType() == PunishmentType.BAN) {
        getLogger().info(event.getTargetName() + " foi banido por " + event.getStaffName());
    }
}