The menu
One screen: the tabs, the grid, the favourites, and every template menus/emotes.yml declares.
/emote opens one window of 54 slots, menus/emotes.yml. Clicking an emote is the performance, not a
setting: the window closes and the emote starts where the player is standing.
The two lists
| Section | Slots | What it holds |
|---|---|---|
categories | 9,18,27,36 | The tabs down the left, paged with the buttons at slots 0 and 45. |
grid | 11-16,20-25,29-34,38-43 | The open tab's emotes, paged at slots 47 and 52. |
The fixed buttons: YOUR EMOTES at slot 3 (how many they own and have starred, and how to stop
one), EMOTE CRATE at 5, CLOSE at 49.
The menu opens on the tab the player last left it on, or the first tab when that one is gone. A tab is only drawn for a category that has at least one emote.
The favourites tab
The first tab is always the player's own shortlist. It is not a category in emotes.yml, because it
holds different emotes for every player; it is named and drawn by menu.favourites-name and
menu.favourites-icon in config.yml.
| Rule | Detail |
|---|---|
| Starring is free | Owning an emote is not required to star it. A shortlist is what somebody is saving up for as much as what they have. |
| Their order, not yours | Starred emotes stay in the order they were starred. Nothing is re-sorted. |
| Locked rows still show | On this tab a locked emote is drawn even on a server that hides locked emotes everywhere else. |
| Emptying it | Shift click the tab while it is open, or /emote favourites clear. |
An empty shortlist draws empty_template so the tab reads as empty rather than as a screen that
failed to load.
What a click does
| Click | Owned solo emote | Duet | Locked emote |
|---|---|---|---|
| Left | Closes the window and performs it. | Nothing — the row says to use /emote play <id> <player>. | Nothing. |
| Right | Previews it. | Previews it. | Previews it. |
| Shift | Stars or unstars it. | Stars or unstars it. | Stars or unstars it. |
A preview plays the emote on the server's preview stage and reopens the menu afterwards. Until
/emotesadmin preview location has been run it answers preview-unavailable instead, and tells an
admin which command sets it.
Ordering and locked rows
Emotes the player owns are drawn first, then the locked ones — so what they can use is never behind a
page of rows they cannot. With behaviour.hide-without-permission: true the locked ones are dropped
from the grid entirely, except on the favourites tab. With behaviour.require-permission: false
nothing is locked.
Templates
Each list picks a template per row. item_template is the plain state and must stay first.
| Section | Template | Used when |
|---|---|---|
categories | item_template | Another tab is open. |
open_template | This is the tab being looked at. | |
favourites_template | The shortlist tab, while another tab is open. | |
favourites_open_template | The shortlist tab while it is open — the only one carrying the "empty the list" action. | |
grid | item_template | A solo emote the player owns. |
duet_template | A duet the player owns. It has no left-click action: a row has nobody to name. | |
locked_template | An emote they do not own. | |
empty_template | Drawn on the favourites tab when nothing is starred. |
Placeholders
These are the menu's own tokens, filled in while the screen is drawn. They are not PlaceholderAPI placeholders and only work inside this file.
| Placeholder | Where | What it draws |
|---|---|---|
%category_id% | categories | The tab's id — favourites on the shortlist tab. |
%category_name% | categories | The tab's display name. |
%category_material% | categories | The material its icon is drawn with. |
%category_total% | categories | How many emotes the tab holds; on the shortlist, how many are starred. |
%category_owned% | categories | How many of those the player owns. |
%category_status% | categories | menu.tab-open or menu.tab-closed. |
%emote_id% | grid | The emote's id. |
%emote_name% | grid | Its display name, with its colours. |
%emote_material% | grid | The material it is drawn with. |
%emote_description% | grid | Its description from emotes.yml. |
%emote_kind% | grid | menu.kind-solo or menu.kind-duet. |
%emote_favourite% | grid | menu.favourite-on or menu.favourite-off. |
%emote_tier% | grid | The rarity's name, in the rarity's colour. |
%emote_tier_id% | grid | The rarity's id. |
%emote_tier_color% | grid | That colour on its own. |
%favourites_count% | Anywhere | How many emotes they have starred. |
%owned_count% | Anywhere | How many emotes they may perform, by permission or unlock. |
%keys% | Anywhere | Crate keys they hold. |
%unlocked_count% | Anywhere | How many emotes they have won from the crate. |
%catalogue_count% | Anywhere | How many emotes the server declares. |
Actions
| Action | What it does |
|---|---|
emote:open | Opens the screen. |
emote:category <id> | Switches tab. favourites is a valid id. |
emote:play <id> | Closes the window and performs the emote. A duet answers needs-partner. |
emote:favourite <id> | Stars or unstars. |
emote:favourites_clear | Empties the shortlist. |
emote:preview <id> | Previews an emote and reopens the menu afterwards. |
emote:crate | Opens the crate. |
emote:crate_open <amount> | Spends that many keys and drops that many reels. Used by menus/crate.yml. |
Wording
The few strings one template draws for every row live in config.yml:
menu:
tab-open: "{success}✔ You are here"
tab-closed: "{warning}➥ Click to open"
favourites-name: "Favourites"
favourites-icon: "AMETHYST_SHARD"
favourite-on: "{highlight}★ In your favourites"
favourite-off: "{muted}☆ Not in your favourites"
kind-solo: "Solo"
kind-duet: "With a friend"Starring, a key handed over, an unlock granted by an admin — every change to a player's favourites, keys or unlocks redraws the emote screen if they have it open.
Something missing on this page? Tell us on Discord