Contenido generado con IA — puede contener errores.

Visuales

Ragdolls

El cuerpo de un jugador cortado en sus partes y coreografiado: lanzado, bailado, importado de Blockbench o Emotecraft.

Un cuerpo que se deshace, o que se mueve como uno. El jugador se corta en sus seis partes (cabeza, torso, dos brazos, dos piernas), cada una con su propia skin, y esas partes se mueven como una sola coreografía. Puede ser lanzado, abierto, deletreado en letras o llevado, o bailado fotograma a fotograma.

effects:
  # Reventado. Las piezas salen hacia fuera, caen, rebotan y se quedan.
  - '[RAGDOLL] {victim};intact:0.3;life:2.6;speed:4.2;up:6.4;spin:2.2;detail:2;light:15'
  # Levantado, abierto y llevado hacia arriba. No queda nada en el suelo.
  - '[RAGDOLL] {victim};pose:vortex;rise:3.0;open:0.7;turns:1.8;life:3.0;detail:2;glow:{highlight}'
  # Un saludo importado de Blockbench, con el retraso y la respiración de un cuerpo.
  - '[RAGDOLL] {victim};anim:wave;follow:1;breathe:1;rig:tophat'

Los ragdolls necesitan PacketEvents, como cualquier display.

A quién lleva

CabezaCuerpo
{victim}La víctima, o el asesino si no hay víctima. La de por defecto.
{killer}El asesino, o la víctima si no hay asesino.
{crowd}Un espectador que no es ninguno de los dos; seat: elige cuál (0, 1, 2…).

Si no hay ningún jugador que llevar, la línea lo dice una vez y no dibuja nada. Un plugin puede darle a la línea un cuerpo propio con SequenceTarget.wearing(model).

Las poses

PoseQué pasaTambién se escribe
burstReventado: las piezas salen hacia fuera, caen, rebotan y se quedan. La de por defecto.
spreadSe levanta del suelo y se abre, brazos y piernas en cruz, girando despacio, y luego se suelta.starfish, open
knockedAbierto como spread y golpeado varias veces desde distintos lados.knock, batted, hit
vortexLlevado: las piezas suben en espiral hacia dentro y desaparecen arriba.taken, ascend, spiral
balloonLa cabeza se hincha demasiado, se tambalea y revienta.bighead, big_head, swell, pop
helicopterLos brazos se ponen planos sobre la cabeza como un rotor, el cuerpo gira al revés y se va hacia delante.chopper, rotor
planeBrazos como alas, morro arriba, inclinándose mientras sube. Con subida negativa es un picado.fly, glide, jet
flattenClavado contra el suelo y dejado plano: una mancha con forma de jugador.pancake, squash, flat
meltSe hunde donde está y desaparece. Ni lanzamiento ni rebote.sink, dissolve
signLas piezas se colocan formando letras y aguantan ahí, luego caen.letters, spell, word
thrownEnviado a algún sitio de una pieza, dando vueltas. Sin gravedad no vuelve.launched, ejected, carried, spaced
animateReproduce los fotogramas de keys: o un anim: importado. Se elige sola cuando se escribe cualquiera de los dos.animated, dance, choreography, keys

Una pose desconocida reproduce burst.

Sus parámetros

