Content generated with AI — it may contain mistakes.

Configuring

Emotes

The 68 shipped emotes by tab, and how an entry in emotes.yml is written.

Every emote is an entry in emotes.yml. The key is its id: it is what commands, permissions, placeholders and the crate call it, lowercased. The tables below are the shipped catalogue in the order each tab draws it.

ColumnWhat it says
RarityIts tier: the colour it is named in, how often the crate lands on it, and which exyliaemotes.tier.<tier> grants it.
Kindsolo, or duet for one that takes two players. See Duets.
Playsendless loops until the player stops it; once ends on its own.
CooldownIts own cooldown. — means only the server's behaviour.cooldown applies.
PropWhat is drawn besides the body.

Social

IdNameRarityKindPlaysCooldownProp
waveWAVEcommonsoloendless8s—
bowBOWraresoloonce——
saluteSALUTEcommonsoloonce——
highfiveHIGH FIVEepicduetonce8s—
handshakeHANDSHAKEepicduetonce8s—
swaySWAYcommonsoloendless8s—
nodNODcommonsoloendless8s—
shrugSHRUGcommonsoloendless8s—
thumbs_upTHUMBS UPraresoloendless8s—
beckonCOME HEREcommonsoloendless8s—
blow_kissBLOW A KISSepicsoloendless10sHeart particles

Fun

IdNameRarityKindPlaysCooldownProp
danceDANCEraresoloendless8sA ring of END_ROD
facepalmFACEPALMcommonsoloendless8s—
flexFLEXraresoloendless8s—
dabDABcommonsoloendless8s—
cartwheelCARTWHEELepicsoloendless8s—
point_laughPOINT AND LAUGHcommonsoloendless8s—
sip_teaSIP TEAraresoloendless8s—
slow_clapSLOW CLAPcommonsoloendless8s—
crownCROWNlegendarysoloonce10sA crown of gold blocks
sleepBORINGcommonsoloendless8s—
twerkTWERKepicsoloendless10s—
shuffleSHUFFLEraresoloendless10s—
headbangHEADBANGraresoloendless10s—
spinSPINepicsoloendless10s—
air_guitarAIR GUITARraresoloendless10s—
backflipBACKFLIPepicsoloendless10s—
shadowboxSHADOW BOXraresoloendless10s—
discoDISCOcommonsoloendless8s—
balletPIROUETTEepicsoloendless10s—
thrillerTHRILLERepicsoloendless10s—
egyptianEGYPTIANcommonsoloendless10s—

Meme

IdNameRarityKindPlaysCooldownProp
tposeT-POSEcommonsoloendless8sA ring of END_ROD
griddyGRIDDYraresoloendless8s—
moonwalkMOONWALKepicsoloendless8s—
robotROBOTcommonsoloendless8s—
sprinklerSPRINKLERraresoloendless8s—
six_sevenSIX SEVENlegendarysoloendless10s—
macarenaMACARENAraresoloendless10s—
flossFLOSSepicsoloendless10s—
robot_walkROBOT WALKraresoloendless10s—
gangnamHORSE DANCEraresoloendless10s—
default_danceDEFAULT DANCEepicsoloendless10s—
woahHIT THE WOAHraresoloendless8s—
take_the_lTAKE THE Lcommonsoloendless8s—
caramelldansenCARAMELLepicsoloendless10s—
ymcaY.M.C.A.raresoloendless10s—
carltonCARLTONepicsoloendless10s—
orange_justiceORANGE JUSTICEepicsoloendless10s—
nae_naeWHIP NAE NAEraresoloendless10s—
kazotskyKAZOTSKY KICKlegendarysoloendless10s—

Party

IdNameRarityKindPlaysCooldownProp
confettiCONFETTIraresoloonce8sPink and light-blue wool falling
cakeBIRTHDAYepicsoloonce10sA cake of concrete, candle flames and smoke
toastTOASTcommonsoloonce——
trophyTROPHYlegendarysoloonce12sA gold-block trophy
fireworkFIREWORKraresoloonce8sA block rocket and a firework
tophatTOP HATlegendarysoloonce12sA top hat of concrete, and what comes out of it
cardtrickCARD TRICKepicsoloonce8sPaper thrown into the air
fireballFIREBALLlegendarysoloonce12sA ball of magma blocks
levitateLEVITATEepicsoloonce10sThree amethyst blocks
vanishVANISHlegendarysoloonce12sSmoke and portal particles
hypeHYPEcommonsoloendless8s—
congaCONGAraresoloendless10s—
limboLIMBOraresoloendless10s—
lighterLIGHTERcommonsoloendless8s—
sparklerSPARKLERraresoloendless10sEND_ROD sparks
countdownCOUNTDOWNepicsoloonce10sFirework particles
chicken_danceCHICKEN DANCEcommonsoloendless10s—
Some ids carry an underscore

