Contenido generado con IA — puede contener errores.

El catálogo

Cosméticos personalizados

Las cuatro cosas que un jugador se hace para sí mismo, las reglas que las mantienen legibles y qué pasa al editar o borrar una.

Cuatro tipos de cosmético no están en ningún archivo. Los escribe un jugador, pertenecen solo a ese jugador, y cada uno es una fila de una tabla en vez de una entrada que tú curas.

TipoQué esSe hace con
customtaguna etiqueta delante del nombre: el texto y el color, los dos suyos/cc customtag create <texto> [color]
customcolorel color de lo que escribe/cc customcolor create <color>
customnickel color de su nombre/cc customnick create <color>
customrankel color con el que se repinta el prefijo y el sufijo de su rango/cc customrank create <color>

Una vez existen se comportan como cualquier otro cosmético: salen en un navegador, se pueden marcar como favoritos, entran en un loadout y se nombran type:id en comandos y placeholders. Lo distinto es de dónde salen y quién puede llevarlos.

Dónde se hace uno

Dos caminos de entrada, y los dos acaban en el mismo servicio.

Desde el navegador

Cada navegador del catálogo que se empareja con uno de los cuatro — etiquetas, colores de chat, colores de nick, colores de rango — tiene un botón que cambia la cuadrícula del catálogo a lo que ha hecho el jugador. Mientras esa lista está abierta aparece el botón MAKE ONE. Pregunta el texto, luego el color, y escribe la fila.

Desde un comando

/cc customtag create, /cc customcolor create, /cc customnick create y /cc customrank create hacen lo mismo en una línea, para el jugador que prefiera escribirlo.

Que la lista de lo que ha hecho el jugador sea un botón y no una pestaña es a propósito: un tipo del que nadie ha hecho nada le quitaría igualmente una pestaña al catálogo, en cada navegador, para cada jugador, para siempre.

El saldo se comprueba antes de las preguntas

Abrir MAKE ONE sin tokens de creación lo dice de inmediato y no pregunta nada. Pedirle a alguien que escriba una etiqueta y luego decirle que nunca habría podido pagarla es el único orden que conviene evitar. El token en sí lo cobra después el servicio, que vuelve a comprobar el saldo.

El id es el número de fila

Un cosmético personalizado se identifica por la fila de la base de datos con la que se escribió. La fila cuarenta y dos que alguien haya hecho es customtag:42, y sigue siendo customtag:42 mientras exista.

El texto no puede ser la identidad — dos jugadores pueden escribir la misma palabra — y el color tampoco, porque un degradado lleva dos puntos dentro y los dos puntos son justo lo que separa un tipo de un id. El número de fila es lo único que es único, estable y seguro de imprimir.

La propiedad sale de la fila y no de un permiso. El dueño lo posee como se lo daría un permiso: para siempre y sin ninguna fila que caduque. Nadie más puede ponérselo, y no hay ningún nodo que lo permita — un cosmético personalizado declara permission: false, así que el nodo habitual exyliachatcosmetics.<type>.<id> aquí no concede nada.

Lo que hace el jugador gana

Las dos ranuras pueden estar llenas a la vez — un jugador puede poseer una etiqueta del catálogo y haberse escrito la suya — así que algo tiene que decidir. Gana lo que hizo él, en los cuatro sitios, porque es la elección más deliberada.

Lo que se dibujaPrimeroLuegoLuego
La etiquetacustomtagtagnada
El nombrecustomnicknick_colorel nombre tal cual
El mensajecustomcolorchat_colorchat.default-color
El prefijo y el sufijo del rangocustomrankrank_colorel rango tal como se escribió

Un color de rango no tiene nada que decir sobre el nombre, personalizado o no. Pinta el prefijo y el sufijo, que es lo que le pertenece a un rango; el nombre es del jugador.

Lo que una etiqueta personalizada tiene que superar

El texto se comprueba en un orden fijo, y la primera regla que falla es la que se le dice al jugador. No se escribe nada ni se cobra ningún token hasta que han pasado todas.

El permiso

exyliachatcosmetics.customtag.create, por defecto true. Si aquí se deniega, ni siquiera se pregunta el resto.

La longitud

Entre custom-tags.min-length y custom-tags.max-length, contada en puntos de código para que un carácter fuera del plano básico cuente como uno y no como dos.

Los caracteres que nunca son texto

<, >, {, }, &, §, % y \ se rechazan sin más, permita lo que permita pattern.

`pattern`

Una expresión regular contrastada contra el texto entero. Un patrón que no compila se trata como si no hubiera patrón.

`blacklist`

Palabras que el texto no puede contener, buscadas sin distinguir mayúsculas en cualquier parte.

