Efectos y secuencias
Títulos, barras de acción, boss bars, sonidos, partículas y fuegos artificiales — los declara el dueño, los lanza el plugin.
El plugin dice qué ha pasado. El dueño del servidor decide a qué se parece eso.
Effects.play(config.onWin(), player);EffectConfig
Seis secciones opcionales que se anidan en tu propio record de config como cualquier otra. Una sección sin escribir no hace nada.
| Sección | Campos |
|---|---|
title | text, subtitle, fadeIn, stay, fadeOut, countdown, timeStyle |
action-bar | text, duration, countdown, timeStyle |
boss-bar | text, colour, overlay, countdown, countUp, progress, timeStyle |
sound | name, volume, pitch, category |
particle | name, count, spread, speed |
firework | colours, fades, shape, flicker, trail |
combat-actionbar:
action-bar:
text: "{primary}⚔ {error}Combate {muted}%time%s"
duration: 0
countdown: 0
time-style: tenthsLos tiempos son segundos con decimales — countdown: 3.3 son 3,3 segundos reales. %time%
pertenece al efecto, nunca al registro global de placeholders: dos cuentas atrás en pantalla no pueden
mostrar el mismo número. time-style es un nombre de estilo de TimeFormats — auto, tenths,
clock.
No significa expirar al instante. Una barra cuya cuenta atrás la lleva el plugin — un combat tag
escribiendo su propio tiempo restante — quiere duration: 0 para vivir hasta que algo la pare.
Un efecto entero en una línea
Los archivos de kits y clases suelen llevar el sonido o la partícula en un solo campo, para que quien llama no tenga que partirlo:
Effects.soundFrom("BLOCK_ANVIL_PLACE|1|1").show(player);
Effects.particleFrom("CLOUD|80|1.5|1.5|1.5|1.5").at(location).show(player);
Effects.particleFrom("FLAME|20|0.5").at(location).show(player); // un solo valor de dispersiónNOMBRE|volumen|tono para sonidos, NOMBRE|cantidad|dx|dy|dz|velocidad para partículas, y también se
acepta un NOMBRE|cantidad|dispersión|velocidad más corto. La barra vertical es el único separador —
una clave con espacio de nombres como minecraft:flame lleva dos puntos que tienen que sobrevivir al
corte. Las partes que falten caen a volumen y tono completos, cantidad 1 y sin dispersión.
Builders
Effects.title("{success}&lVICTORIA").subtitle("{muted}%player%").show(player);
Effects.bossBar("{primary}Empieza en {highlight}%time%").countdown(10).showAll();
Effects.firework().shape("BALL_LARGE").colours("#8a51c4").at(location).show();La cuenta atrás es de quien llama
Cuánto dura un temporizador no es una clave de config. Una cuenta atrás siempre es el mismo número que ya está contando otra cosa — la partida, el calentamiento, el tag de combate — así que una clave que pudiera ponerle otro valor solo podría contradecir lo que está pasando. Los segundos vienen del código; el aspecto, del archivo:
Effects.play(config.onCountdown(), player, matchSeconds); // un bloque entero, contando
Effects.title(text).countdown(matchSeconds).show(player); // o un solo displayUn teletransporte ya lo hace por ti: onStart(effect) cuenta sobre el calentamiento que recibió.
Los tiempos son segundos con decimales: countdown(3.3) son 3,3 segundos reales y %time%
muestra 3.3. %time% es del efecto, nunca del registro global — dos cuentas atrás en pantalla no
pueden mostrar el mismo número. timeStyle es un nombre de estilo de TimeFormats: auto, tenths,
clock y demás.
Temporizadores
Timer es el reloj detrás de un efecto con tiempo — un valor, no una tarea.
| Fábrica | Qué es |
|---|---|
Timer.countdown(segundos) | Va hasta cero. |
Timer.countUp() / countUp(total) | Contadores de tiempo transcurrido. |
Timer.ofCooldown(player, key) | Lee un cooldown en marcha en vez de contar por su cuenta. |
ofCooldown es el que conviene conocer: el cooldown sigue siendo la verdad — compartida y persistente —
y la pantalla solo lo mira, terminando en el momento en que él termina. advance y extend no hacen
nada en un temporizador así; da el tiempo por Cooldowns y la barra lo muestra.
Ticks convierte: fromSeconds, toSeconds, fromMillis, toMillis, y parse(texto, alternativa)
entendiendo sufijos s, ms, t, m y h.
Estilos de tiempo
TimeFormats es lo que nombra un timeStyle, y con lo que se escribe cada duración del ecosistema:
| Estilo | Se lee | Para |
|---|---|---|
AUTO | 3.3, 47, 1:35 | Decimales solo donde aportan. El valor por defecto. |
SECONDS | 3 | Segundos enteros, hacia abajo. |
TENTHS / HUNDREDTHS | 3.3 / 3.34 | Un número al que el jugador reacciona. |
CLOCK | 1:35, 1:05:03 | Con relleno, pasada una hora. |
FULL | 1h 5m 3s, 5d | Todas las partes, de días hacia abajo, para una duración que se lee una vez. |
COMPACT | 3d, 2.5h, 45s | Solo la unidad mayor, hasta años, para una duración dentro de una frase. |
FULL sube hasta días en vez de contar horas para siempre, así que un cooldown de cinco días se lee
5d y no 120h. COMPACT va más lejos — un mes son treinta días y un año trescientos sesenta y
cinco, que es justo la idea: 2mo ago no pretende saber qué meses. Todo lo que escriben estos
estilos lo vuelve a leer una entrada duration(): 30s, 1h30m, 2d, 1w, 2.5h.
Lanzar y parar
| Llamada | Qué hace |
|---|---|
Effects.play(config, viewer) | Lanzarlo para un jugador, devolviendo un Display. |
Effects.playAll(config) | Todos los conectados. |
Effects.stopFor(viewer) | Parar lo que este plugin le esté mostrando. |
Effects.stopAll(pluginName) | Parar todo lo de un plugin. |
Un Display es el mango: text(...) reescribe lo que dice una barra sin reiniciarla, y stop() la
quita.
Secuencias
Una secuencia es coreografía escrita en configuración — formas, sonidos, pausas, display entities y cuerpos, compilada una vez:
PluginSequences sequences = Sequences.of(this);
Sequence intro = sequences.compile(config.onCapture());
sequences.play(intro, SequenceTarget.at(location));Veinticinco formas, trece tokens más, y cualquier forma dibujable con partículas o con display entities que se mueven, giran y caen solos. Las entradas llevan probabilidad, condiciones y audiencia, así que "una de cada cinco veces, solo si el jugador está agachado, visible a veinte bloques" es configuración y no código.
La sintaxis completa, la API y el editor en el juego están en Secuencias.
Vistas previas
Mostrarle a un jugador un efecto contra un cielo vacío y devolverlo después:
Previews.of(this).show(player, sequence);Es lo que usa un editor para que quien elige un efecto de muerte pueda verlo antes de guardar, sin lanzarlo dentro de una arena en marcha.
¿Falta algo en esta página? Dínoslo en Discord