Contenido generado con IA — puede contener errores.

Juego

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ónCampos
titletext, subtitle, fadeIn, stay, fadeOut, countdown, timeStyle
action-bartext, duration, countdown, timeStyle
boss-bartext, colour, overlay, countdown, countUp, progress, timeStyle
soundname, volume, pitch, category
particlename, count, spread, speed
fireworkcolours, fades, shape, flicker, trail
combat-actionbar:
  action-bar:
    text: "{primary}⚔ {error}Combate {muted}%time%s"
    duration: 0
    countdown: 0
    time-style: tenths

Los 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.

Una duración de cero significa quedarse

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ón

NOMBRE|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 display

Un 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ábricaQué 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:

EstiloSe leePara
AUTO3.3, 47, 1:35Decimales solo donde aportan. El valor por defecto.
SECONDS3Segundos enteros, hacia abajo.
TENTHS / HUNDREDTHS3.3 / 3.34Un número al que el jugador reacciona.
CLOCK1:35, 1:05:03Con relleno, pasada una hora.
FULL1h 5m 3s, 5dTodas las partes, de días hacia abajo, para una duración que se lee una vez.
COMPACT3d, 2.5h, 45sSolo 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

LlamadaQué 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