Canales
channels.yml: los tres tipos de canal, quién puede hablar y leer, prefijos, formato por canal y qué viaja entre servidores.
Un canal es adónde va un mensaje. Viven en chat/channels.yml, leído a mano igual que los catálogos
cosméticos: tú añades entradas y comentarios, y una entrada mala solo cuesta esa entrada.
channels:
global:
type: GLOBAL
name: '{letters}Global'
prefix: '!'
cross-server: true
local:
enabled: false
type: LOCAL
name: '{info}Local'
prefix: '.'
radius: 100Las claves
| Clave | Por defecto | Significado |
|---|---|---|
type | CUSTOM | GLOBAL, LOCAL o CUSTOM — ver abajo |
name | el propio id de la entrada | Cómo lo llaman los mensajes y los menús; admite tokens de paleta y colores |
permission | vacío | Hace falta para hablar y para leer. Vacío significa todo el mundo |
prefix | ninguno | Un carácter escrito delante de un mensaje para mandar ese mensaje aquí |
radius | 100 | Bloques, solo para LOCAL; los demás tipos lo ignoran |
format | vacío | Un archivo de chat/formats/ que este canal usa siempre |
cross-server | true, o false en LOCAL | Si los mensajes viajan a los demás servidores |
enabled | true | false deja el canal fuera del todo |
Los ids se normalizan a a-z 0-9 _ - en minúsculas, así que Global y global son el mismo canal.
Un mensaje tiene que ir a alguna parte. Si channels.yml no tiene una entrada global, o falta la
sección entera, se usa un canal GLOBAL interno y el problema se registra. Borrar global no apaga el
chat global; solo te quita tus ajustes para él.
Los tres tipos
| Tipo | Quién lo lee |
|---|---|
GLOBAL | Todos los conectados |
CUSTOM | Todos los que tengan el permission del canal |
LOCAL | Todos los del mundo del emisor dentro de radius bloques, más el emisor |
LOCAL mide la distancia desde donde estaba el emisor cuando llegó el mensaje, que es lo que hace
cualquier chat de proximidad. El emisor siempre lee su propio mensaje, sea cual sea el tipo.
permission es un permiso para dos cosas: un canal detrás de uno lo escriben y lo leen solo
quienes lo tienen. No hay un nodo de lectura aparte, así que un jugador que no puede hablar en un
canal tampoco lo ve.
Una versión anterior tenía un cuarto tipo. Un archivo escrito para ella se lee como CUSTOM, que es lo
que STAFF siempre significó: un canal que leen quienes tienen su permiso. No hay nada que cambiar al
actualizar.
A qué canal va una línea
Una línea escrita se resuelve en este orden.
Un carácter de prefijo
Si el primer carácter es el prefix de un canal, el jugador puede usar ese canal y hay algo
después, el mensaje va allí una vez y el carácter se quita. Un prefijo de un canal que no puede
usar se queda en el texto: lo escribió a propósito.
El canal al que se cambió
/channel <id> (o /ch) mueve los mensajes normales de un jugador. Si su canal desapareció del
archivo, o perdió el permiso, cae en global en vez de en la nada.
Global
Todo lo demás.
Cambiar de canal lanza ChannelSwitchEvent, y un listener que lo cancele deja al jugador donde
estaba. Solo se guarda un canal que no sea el global, así que un jugador que nunca eligió uno y un
jugador que eligió global son la misma fila.
Un prefix de más de un carácter se recorta al primero, con un aviso: un carácter es lo que un
jugador escribe sin pensar, y un prefijo de dos caracteres es un comando con pasos de más.
Entre servidores
Con cross-server.enabled: true en chat/config.yml y Redis configurado en el database.yml de
ExyliaLib, el módulo publica en el canal chat de la librería. Un mensaje de un canal marcado
cross-server: true viaja; uno de un canal marcado false se queda aquí.
Lo que viaja es la línea ya dibujada, junto con el id del canal y el nombre y el UUID del emisor.
El servidor que la recibe nunca vuelve a ejecutar el pipeline: el filtro, los cosméticos, el formato y
todas las transformaciones ya ocurrieron donde se escribió el mensaje. Lo único que decide el otro
lado es quién lo lee — el permiso del canal si es CUSTOM, todo el mundo si es GLOBAL, y nadie si es
LOCAL, porque un radio no significa nada entre servidores — menos quien ignore al emisor. La consola
también lo lee.
Sin Redis no se publica nada y no llega nada; el módulo funciona como un chat de un solo servidor y
cross-server en un canal no significa nada.
Los susurros, el silencio del chat, /clearchat y /broadcast viajan por el mismo cable. Ver
Funciones de chat.
Relacionado
A qué apunta la clave format de un canal, y cómo se elige un formato cuando no apunta a nada.
El pipeline que recorre un mensaje antes de llegar a quienes leen el canal.
/channel y el permiso que lo protege están en Comandos y
Permisos.
¿Falta algo en esta página? Dínoslo en Discord