AxoStudio

AxoChat

Plugin avanzado de chat para Paper, Purpur y Folia con formato enriquecido, canales, mensajes privados, mutes, filtros, funciones visuales, reacciones, joins personalizados, diagnósticos y el sistema de moderación Centinela.

Versión

4.0.1

Plataforma

Paper API 26.2+

Compatibilidad

Paper, Purpur y Folia

Java

17+

Qué hace

  • Formato de chat con MiniMessage, colores legacy, PlaceholderAPI, MiniPlaceholders y grupos.
  • Canales avanzados con radio, escucha por jugador, comandos por canal y bridge opcional a Discord.
  • Mensajes privados, reply, ignore, staff chat, command spy, mute global y mutes por jugador.
  • Funciones visuales: [item], [inv], [ender], [head], menciones globales, URLs, correos y reacciones.
  • Centinela para moderación de chat, comandos, carteles, libros, yunques, autocorrección y SocialSpy.

Dependencias opcionales

PlaceholderAPIPlaceholders %...%
MiniPlaceholdersTags externos
LuckPermsRangos y prefijos
VaultEconomía
EssentialsDiscord / DiscordSRVBridge a Discord
LifestealCore / LifestealzCorazones
ItemsAdder, CMI, EcoEnchants, Nova, SayanVanishHooks opcionales

Archivos clave