thumbs_up, blow_kiss, point_laugh, sip_tea, slow_clap, air_guitar, six_seven, robot_walk, default_dance, take_the_l, orange_justice, nae_nae and chicken_dance. Commands and permissions take them as they are. The %exyliaemotes_emote_<id>_<field>% placeholders cannot reach them — see Placeholders.

Writing an entry

categories:
  social:
    name: 'Social'
    material: PLAYER_HEAD
    priority: 1
 
emotes:
  wave:
    category: social
    tier: common
    name: '{primary}&lWAVE'
    material: PLAYER_HEAD
    priority: 1
    cooldown: 8s
    description:
      - '{letters}A hand up and two turns of the wrist.'
      - '{letters}The one everybody tries first.'
    effects:
      - '[RAGDOLL] {victim};intact:0;follow:1;loop:true;tempo:0.90-1.20;loop_from:0.42;keys:...'
      - '[CAMERA] loop:true;keys:0.00 distance=2.9 yaw=25 pitch=12 height=1.5 | 5.00 yaw=~360 ease=linear'
      - '[SOUND] BLOCK_AMETHYST_BLOCK_CHIME;0.4;1.9;repeat:240;every:0.44'

A category

KeyDefaultWhat it does
nameThe keyWhat the tab is called.
materialPAPERWhat the tab is drawn as.
priority999Where the tab sits; lower comes first.

A category with no emotes in it gets no tab. The key is also its permission: exyliaemotes.category.<key>.

An emote

KeyDefaultWhat it does
categorysocialWhich tab it appears under. An emote naming an undeclared category is logged and kept: no tab shows it, but commands can still play and grant it.
tiercommonIts rarity, one of config.yml's tiers keys. One that is not declared is logged, and the emote falls back to the first rarity.
kindsoloduet for two players. duo, pair, two and together are read as duet; anything else is solo.
nameThe keyWhat menus, messages and placeholders call it.
materialBARRIERWhat it is drawn as in the menu and the crate.
descriptionEmptyOne line or a list of lines. <nl> also breaks a single line. lore is read as the same key.
priority999Where it sits in its tab; lower comes first.
cooldownNoneIts own cooldown, written out: 5s, 1m30s. A bare number is seconds. One that cannot be read is logged and ignored.
gap1.51For a duet, how far apart the two bodies stand, in blocks. Never less than 0.5.
effects—The steps that play. An emote with none is logged and refuses to play.

A mistyped entry is reported on the console with the entry it came from and never costs the server its other emotes.

The steps

An emote is one [RAGDOLL] line and one [CAMERA] line, plus any sounds and props around them. Every token of ExyliaLib's sequence module can be used; the comment at the top of the shipped emotes.yml explains the body and camera parameters frame by frame.

LineWhat it is
[RAGDOLL] {victim};...;keys:<frames>The body. {victim} is the player performing it: the body faces where they were looking and wears their skin — the head always, the rest only with a mineskin-key in ExyliaLib's config.yml; without one the rest is drawn in blocks of the nearest colour.
[CAMERA] keys:<frames>The shot the player watches from. It always looks at the body.
[SOUND], [CIRCLE], [SCATTER], [SPHERE], [FIREWORK], [DELAY]Everything else: what is heard, and props drawn around the body.
Nothing is heard past sixteen blocks

A [SOUND] volume above 1.0 is lowered to 1.0 as the file is read. Above one the client does not play it louder, it plays it further — sixteen blocks times the number — and an emote is played over and over in lobbies by anybody who feels like it.

Endless emotes

An emote is endless when its [RAGDOLL] line says loop:true. It is written as an entry and a cycle:

ParameterWhat it does
loop:trueThe body plays its cycle again and again.
loop_from:<seconds>Where the entry ends and the cycle starts. The last frame has to leave the body in exactly the pose this point left it in, or it snaps back once a cycle.
tempo:<min>-<max>A speed rolled once per play and shared by every piece of that body, so the same dance is a shade quicker or slower every time.
accel: / max_speed:Wind the cycle up a little every time round, up to a ceiling. Only six_seven does it.

The camera of an endless emote loops too (loop:true, usually a full turn with yaw=~360), and a sound that has to keep the beat is written repeat:<times>;every:<seconds>: its every: follows the rolled tempo.

An endless emote has no length of its own. It lasts until the player stops it, or until behaviour.endless-limit — five minutes by default — ends it for a player who walked away from their keyboard mid-dance.

Without a camera

With camera.enabled: false every [CAMERA] line is taken out as the catalogue is compiled. The emote still plays for everybody around the player; the player simply does not see it. A showcase never plays the camera line either — see Showcases.

Renaming a key is not free

The key is the id, the permission and what the crate unlocked. An emote whose key you rename is a new emote: whoever owned the old one by permission or by crate unlock does not own the new one.

Something missing on this page? Tell us on Discord