ParámetroQué hacePor defecto
pose:Cuál de las doce de arriba.burst
life:Segundos que duran las piezas.2.2; ver abajo
intact:Segundos que el cuerpo aguanta entero antes de que le pase nada.0.3
detail:Lo fino que se corta el cuerpo, de 1 a 5.1
size:Cómo de grande es; 1 es tamaño jugador.1
light:Nivel de luz, de 0 a 15.la del mundo
glow:Color del contorno: un nombre, #rrggbb o un token {palette}.ninguno
fade:Se encoge al final en vez de desaparecer.true
settle:Deja de girar al aterrizar.true
y:Altura sobre el ancla.0
face:Se gira hacia quien lanzó la secuencia.true
speed: up:Con qué velocidad salen las piezas, hacia fuera y hacia arriba.3.2 / 6.5
spread:Cuánto se diferencian las piezas entre sí, de 0 a 1.0.45
gravity: bounce:Bloques por segundo al cuadrado, y la velocidad que conservan al caer.26 / 0.32
spin:Vueltas por segundo.1.8
rise: open:A qué altura cuelga un cuerpo sostenido, y cuánto abre las extremidades.1.1 / 0.55
lift: hang: turns:Segundos que tarda en subir, segundos que cuelga y vueltas que da mientras cuelga.0.45 / 0.9 / 0.35
hits: every: force:Para knocked: cuántos golpes, segundos entre ellos y cuánto lo empuja cada uno.3 / 0.32 / 0.85
swell:Para balloon: cuántas veces su tamaño alcanza la cabeza.3
squash:Para flatten: qué queda de la altura de una pieza.0.14
sign: letters:Para sign: qué deletrea el cuerpo, y cuánto mide una letra en bloques.EZ / 2.4
dir:Hacia dónde se lanza o vuela, en grados. 0 es este, 90 es sur.lejos del asesino
hold: offhand: hat:Objetos en la mano derecha, en la izquierda y en la cabeza.ninguno
hold_size: hat_size: hat_y:Sus tamaños, y a qué altura va el sombrero.0.7 / 0.6 / 0
rig:Props de rigs.yml, separados por comas.ninguno
strings:Hilos de marioneta desde las dos manos y la cabeza hasta esta altura.0
chains:Cadenas de las muñecas al suelo, a esta distancia hacia cada lado.0
snip:Segundos hasta que se rompen los hilos o las cadenas.el último fotograma

Un life: escrito siempre gana. Sin él, un cuerpo en bucle dura cinco minutos como red de seguridad, y uno coreografiado dura su tiempo entero, sus fotogramas y su final.

Lo que cuesta el detalle

La cabeza es siempre una pieza; las otras partes se cortan en columnas y filas según su tamaño. Detalle 1 son seis displays, 2 diecinueve, 3 cincuenta y seis y 4 setenta y tres. 5 es una carcasa: un bloque por parte con el diseño de la skin en placas sobre cada cara, hasta 120 displays. Un cuerpo que deletrea se corta como mucho a 4. Dos ya se lee como un cuerpo a cualquier distancia desde la que alguien lo mire de verdad.

Coreografía: keys:

keys: es un baile escrito fotograma a fotograma, separados por |. Cada fotograma empieza con los segundos que tarda en llegar a él, y luego una palabra de pose o canales:

effects:
  - '[RAGDOLL] {victim};keys:0.25 crouch ease=anticipate | 0.35 stand up=1.6 flip=~-360 elbows=60 ease=out | 0.3 up=0 plant=1 knees=40 ease=bounce | 0.3 stand;then:dissolve;follow:1'
CanalQué mueve
at=r,u,f, right= up= forward=Las caderas, a la derecha, arriba y adelante.
flip= turn= lean=El cuerpo entero alrededor de las caderas.
head= body= arm_r= arm_l= leg_r= leg_l= arms= legs=Una articulación, como pitch,yaw,roll.
<joint>_at=out,up,fwdSepara una parte de su articulación.
size=, <joint>_size=Tamaño del cuerpo o de una parte.
elbow_r= elbow_l= elbows= knee_r= knee_l= knees= spine=Dobla una articulación, como ángulo,dirección.
plant=0..1Mantiene los pies en el suelo vayan donde vayan las caderas.
shake=Lo sacude.
ease=in_out (por defecto), in, out, linear, back, anticipate, elastic, bounce, snap, smooth.

~ hace un valor relativo: flip=~-360 es una voltereta más. Las palabras de pose son stand, tpose, star, cheer, reach, zombie, hug, crouch, sit, kneel, lie, prone, bow, pray, dab, superman, splits, float, limp, fetal, swoon, heart y arabesque; una palabra de pose deshace todos los dobleces. Un giro de más de 160° por tick se avisa al cargar.

