Contenido generado con IA — puede contener errores.

Empezar

Primeros pasos

Los primeros diez minutos: el menú, qué posee ya un jugador, conceder una etiqueta y meter la identidad en tu formato de chat.

El plugin está instalado y el servidor está arriba. Tu chat sigue igual, ningún jugador ha recibido nada, y el catálogo está ahí con 180 etiquetas y unos 350 colores dentro. Este es el camino más corto de ahí a un jugador con algo puesto y todo el mundo viéndolo.

Abre el menú

/cc en el juego. El permiso que pide, exyliachatcosmetics.command.cosmetics, está declarado como default: true en el plugin.yml, así que todos los jugadores ya lo tienen — un nodo sin declarar es solo de operadores en Bukkit, que es justo por lo que los que un jugador necesita para usar el plugin están declarados y los que deciden qué posee no lo están.

La pantalla principal tiene siete cosas: YOUR CHAT, una previsualización en vivo de la línea que el jugador enviaría ahora mismo; IDENTITY para etiquetas, colores de nick y colores de rango; MESSAGE para colores de chat, colores de sombra, fuentes y modificadores; FAVORITES; LOADOUTS; YOUR COLLECTION, que cuenta lo que posee; y TAKE IT ALL OFF, que solo se dibuja cuando hay algo que quitarse. No hay botón de cerrar en ninguna pantalla — un jugador cierra una ventana igual que cierra cualquier otra.

Cuatro atajos de primer nivel abren un explorador directamente, con el mismo permiso: /tags, /nickcolors, /rankcolors y /chatcolors.

Mira qué posee ya un jugador

Abre /cc con alguien sin ningún permiso y casi todas las filas dicen Not yours yet. Ese es el valor por defecto deliberado: una entrada del catálogo se posee por el nodo exyliachatcosmetics.<type>.<id> o por una concesión, y por nada más.

Los colores de rango son la excepción, y conviene entenderla antes de escribir un solo nodo. Vienen con permission: false — el valor por defecto del propio tipo, al revés que en cualquier otro archivo — lo que significa que el nodo de permiso no decide quién posee uno. Lo que decide es la lista groups de la entrada, leída de LuckPerms.

PestañaEntradasQuién las posee
solid15Todo el mundo. No nombran grupos ni ponen nodo, así que cualquier rango puede llevarlas.
metal, gems, gradient, animated54Quien tenga exyliachatcosmetics.rank_color.<id>. Estas entradas vuelven a poner permission: true, una por una.
staff8Quien esté en alguno de los grupos que nombra la entrada — owner, admin, mod y demás.

Así que en un servidor con LuckPerms y nada más configurado, un jugador recién llegado ya puede abrir /rankcolors y repintar el prefijo de su rango en cualquiera de quince colores planos. Todo lo demás te espera a ti.

La pestaña staff nombra los grupos de Exylia, no los tuyos

Las ocho entradas de staff listan grupos como owner, admin, mod y helper. Si LuckPerms en tu servidor los llama de otra forma, la pestaña estará vacía para todos hasta que edites las listas groups en cosmetics/rank-colors.yml.

Una etiqueta del catálogo, event, también viene con permission: false. No hay ningún nodo que la conceda — existe para repartirse, y no se puede comprar.

Dale una etiqueta a alguien

/cca give Notch tag:heart
/cca give Notch tag:heart 14d --source PURCHASE --note "Oferta de octubre"

Un cosmético se nombra siempre type:id, y se autocompleta. Sin duración es permanente; 14d son catorce días, en el formato de duraciones de ExyliaLib (30m, 2h, 14d, 1w, con decimales). Sin --source la concesión se registra como ADMIN; --source acepta PURCHASE, REWARD, EVENT, ACHIEVEMENT o EXTERNAL, y --ref y --note son tuyos para meter un id de pedido o un motivo.

El destinatario puede estar desconectado mientras haya jugado antes. Comprueba qué quedó con /cca list Notch, que lista cada concesión con su id de fila, su origen y el tiempo que le queda, o con /cca check Notch tag:heart para una sola respuesta.

Un jugador puede tener varias concesiones del mismo cosmético a la vez — una permanente de un rango, una de admin de 14 días, una compra de 30 — y quitar una nunca toca las demás.

Abre una pestaña entera de golpe

Conceder 180 etiquetas de una en una no es la idea. Cuatro formas de nodo, de la más estrecha a la más ancha:

NodoPosee
exyliachatcosmetics.tag.heartese cosmético
exyliachatcosmetics.tag.category.symbolstodas las etiquetas de la pestaña symbols
exyliachatcosmetics.tag.*todas las etiquetas
exyliachatcosmetics.*todo el catálogo

Los ids de tipo son tag, nick_color, rank_color, chat_color, shadow_color, font y modifier, y la categoría es el id de la pestaña tal como está escrito en el archivo — así que un rango VIP que debería llevarse los colores premium y todas las fuentes es:

