Contenido generado con IA — puede contener errores.

Configurar

Animaciones

Los siete tipos de animación, las opciones que lee cada uno, los veintiún presets de animations.yml y cómo se mantienen sincronizados los fotogramas.

Una animación mueve el color de una skin. El trim, el nombre, el lore y la durabilidad nunca cambian con ella.

animations.yml
animations:
  inferno:
    type: frames
    interval: 0.1
    colors: ['#3a0000', '#c81d00', '#ff7a00', '#ffd000', '#ff7a00', '#c81d00']
    options:
      steps: '6'
ClaveQué es
typerainbow, pulse, frames, o un tipo que haya registrado otro plugin.
intervalSegundos entre fotogramas. Se convierte a ticks y nunca baja de un tick.
colorsColores hex con los que trabaja el tipo. Lo que significan depende del tipo.
optionsValores libres por tipo, escritos como texto.

Luego una skin la nombra:

skins.yml
skins:
  inferno:
    animation: inferno
Un tipo directo también vale

animation: rainbow sin preset con ese nombre cae al tipo con sus valores por defecto — dos ticks de intervalo, sin colores y sin opciones. Por eso rainbow funciona antes de que nadie haya abierto animations.yml.

Los siete tipos

rainbow

Recorre el círculo de tono. Ignora colors y el color propio de la skin.

OpciónPor defectoEfecto
step10Grados de tono por fotograma. Menos es más lento y más suave.
saturation1.00 – 1. Menos lava los colores.
brightness1.00 – 1. Menos los oscurece.

pulse

Respira desde un color de reposo hasta un pico y vuelve.

OpciónPor defectoEfecto
length40Fotogramas de una ida y vuelta completa. Mínimo 2.

La primera entrada de colors es el color de reposo; si no hay ninguna se usa el color de la skin, y si tampoco lo hay, negro. La segunda entrada es el pico; si no hay, blanco.

frames

Recorre colors en orden.

OpciónPor defectoEfecto
smoothtrueMezcla entre colores vecinos en vez de saltar.
steps10Fotogramas que tarda en pasar de un color al siguiente. Solo se lee con smooth activo.

Con smooth: 'false' cada fotograma es un color de la lista. Con un solo color lo mantiene; sin ninguno deja el color propio de la skin tal cual.

Los cuatro que leen el cuerpo

wave, sweep, bloom y flicker saben qué pieza están pintando, así que la animación viaja por el conjunto en vez de dibujar el mismo fotograma en las cuatro. Una skin que solo encaja en una pieza se ve igual que siempre; donde se notan es en un set completo.

TipoQué haceOpciones
waveEl color recorre el cuerpo hacia arriba o hacia abajo, una pieza detrás de otra.length (40 fotogramas), spread (0.25), direction (up / down)
sweepUna banda de luz cruza el cuerpo una vez por pasada y el set se queda apagado.length (40), width (0.45), hold (0), direction
bloomUn pulso se abre desde una pieza; las vecinas van un tiempo después.origin (chestplate), length (40), delay (6), width (14)
flickerLas chispas prenden pieza a pieza. sync: true las enciende las cuatro a la vez.chance (0.18), hold (2), sync (false)

pulse, sweep, bloom y flicker leen el primer color como el de reposo y el segundo como el que buscan; frames y wave recorren todos.

Girar el metal de un trim

Cualquier tipo puede además ciclar el material del trim mientras el cuero sigue con su propia animación. El patrón no cambia nunca — solo el metal.

prismatic:
  type: sweep
  colors: ['#1b1035', '#c77dff']
  options:
    materials: 'amethyst,diamond,gold,netherite'
    trim-hold: 10
    trim-spread: 3
OpciónPor defectoQué hace
materials—Los materiales de trim por los que pasa, en orden. Sin esto no se mueve nada del trim.
trim-hold10Fotogramas que se mantiene cada material.
trim-spread0Fotogramas de desfase entre una pieza y la siguiente, para que el metal llegue al casco después que a las botas.

Necesita una skin con trim-pattern y trim-material. En una skin sin trim el cuero sigue animando, no aparece ningún trim y no se avisa de nada: un ciclo de trim en una skin sin trim es un ajuste sin trabajo, no un error.

Los veintiún presets

PresetTipoIntervaloOpcionesColores
rainbowrainbow0,1 sstep: 8—
rainbow_slowrainbow0,25 sstep: 4—
pastelrainbow0,15 sstep: 6, saturation: 0.45—
heartbeatpulse0,05 slength: 24#7a0010 → #ff2a4d
toxicpulse0,1 slength: 30#0b1f0b → #5dff3a
emberpulse0,1 slength: 40#2b0a00 → #ff5a00
shogunpulse0,08 slength: 32#1a0000 → #c8102e
bloodmoonpulse0,1 slength: 36#2a0000 → #a3001b
infernoframes0,1 ssteps: 6seis rojos y naranjas
oceanframes0,15 ssteps: 8seis azules
galaxyframes0,15 ssteps: 8cinco morados y rosas
auroraframes0,2 ssteps: 10cinco verdes, cianes y violetas
voltageframes0,08 ssmooth: falsecuatro azules y blanco, sin degradado
tempestframes0,12 ssteps: 8cinco grises y azules pálidos
sakuraframes0,2 ssteps: 10cinco rosas
dragonfireframes0,1 ssteps: 6cinco brasas
void_dragonframes0,18 ssteps: 8cinco violetas
frostbiteframes0,2 ssteps: 10cuatro azules de hielo
neonframes0,1 ssteps: 6cuatro neones
verdantframes0,25 ssteps: 10cinco verdes
celestialframes0,2 ssteps: 10cuatro dorados

Cada skin incluida apunta al preset con su mismo nombre.

Todo el mundo va por el mismo fotograma

El número de fotograma sale del reloj del servidor, no de un contador que empieza al equiparse la pieza:

frame = floor(currentTimeMillis / 50 / intervalTicks)

Dos jugadores con rainbow, uno desde hace una hora y otro desde hace un segundo, muestran el mismo color en el mismo instante. Los temporizadores siguen siendo por jugador — eso es lo que exige Folia — pero el reloj que leen es compartido.

Qué cuesta

Una tarea repetida por pieza animada equipada, y nada en absoluto para una skin fija. Un fotograma copia una pila de protocolo que el plugin ya tiene, le escribe un componente de color y reenvía esa ranura; un fotograma cuyo color no ha cambiado no envía ningún paquete. La tarea se detiene sola en cuanto la pieza sale, la skin cambia o el portador se desconecta.

Los nombres desconocidos se avisan, no se adivinan

animation: sparkle sin ese preset ni ese tipo registra qué presets y qué tipos existen, y la skin carga como color fijo. Lo mismo ocurre con una entrada de animations.yml cuyo type sea desconocido o falte.

Añadir un tipo desde código

Un tipo es una fábrica que va de un spec a una animación, así que otro plugin puede registrar uno y usarlo desde YAML como cualquier tipo incluido. Ver API.

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