Doblar, plantar y respirar

  • Dobleces. Un codo dobla el antebrazo hacia delante, una rodilla la espinilla hacia atrás, la columna el pecho hacia delante. Una dirección de 90 dobla hacia fuera; -90 en un codo lo cruza por delante del cuerpo. Un cuerpo que se dobla se corta en al menos dos filas por extremidad, incluso con detalle 1.
  • Pies plantados. Con plant=1 las piernas se resuelven para llegar al suelo, así que un cuerpo que se hunde dobla las rodillas. Los pies se quedan donde estaban cuando plant subió de cero por última vez.
  • Respiración. breathe: (de 0 a 3) pone una respiración lenta sobre cada fotograma: la columna, los hombros y la cabeza, una respiración cada 3,4 segundos, ajustada para que un bucle contenga un número entero de ellas.
  • Inercia. follow: (de 0 a 3) hace que las articulaciones sueltas vayan con retraso y se pasen: 0 es exacto, 1 un cuerpo, 2 un dibujo animado.

El final: then:

Lo que pasa tras el último fotograma: hold (por defecto), burst, collapse, implode, dissolve o spell.

Bucles y aceleraciones

ClaveQué hace
loop:Repite los fotogramas. Avisa si el último fotograma no coincide con el primero; una vuelta entera cuenta como coincidencia.
loop_from:Segundos de entrada que se reproducen una vez antes del bucle.
accel: max_speed:Cada ciclo esas veces más rápido, hasta el tope: una aceleración progresiva.
tempo:Velocidad de reproducción, o un rango 1-1.6 que se tira una vez por reproducción para que una multitud no baile al compás.

Una cámara que gira con un cuerpo en bucle es su propia línea [CAMERA] en la secuencia.

Importar animaciones de Blockbench y Emotecraft

plugins/<TuPlugin>/animations/wave.json

Pon el archivo en la carpeta animations del plugin cuya secuencia lo reproduce. Los archivos se leen al primer uso y otra vez cada vez que cambia la carpeta; no hay nada que recargar.

FormatoQué se lee
Blockbench (exportación Bedrock o GeckoLib)Huesos head, torso, body (el cuerpo entero), right_arm, left_arm, right_leg, left_leg, y huesos <parte>_bend para los dobleces. Rotación, posición y escala, con sus curvas. "loop": true hace bucle.
Emotecraftmoves por tick, con sus ticks de inicio, fin y parada, y su punto de bucle.

Un archivo con una sola animación se llama como el archivo (wave.json → wave). Un archivo de Emotecraft también responde a su name, y cada animación de un archivo de Blockbench a su clave completa (animation.player.wave) o a su última parte (wave). Los nombres no distinguen mayúsculas. Un archivo que hace bucle pone loop y loop_from por ti.

Props: rigs.yml

plugins/ExyliaLib/rigs.yml guarda cosas hechas de bloques que un cuerpo lleva puestas, sostiene o carga. Es el archivo del servidor, no de un plugin, así que cualquier línea [RAGDOLL] del servidor puede usar cualquier prop: rig:tophat, rig:crown,wand. Viene con tophat, crown, wand y cake.

plugins/ExyliaLib/rigs.yml
rigs:
  halo:
    joint: head
    at: 0, 0.25, 0
    blocks:
      - 'ring GOLD_BLOCK r:0.30 n:18 y:0 s:0.08'
CampoQué es
jointhead, face, chest, hips, hand_r, hand_l, foot_r, foot_l.
atDesplazamiento del prop entero respecto a la articulación.
blocksat MATERIAL x: y: z: s: un bloque; ring MATERIAL r: n: y: s: un círculo; disc MATERIAL r: y: s: uno relleno.

Los números van en los ejes de la propia articulación: y sigue la extremidad y z es hacia donde mira el cuerpo. Un prop se resuelve junto con el cuerpo, así que se queda en la mano durante una rueda. Como mucho 256 bloques por prop.

Skins reales: ragdoll-skin-quality