/lp group vip permission set exyliachatcosmetics.chat_color.category.premium
/lp group vip permission set exyliachatcosmetics.nick_color.category.premium
/lp group vip permission set exyliachatcosmetics.font.*

La propiedad por nodo no se guarda nunca. Se pregunta en vivo y se memoriza por sesión, así que quitar el nodo quita el cosmético sin que haya que limpiar nada — y lo que el jugador tenía puesto se queda en su fila, listo para dibujarse otra vez el día que el nodo vuelva.

Mete la identidad en tu formato de chat

El plugin nunca cancela un evento de chat y nunca es dueño de tu formato. La etiqueta y el nombre coloreado los colocas tú, como placeholders, en el plugin de chat que ya lleves:

%exyliachatcosmetics_tag%%exyliachatcosmetics_nick%<gray>: <white>%message%

%exyliachatcosmetics_tag% es la etiqueta puesta, ya con su espacio final incluido, y una etiqueta personalizada del jugador gana a una del catálogo. %exyliachatcosmetics_nick% es su nombre en su color de nick. %exyliachatcosmetics_identity% son las dos juntas.

Tres notaciones, porque los plugins de chat no se ponen de acuerdo en una — elige el sufijo que entienda el tuyo:

PlaceholderSalida
%exyliachatcosmetics_tag%MiniMessage, <#ffd700>[MVP]</#ffd700> — el que va por defecto
%exyliachatcosmetics_tag_legacy%códigos &, con &#rrggbb para el hex
%exyliachatcosmetics_tag_section%códigos §, con §x§r§r… para el hex

El nombre lleva las mismas tres: %exyliachatcosmetics_nick%, %exyliachatcosmetics_nick_legacy% y %exyliachatcosmetics_nick_section%. Así que el mismo formato para un plugin de chat de cadenas antiguas queda:

%exyliachatcosmetics_tag_section%%exyliachatcosmetics_nick_section%§7: §f%message%

Equivocarse aquí es el error más común de todos, y se ve como un <#ffd700> en crudo dentro del chat. Fuera del texto propio de ExyliaLib, estos necesitan PlaceholderAPI instalado para resolverse.

Un jugador que no lleva nada devuelve una cadena vacía, así que un formato con %exyliachatcosmetics_tag% dentro es seguro para todo el mundo desde el primer día.

Elige el hook adecuado para tu plugin de chat

Con eso queda la identidad. El cuerpo del mensaje — el color de chat, la sombra, la fuente, los modificadores — lo estiliza el hook, y el modo correcto depende de cómo lea un mensaje tu plugin de chat. chat.hook en config.yml:

Lo que llevashookPor qué
El chat propio de Paper, o cualquier plugin que dibuje por AsyncChatEvent / un ChatRendererdecorateEl cuerpo estilizado reemplaza el mensaje decorado antes de que ningún plugin de chat lo vea, y no se cancela nada. El que va por defecto, y la respuesta correcta para la mayoría de servidores.
Un plugin que lee AsyncChatEvent.message() pero ignora la decoraciónchat_event, con chat.priority por debajo de la suya (LOW)La reescritura llega antes de que él lea.
Un plugin que sigue en AsyncPlayerChatEventlegacy_event, a una prioridad por debajo de la suyaLa cadena que lee ya lleva los colores en §.
Spigot, sin eventos de Papercualquieradecorate y chat_event caen a legacy_event con un aviso al arrancar.
Tu propio código, componiendo la línea túoffNo se toca nada; usa ChatCosmeticsAPI.styleMessage para que nada se estilice dos veces.
Mensajes modificados y chat seguro

Cualquier cambio en el cuerpo de un mensaje — un color incluido — lo marca como "modificado" para un cliente vanilla. Se sigue viendo, pero un cliente con Only Show Secure Chat activado lo esconde. Todos los plugins de color de chat tienen esta propiedad; los servidores a los que les importa ponen enforce-secure-profile=false.

Míralo antes que nadie

/cc preview
/cc preview lo que te apetezca

Dibuja la línea que produciría el chat del jugador ahora mismo, en su propio chat y en el de nadie más. Su forma es preview.format en config.yml, %tag%%prefix% %name%%suffix%{letters_black}: %message% por defecto, así que enseña el prefijo del rango en el color de rango que se esté mirando, además de la etiqueta y el nombre.

Desde la consola o como admin, /cca preview <jugador> [mensaje] le manda al destinatario su propia línea, y /cca render <jugador> manda las piezas de una en una — la etiqueta, el nombre coloreado, un mensaje de muestra estilizado — que es lo que te dice cuál de las tres está mal cuando algo no cuadra.

Después de los primeros diez minutos

Todo lo anterior es la mitad de cosméticos funcionando a través del chat que ya llevas. Desde aquí hay dos direcciones: poner más catálogo en manos de los jugadores, o entregarle también el chat al plugin.

¿Falta algo en esta página? Dínoslo en Discord