Skip to content

Emote

Server-side emote platform for Minecraft

Fabric
Loaders
Fabric
Downloads on Modrinth
3K
Followers on Modrinth
12
versions
44
Updated
October 22, 2026Oct 22
Published
in 2026
Thank you, Popular Vibe! · swipe

At a glance

Runs on Fabric
For Minecraft 26.1–26.3
Needed on the server; optional in the game
Latest version — 3.0.0+26.3-beta1 from October 22, 2026
Requires Fabric API
License Apache-2.0 — free
Where it's needed
In gameoptionalOn serverrequired

Needed on the server; optional in the game

Game versions26.1–26.3

Emote

Emote demo

Thanks to Popular Vibe for allowing us to use their animation!

▶ Watch the full emote demo on YouTube

Web converter Wiki Modrinth GitHub Discord

Join the Discord server to share emotes you have made.

Features

Emote is a server-side emote mod that plays animations with Minecraft display entities. All server features work when the mod is installed only on the server. Installing it on the client is optional and adds an emote wheel and automatic third-person view during playback.

The web converter imports BD Engine, GeckoLib, and Animated Java projects, with experimental support for Bedrock and Emotecraft. Configure skin parts, metadata, playback settings, and events before export.

On the server, LuckPerms permissions can assign emotes and idle emotes per player. Sequences can connect multiple animations, with the player's skin applied to compatible animations. A server API is also available for other mods to register emotes, control playback, and receive events.

Commands

Player

CommandDescription
/emoteOpens the Emote Menu dialog.
`/emote play `Plays an emote by ID.
VOpens the client emote wheel.

Use the wheel's Edit Wheel button to add, remove, or reorder entries. The order is stored on the client separately for each server. The emote menu and wheel editor can search by name, ID, description, or #tags included in the description. Multiple #tags match emotes containing all specified tags.

Administration

CommandDescription
/emote listLists loaded emotes with their IDs, durations, and availability.
/emote infoShows current playback, display-entity capacity, skin-processing queue, and loaded-emote status.
/emote reloadReloads configuration and animations.
`/emote enable/disable `Enables or disables an emote.
`/emote stop , /emote stop @a`Stops selected players' emotes; use @a for all players.
`/emote stress-test [load]`Measures server and emote processing performance with concurrent emotes (default 50 instances). 50 or 50i requests 50 instances; 768d requests up to 768 display entities.
/emote accountLists registered bake accounts and the selected skin provider.
/emote account loginConnects a Minecraft account using Microsoft device login.
`/emote account remove `Removes a bake account by name or UUID.

Administrative commands use the emote.manage permission and are granted to game master operators by default.

Server management

config/emote/
├── config.json
├── emotes.json
├── emote/
└── resource-pack/

The directory and configuration files are created automatically on first startup, with 20+ sample emotes included under emote/.

Place JSON exported by the converter under emote/. Subdirectories are loaded as well, and emotes use the id in the JSON rather than the filename. Invalid files are skipped individually, while every file sharing a duplicate ID is rejected.

config.json

{
  "schema_version": 1,
  "menu_page_size": 6,
  "mineskin_api_key": "",
  "mineskin_poll_interval_seconds": 3,
  "mineskin_cache_retention_days": 30,
  "mineskin_cache_max_mib": 256,
  "max_active_display_entities": 768,
  "default_skin": ""
}

Set mineskin_api_key to generate player skin textures when no bake accounts are registered. Completed cached textures remain usable without either credential.

emotes.json

{
  "schema_version": 3,
  "disabled": ["emote:anvil"],
  "permissions": [
    {
      "permission": "emote.default",
      "emotes": ["emote:hello", "emote:backflip"]
    },
    {
      "permission": "emote.vip",
      "emotes": ["emote:vip\\..*"],
      "idle": {"delay": "300s", "emote": ["sit:idle.sit", 70, "music:idle.piano", 30]},
      "cooldown": "x0.8"
    },
    {
      "permission": "emote.admin",
      "emotes": ["*"]
    }
  ]
}

disabled turns off emotes, while permissions determines the emotes and idle emotes available to each player. Valid emote IDs in emotes are matched literally; other entries are Java regular expressions matched against the complete emote ID. * is a special value that grants every enabled standalone emote. Regular-expression backslashes must also be escaped for JSON. emote.default is allowed unless explicitly denied. emote.bypass is an administrator and development override that ignores standalone, disabled IDs, permissions, and cooldowns.

Web converter

Emote Converter converts and configures projects without requiring direct edits to Animation JSON. All processing happens locally in the browser.

For a step-by-step guide to converting and installing your own emotes, see Adding Custom Emotes.

Use the 3D preview to assign skin parts, then configure metadata, playback behavior, stop conditions, and events.

Open a project

Review

Settings

Animation conversion

The web converter supports animation curves including Bézier, Catmull-Rom, bounce, and elastic motion. The browser preview helps check skin assignments and may differ from in-game playback.

Each animation can define a cooldown, player visibility, stop conditions such as movement, jumping, attacking, and taking damage, and events.

Sequence

Connect short animation clips in order and combine waits, weighted random choices, and repeats to create a single emote. Install the Sequence and every referenced Animation together. The following excerpt shows its steps:

{
  "steps": [
    {"emote": "sit:sit_down"},
    {"wait": "10t"},
    {
      "emote": [
        "sit:idle_sky", 45,
        "sit:idle_butterfly", 45,
        "emote:break", 10
      ],
      "repeat": 3
    },
    {"emote": "sit:stand_up1"}
  ]
}

Mod API

EmoteApi.getInstance() provides playback control, runtime registration, state queries, cancellable play listeners, playback lifecycle listeners, and named lifecycle callbacks. Register callbacks with EmoteApi.registerCallbacks and select them in the Animation or Sequence's root callbacks array. State changes must run on the server thread, and runtime registrations survive reloads.

Troubleshooting

ProblemCheck
An emote does not appearCheck the /emote reload result, server log, duplicate IDs, disabled, and whether the animation is sequence-only.
A player skin is not appliedCheck the converter's skin part assignments and the skin provider configuration. Run the emote again after skin processing finishes.
A player skin is applied incorrectlyReassign each node's skin part and order in the web converter.

If the problem is not covered here, report it on Discord or GitHub Issues.

License

This project is distributed under the Apache License 2.0.

FAQ

How to install Emote?

Install Fabric for your Minecraft version, download Emote for the same version and loader, put the file into the mods folder and launch the game with the loader profile.

Which Minecraft versions does Emote support?

Emote has builds for Minecraft 26.1–26.3.

Is Emote needed on the server?

Needed on the server; optional in the game

License and source
Apache License 2.0free to use and share with credit to the author
Original — Modrinth↗Files unchanged, verified with SHA-512Is this your mod? For rights holders

The site uses cookies: the necessary ones for sign-in and the theme, plus the Yandex Metrica and LiveInternet visit counters — they show us how the site is used. We have no advertising cookies. More