config.yml centinela.yml joins.yml games.yml AutoBroadcast.yml ChatBot.yml bannedwords.yml emojis.yml lang/*.yml

Los datos de jugador guardan color de chat, filtro personal, mutes, SocialSpy y preferencias persistentes.

Estado actual de la documentación

Esta wiki está alineada con los permisos declarados en paper-plugin.yml, los módulos de config.yml y la configuración de centinela.yml.

Guía de Instalación

1

Instala el jar

Coloca AxoChat.jar en plugins/. Usa Paper API 26.2+ y Java 17+.

2

Instala hooks opcionales

AxoChat funciona sin dependencias externas, pero PlaceholderAPI, MiniPlaceholders, LuckPerms y Vault desbloquean placeholders, tags, rangos y economía.

3

Inicia el servidor

Al iniciar se generan las configuraciones principales. Revisa especialmente config.yml y centinela.yml.

4

Asigna permisos

Los permisos de jugador marcados como true vienen activos por defecto. Los permisos op deben asignarse con LuckPerms u otro gestor si no quieres depender de OP.

Recarga cambios

Usa /axochat reload. Si cambias dependencias externas, storage o librerías, reinicia el servidor.

Comandos

Comandos actuales separados por área. Los aliases aparecen dentro de cada tarjeta.

Nodos de Permisos

Permisos declarados en paper-plugin.yml. true significa disponible por defecto; op queda reservado a operadores o a permisos asignados manualmente.

Total

110 permisos

Jugadores

true

Staff

op

Permisos padre

*, join.*, emojis.*, reaction.*, minimessage.*, sentinel.*

Permiso Default Área Para qué sirve

Módulos del Sistema

Controlables desde config.yml -> modules.*. Si un módulo está apagado, su configuración puede seguir existiendo pero no se ejecuta.

Configuración y Features Nuevas

Antes de editar

Los textos usan MiniMessage. Los placeholders %...% dependen de PlaceholderAPI cuando son externos, y los tags tipo <tag:valor> dependen de MiniPlaceholders. Usa /axochat reload después de guardar cambios.

Formato de Chat

El formato principal está en Chat.Format. Los formatos por grupo pueden usar LuckPerms, PlaceholderAPI, MiniPlaceholders y placeholders internos.

Chat:
  Format: "%head% %luckperms_prefix% &7%player_name%: &r&7{message}"
  Groups:
    admin:
      Format: "<red><bold>%player_name%</bold></red> <dark_gray>»</dark_gray> <white>%message%</white>"

chat:
  allow-colors: true
  require-color-permission: true
  color-permission: "axochat.color"
  allow-minimessage: true
  require-minimessage-permission: true
  minimessage-permission: "axochat.minimessage"

Canales Avanzados

Los canales pueden tener rango, permisos de entrar/hablar/escuchar, prefijos rápidos, comandos propios, formato y relay a Discord.

advanced-channels:
  enabled: true
  default-channel: "global"

channels:
  global:
    range: "ALL"
    command-bindings: ["global", "g"]
  local:
    range: "DISTANCE"
    radius: 100
    command-bindings: ["local", "lchat"]
  staff:
    private: true
    speak-permission: "axochat.staffchat"
    listen-permission: "axochat.staffchat"
    prefix-bindings: ["#"]

Funciones del Chat

AxoChat puede convertir claves en componentes clicables: item, inventario, enderchest, cabeza, menciones globales, URLs, correos e imágenes de fuente.

chat-functions:
  inventory:
    enabled: true
    permission: "axochat.view.inventory"
    keys: ["[inv]", "[inventory]"]
  enderchest:
    enabled: true
    permission: "axochat.view.enderchest"
    keys: ["[ender]", "[enderchest]"]
  head:
    enabled: true
    permission: "axochat.view.head"
    keys: ["[head]", "[cabeza]"]
  mention-all:
    enabled: true
    permission: "axochat.mentionall"
    keys: ["@all", "@everyone"]

Reacciones

La fuente oficial de reacciones visuales es config.yml -> chat-reactions. emojis.yml queda solo para emojis y faces.

chat-reactions:
  enabled: true
  cooldown-seconds: 3
  display-mode: "TEXT_DISPLAY"
  reactions:
    like:
      display-name: "Like"
      chat-icon: "<green>👍</green>"
      permission: "axochat.reaction.like"
      triggers:
        - ":like:"
        - "👍"

Centinela

Centinela concentra seguridad y moderación. Trabaja sobre chat, comandos, carteles, libros, yunques y mutes. Sus bypass están en centinela.yml -> modules.*.bypass-permission.

enabled: true
modules:
  client-guard:
    enabled: true
    bypass-permission: "axochat.clientguard.bypass"
  flood:
    enabled: true
    bypass-permission: "axochat.sentinel.flood.bypass"
  blacklist:
    enabled: true
    bypass-permission: "axochat.filter.bypass"
  social-spy:
    enabled: true
    bypass-permission: "axochat.sentinel.socialspy.bypass"
  mutes:
    enabled: true
    bypass-permission: "axochat.mute.bypass"

SocialSpy de Centinela

SocialSpy puede capturar privados, comandos, carteles, libros y yunques. Cada superficie tiene permiso propio.

social-spy:
  include-self: false
  include-cancelled: false
  modules:
    messages:
      enabled: true
      permission: "axochat.sentinel.socialspy.messages"
    commands:
      enabled: true
      permission: "axochat.sentinel.socialspy.commands"
    signs:
      enabled: true
      permission: "axochat.sentinel.socialspy.signs"
    books:
      enabled: true
      permission: "axochat.sentinel.socialspy.books"
    anvils:
      enabled: true
      permission: "axochat.sentinel.socialspy.anvils"

Mutes de Jugador

El módulo player-mutes soporta mutes permanentes, temporales y shadowmutes. Puede bloquear chat, privados y superficies cuando se combina con Centinela.

player-mutes:
  block-chat: true
  block-private-messages: true
  default-duration: "permanent"
  default-reason: "Sin razon especificada"
  shadow:
    notify-staff: true

Datos Persistentes

El storage puede usar YAML, SQLite o MySQL. Cambiar de backend requiere reinicio para cargar librerías y conexión.

player-data:
  storage:
    method: "yaml"
    table: "axochat_player_data"
    sqlite-file: "axochat-data.db"
    mysql:
      jdbc-url: ""
      username: ""
      password: ""

Submódulos de Centinela

Submódulo Qué controla Bypass típico
client-guardLongitud de componentes y tab-complete.axochat.clientguard.bypass
no-move-chatBloquea chat hasta que el jugador se mueva.axochat.sentinel.nomove.bypass
cooldownDelay de mensajes.axochat.antispam.bypass
command-cooldownDelay de comandos.axochat.antispam.bypass
allowed-charactersCaracteres permitidos y reemplazo.axochat.unicode.bypass
capitalizationMayúsculas excesivas y autocorrección de frase.axochat.caps.bypass
floodCaracteres repetidos, símbolos largos y palabras enormes.axochat.sentinel.flood.bypass
blacklistPublicidad, ofensivo, cliente, seguridad y reglas de usuario.axochat.filter.bypass
similarityMensajes demasiado parecidos.axochat.antispam.bypass
autocorrectCorrecciones como ola -> hola.axochat.sentinel.autocorrect.bypass
syntaxComandos con namespace no permitidos.axochat.sentinel.syntax.bypass
blocked-commandsRaíces de comandos bloqueadas.axochat.blockedcommands.bypass
command-rulesReglas regex para comandos.axochat.commandcontroller.bypass
command-payload-filterFiltra contenido de /msg, /me, /broadcast y similares.axochat.sentinel.commandpayload.bypass
surface-filterCarteles, libros y yunques.axochat.filter.bypass
social-spyCaptura de mensajes, comandos y superficies.axochat.sentinel.socialspy.bypass
mutesBloqueo por mutes de AxoChat.axochat.mute.bypass

Hooks e Integraciones

AxoChat detecta plugins externos y usa fallback cuando no están presentes. Algunas integraciones solo deben activarse si el plugin correspondiente existe en el servidor.

hooks:
  essentials-discord:
    enabled: true
    relay-non-global-chat: false
    fire-discord-chat-event: true
  discordsrv:
    enabled: false
    default-channel: "global"
  optional-plugins:
    itemsadder-font-images: false
    cmi: false
    ecoenchants: false
    nova: false
    sayanvanish: false
  lifesteal:
    placeholders:
      - "%lifestealcore_hearts%"
      - "%lifestealz_hearts%"
      - "%player_max_health_rounded%"

MiniMessage no aplica

Revisa chat.allow-minimessage, chat.require-minimessage-permission y el permiso axochat.minimessage. Tags como run_command tienen permisos extra.

Un canal no funciona

Verifica modules.advanced-channels, advanced-channels.enabled, channels.<id>.enabled y los permisos de join/speak/listen.

Centinela bloquea demasiado

Usa /centinela status, revisa errores de filtros y ajusta el submódulo específico en centinela.yml. Para pruebas temporales usa /centinela module toggle <módulo>.