Módulos de Chat (modules/)
Permite definir formatos independientes para cada rango de LuckPerms (basado en primary-group), además de un...
Módulos de Chat (modules/)
4.1 Formatos de Chat (formats.yml)
Permite definir formatos independientes para cada rango de LuckPerms (basado en primary-group), además de un tooltip personalizado en el nombre (player-hover) y un tooltip exclusivo al mencionar al jugador (mention-hover).
Variables Disponibles:
{prefix}: Prefijo del jugador (LuckPerms/Vault).{suffix}: Sufijo del jugador (LuckPerms/Vault).{player}: Nombre o nickname interactivo del jugador.{display}: DisplayName del jugador.{world}: Mundo donde se encuentra el jugador.{message}: Mensaje enviado (soporta colores asignados o permisos).- Placeholders de PAPI: Cualquier placeholder como
%vault_eco_balance_formatted%.
Ejemplo de Configuración:
formats:
default:
chat: "{prefix}%cmi_user_nickname%{suffix}&8: &f{message}"
player-hover:
- "&7&m "
- "&e&lNickname: &f%cmi_user_nickname%"
- "&7Usuario real: &f{player}"
- "&7Rango: &7Default"
- "&7Mundo: &b%player_world%"
- "&7&m "
- "&8Click para enviar MP"
mention-hover:
- "&7&m "
- "&e&lNickname: &f%cmi_user_nickname%"
- "&7Mundo: &b{world}"
- "&e Click para enviar MP "
- "&7&m "
groups:
admin:
chat: "%supremetags_tag% %prefix%&4&l{player}&8: &f{message}"
player-hover:
- "&4&lSTAFF ADMINISTRADOR"
- "&fUsuario: &e{player}"
mention-hover:
- "&c¡Cuidado! Estás mencionando a un Admin"4.2 Canales de Chat (channels.yml)
Permite crear múltiples salas de conversación (ej. Local, Global, Comercio, Staff).
channels:
default-channel: "global" # Canal por defecto al conectarse
list:
global:
display-name: "&a[Global]"
permission: "" # Dejar vacío para permitir a todos
prefix: "" # Prefijo adicional al inicio
format: "{channel_prefix}{general_format}" # {general_format} hereda de formats.yml
radius: -1 # -1 = Sin límite de distancia (todo el servidor)
cooldown: 0 # Cooldown en segundos entre mensajes
prefix-shortcut: "!" # Escribir "!hola" envía el mensaje directo a este canal
local:
display-name: "&e[Local]"
permission: ""
prefix: "&e[L] "
format: "{channel_prefix}{prefix}{player}{suffix} &8» &7{message}"
radius: 50 # Solo jugadores en el mismo mundo a menos de 50 bloques
cooldown: 0
prefix-shortcut: ""
trade:
display-name: "&6[Comercio]"
permission: "zenchat.channel.trade"
prefix: "&6[Comercio] "
format: "{channel_prefix}{prefix}{player}{suffix} &8» &e{message}"
radius: -1
cooldown: 10 # Cooldown de 10 segundos
prefix-shortcut: "$"
staff:
display-name: "&c[Staff]"
permission: "zenchat.staff"
prefix: "&c[STAFF] "
format: "{channel_prefix}{prefix}{player}{suffix} &8» &a{message}"
radius: -1
cooldown: 0
prefix-shortcut: "#"4.3 Mensajes Privados y SocialSpy (msg.yml)
Configuración de la mensajería directa entre usuarios y el sistema espía para moderadores.
private-message:
sender-format: "&8[&dyo &8-> &d{target}&8] &f{message}"
receiver-format: "&8[&d{sender} &8-> &dyo&8] &f{message}"
socialspy-format: "&7[&cSPY&7] {sender} &8-> &c{target}&7: {message}"
socialspy:
# Comandos que activan el espía al ser ejecutados por cualquier usuario
listen-commands:
- msg
- tell
- whisper
- w
- m
- pm
- dm
reply-commands:
- r
- reply
format: "&7[&cSPY&7] {sender} &8-> &c{target}&7: {message}"
reply-format: "&7[&cSPY&7] {sender} &8-> &c{target}&7(reply): {message}"4.4 Tags Interactivas (tags.yml)
Permite a los usuarios colocar etiquetas dinámicas en el chat que se transforman en botones interactivos con tooltips y eventos de clic.
| Tag | Alias soportados | Permiso Requerido | Descripción |
|---|---|---|---|
[inv] | [inventory], [inventario] | zenchat.inv | Abre una GUI con el inventario del usuario en tiempo real. |
[ec] | [ender], [enderchest] | zenchat.ec | Abre una GUI con el EnderChest del jugador. |
[item] | [i], [hand], [h], [mano] | zenchat.item / zenchat.item.view | Muestra el item que el jugador tiene en la mano principal (con su lore, encantamientos e inspección GUI). |
[pos] | [x], [coords], [coord], [ubicacion] | zenchat.pos | Muestra coordenadas X, Y, Z y sugiere /tp al hacer clic. |
[ping] | [p] | zenchat.ping | Muestra la latencia actual en milisegundos con colores dinámicos según el retardo. |
[balance] | [bal], [money], [eco], [dinero] | zenchat.balance | Muestra el balance monetario del jugador (requiere Vault) y sugiere /pay. |
4.5 Interfaz Gráfica y ColorChat (guis.yml)
Gestiona el diseño de las vistas de inventario y la paleta de colores del comando /colorchat.
gui:
inv-title: "&8Inventario de &b{player}"
ec-title: "&8EnderChest de &d{player}"
rows: 6
show-armor: true
show-offhand: true
filler-material: BLACK_STAINED_GLASS_PANE
read-only: true
item-view:
title: "&8Item de &e{player}"
permission: zenchat.item.view
filler-material: BLACK_STAINED_GLASS_PANE
center-slot: 4
cache-ttl-seconds: 600
colorchat:
enabled: true
gui:
title: "&8» &dColor de Chat &8«"
messages:
set: "&8[&dColorChat&8] &7Tu color de chat ahora es {color}&7."
cleared: "&8[&dColorChat&8] &7Tu color de chat ha sido &cquitado&7."
unknown: "&8[&dColorChat&8] &cColor desconocido: &f{input}"
colors:
white: { code: "&f", display-name: "&fBlanco", rgb: "FFFFFF" }
aqua: { code: "&b", display-name: "&bAqua", rgb: "55FFFF" }
dark_aqua: { code: "&3", display-name: "&3Aqua Oscuro", rgb: "00AAAA" }
blue: { code: "&9", display-name: "&9Azul", rgb: "5555FF" }
red: { code: "&c", display-name: "&cRojo", rgb: "FF5555" }
green: { code: "&a", display-name: "&aVerde Lima", rgb: "55FF55" }
yellow: { code: "&e", display-name: "&eAmarillo", rgb: "FFFF55" }4.6 Placeholders y Emojis Personalizados (emojiplaceholders.yml)
Sustituye cadenas de texto escritas por los jugadores por emojis, gradientes o componentes enriquecidos mediante MiniMessage.
placeholders:
enable: true
list:
'<3': '<red>❤</red>'
'*star*': '<yellow>★</yellow>'
'*yep*': '<green>✌</green>'
':)': '<green>☺</green>'
':(': '<red>☹</red>'
'[discord]': "<#25c8fa><click:open_url:'https://discord.gg/ejemplo'><hover:show_text:'<yellow>Click para unirte</yellow>'>discord.gg/ejemplo</hover></click></#25c8fa>"
placeholders-with-permission:
balance:
prefix: '[bal]'
parser: "<yellow>%player_name%'s Money %vault_eco_balance_formatted%</yellow>"
permission: 'zenchat.placeholder.balance'4.7 AntiSpam y AntiAd (punish.yml)
Protege el chat contra floods, mayúsculas excesivas, repeticiones y enlaces o IPs no autorizados.
antispam:
enabled: true
cooldown: 2 # Segundos entre cada mensaje
block-duplicates: true # Evita repetir el mismo mensaje
max-similarity-percent: 80 # Porcentaje de similitud con el mensaje anterior
max-caps-percent: 70 # Porcentaje máximo de mayúsculas permitidas
caps-min-length: 6 # Longitud mínima de mensaje para evaluar mayúsculas
censor-char: "*" # Carácter de censura
blocked-words:
- "palabra_inapropiada"
antiad:
enabled: true
patterns:
- "\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(?::\\d{1,5})?\\b" # Bloqueo de IPs numéricas
- "(?i)\\b[a-z0-9-]+\\.(?:com|net|org|gg|es|tv|io|me|xyz|tk|ml|cf|ga|info|server|mc|play)\\b"
- "(?i)\\b(?:discord\\.gg|discord\\.com/invite)/[a-z0-9]+\\b"
whitelist:
- "tuserver.net"
- "minecraft.net"
action: BLOCK # Acción: BLOCK (cancela el mensaje)4.8 Webhooks de Discord (webhooks.yml)
Envía notificaciones embed automáticas a Discord ante infracciones de chat.
discord-webhooks:
enabled: false
webhook-url: "https://discord.com/api/webhooks/TU_WEBHOOK_AQUI"
# Alerta cuando un jugador intenta decir una palabra prohibida
blocked-word:
enabled: true
title: " Filtro de Antispam (Palabra Prohibida)"
color: "FFAA00" # Color en HEX sin '#'
description: "El jugador **{player}** ha intentado enviar un mensaje con palabras bloqueadas."
fields:
- { name: "Mensaje Original", value: "`{message}`", inline: false }
- { name: "Mundo", value: "*{world}*", inline: true }
- { name: "Coordenadas", value: "X: {x}, Y: {y}, Z: {z}", inline: true }
footer: "Sistema de Seguridad ZenChat"
# Alerta cuando un jugador publica publicidad (IP / Enlace)
antiad:
enabled: true
title: " Filtro de AntiAd (Publicidad)"
color: "FF0000"
description: "El jugador **{player}** ha intentado enviar un mensaje con enlaces no permitidos."
footer: "Sistema de Seguridad ZenChat"¿Te resultó útil esta página?
Tus respuestas nos ayudan a perfeccionar la wiki de ZenForge.