La unicidad

Con custom-tags.unique activado, un texto que ya tiene otro jugador se rechaza.

El token de creación

Se cobra el último, así que una etiqueta rechazada no cuesta nada, y se cobra antes de escribir la fila, así que un segundo clic se encuentra el saldo ya corto.

El tercer paso es el que más importa y el más fácil de ensanchar sin querer. Esos ocho caracteres son los que el módulo de texto lee como una instrucción y no como texto: una etiqueta se dibuja como texto literal y se nombra en los menús como texto formateado, así que un carácter que abre una etiqueta de MiniMessage, un token de paleta, un código de color legacy o un placeholder nunca es parte de un nombre. La comprobación no está dentro de pattern; corre antes que él y al margen de él. Un dueño que ensanche pattern para dejar puntuación a sus jugadores sigue sin poder meter un < en una etiqueta.

plugins/ExyliaChatCosmetics/config.yml
custom-tags:
  min-length: 2
  max-length: 16
  # What the text may contain, as a regular expression over the whole text
  pattern: '[A-Za-z0-9_\-]+'
  # Words a custom tag may not contain, case-insensitively
  blacklist:
    - admin
    - staff
    - owner
  # Whether two players may not hold the same text
  unique: true

El color

Una etiqueta personalizada puede nombrar un color y no tiene por qué; los tres colores personalizados no son otra cosa que uno. En cualquier caso el color se escribe con la gramática de siempre — #8a51c4, &#8a51c4, 8a51c4, un color con nombre como gold, un token de paleta como {primary}, o varios de esos separados por dos puntos para un degradado.

ReglaDónde
Un degradado puede pasar como mucho por custom-colors.max-stops paradaspor defecto 4
Un - escrito en la pregunta del color deja la etiqueta sin ningunose dibuja con el color propio del chat
Un color que no se puede leer se rechaza antes de escribir nadano se cobra ningún token
plugins/ExyliaChatCosmetics/config.yml
custom-colors:
  # How many colours a custom gradient may run through
  max-stops: 4

Las dos reglas se aplican mientras el jugador escribe, en la propia entrada de texto, y otra vez en el servicio al escribir. La primera es una cortesía; la segunda es la que de verdad sostiene.

Editar conserva el número de fila

Cambiar uno cuesta un token de edición, que es un saldo aparte del de creación y al que una creación no toca nunca. Lo que vuelve es la misma fila: mismo id, misma clave, todo igual salvo lo que dice o de qué color es.

Eso es a propósito, y es la razón entera de que las ediciones se hagan así y no como un borrado más una creación. Una etiqueta puesta sigue puesta. Un color marcado como favorito sigue marcado. Un loadout que lo nombra lo sigue nombrando. Lo que cambió es cómo se ve el cosmético, no qué cosmético es.

Una etiqueta personalizada que se edita pasa por las mismas siete comprobaciones que una nueva, menos el token de creación y más uno de edición. La unicidad ignora la fila que se está editando, así que un jugador puede volver a guardar el texto que ya tiene.

Borrar no devuelve nada

Un token compra el acto de escribir, no la fila que escribió. Borrar una no devuelve nada, y no hay forma de recuperar saldo que no sea /cca tokens give.

ComandoQuita
/cc customtag deletetodas las etiquetas personalizadas del jugador
/cc customcolor delete <id>un color de chat personalizado, por número de fila
/cc customnick delete <id>un color de nick personalizado
/cc customrank delete <id>un color de rango personalizado

Una fila que está puesta se quita antes de dejar de existir. Después ya nadie puede poseerla, así que dejarla puesta sería solo una línea que no dibuja nada.

Escribirle una a alguien

/cca customtag set <jugador> <texto> [color] le escribe una etiqueta personalizada a un jugador sin gastar ningún token y sin pedir el permiso de creación. Todo lo demás sigue aplicándose: la longitud, los ocho caracteres prohibidos, pattern, blacklist y la unicidad se comprueban exactamente igual que si la escribiera el propio jugador.

Ese es justo el sentido. Las reglas del texto no son un cupo — son lo que mantiene un insulto fuera del chat, y que sea el staff quien escribe la etiqueta no es motivo para saltárselas.

ComandoHace
/cca customtag set <jugador> <texto> [color]escribe una, gratis, con las reglas puestas
/cca customtag clear <jugador>quita todas las etiquetas personalizadas que hizo
/cca customcolor clear <jugador>quita todos los colores de chat que mezcló
/cca customnick clear <jugador>lo mismo para los colores de nick
/cca customrank clear <jugador>lo mismo para los colores de rango

Todos ellos están bajo exyliachatcosmetics.admin.

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