Un ragdoll lleva la skin real del jugador sin configurar nada: ni clave ni cuenta. La cabeza es el objeto de cabeza real del jugador, así que la cara es exacta desde el primer fotograma. El resto del cuerpo se corta en piezas, y cada pieza se convierte en textura con Exylia Skins, un servicio gratuito con una caché compartida por todos los servidores. Una pieza que cualquier servidor ya hizo llega al momento; una nueva se dibuja con bloques del color más parecido hasta que llega. Lo único que se configura es lo fino que se corta el cuerpo, en plugins/ExyliaLib/config.yml:

plugins/ExyliaLib/config.yml
ragdoll-skin-quality: normal
CalidadPiezas por skinCómo se ve
high18Cubos de 4 píxeles; un cuerpo que se rompe sale en 19 piezas.
normal (por defecto)10Cada píxel de la skin, exacto; cada parte una caja superior y una inferior, 11 piezas.
low5Una cabeza por parte; se pierde un tercio de las filas.

En cuanto llega cualquiera de sus piezas, un cuerpo con su skin real se corta según esta calidad e ignora detail:.

  • Se hace una vez, para todos. Una pieza se nombra por el hash de sus píxeles y se sube una sola vez. Una pieza que es entera del color de un bloque se dibuja como ese bloque y nunca se sube. Cada plugin que muestra cuerpos guarda las piezas que recibió en su propia base de datos (tabla exylia_ragdoll_skins), así que al reiniciar no pide nada.
  • Se prepara al entrar. Una skin se prepara cuando entra su dueño. Una skin cambiada en mitad de la sesión (por ejemplo con /skin de SkinsRestorer) se vuelve a preparar la siguiente vez que se lee.
  • Modo offline. Un jugador sin skin lleva la skin por defecto que el juego da a su UUID (Steve, Alex y las demás skins por defecto, anchas o finas).
  • Nunca se espera. Una pieza cuya textura aún no ha llegado se dibuja con bloques hasta que llega.
  • Se aplica en caliente. /exylialib reload lee la calidad, y un cambio vuelve a preparar las skins de todos los conectados.
Si venías de una clave de MineSkin

Las versiones anteriores necesitaban una mineskin-key. Ya no se lee: el siguiente arranque la quita del config.yml, como hace con cualquier clave que el archivo ya no tiene.

La API

PluginRagdolls ragdolls = Ragdolls.of(this);
 
RagdollAnimation hop = RagdollAnimation.parse(
        "0.25 crouch ease=anticipate | 0.35 stand up=1.6 flip=~-360 | 0.3 up=0 plant=1 knees=40 ease=bounce",
        problem -> getLogger().warning(problem));
 
RagdollMotion dance = RagdollMotion.builder()
        .pose(RagdollPose.ANIMATE)
        .animation(hop)
        .finish(RagdollFinish.DISSOLVE)
        .follow(1).breathe(1)
        .tempo(1.0, 1.3)
        .build();
 
RagdollProp crown = Rigs.get("crown");
RagdollModel body = RagdollModel.of(victim).detail(2).light(15)
        .rigs(crown == null ? List.of() : List.of(crown));
 
RagdollHandle handle = ragdolls.show(body, dance, victim.getLocation(), viewers);
TipoQué da
RagdollModelof(player), ofTexture(base64), ofAccount(name) (un future que cae a la skin por defecto), of(RagdollSkin.flat(colores), cabeza) para un cuerpo que no es un jugador. Luego detail, scale, glow, light, carrying(main, off, hat), rigs.
RagdollMotion.builder()Cada clave de la línea como método: pose, animation, finish, loop, loopFrom, winding, tempo, follow, breathe, strings, chains, life, speed, gravity…
RagdollAnimationsfind(pluginName, name) para un archivo importado; read(json, file, problems) para leer uno sin servidor.
RagdollHandleremove(), settle(millis) para ponerlo de pie y que se vaya, isShowing(), pieces().
Rigsget(id), ids().

ragdolls.show resuelve el vuelo entero antes de volver. Aquí no se simula nada ni se tickea nada: cada pose se calcula de antemano y se le entrega al cliente.

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