Emote
Server-side emotes using display entities and datapacks
Screenshots

About this Mod
Emote for Fabric
Emote is a Minecraft Fabric emote player for BD Engine humanoid exports.
It plays emotes from datapacks on the server, and modded clients can replace the datapack skin with the player's current skin.

Quick Start
Included Example Datapacks
The repository already includes ready-to-test example datapacks in docs/example:
emote.cry.zipemote.hello.zipemote.no.zipemote.yes.zip
To test them as-is:
- Put the mod jar into the server
modsfolder. - Copy the four zip files above into the world
datapacksfolder. - Replace
config/emote/pack.jsonwith this:
{
"permissions": {
"": [
{
"datapack_identifier": "cry",
"name": "cry",
"command_name": "cry",
"description": "cry",
"default_animation_name": "default",
"options": "loop"
},
{
"datapack_identifier": "hello",
"name": "hello",
"command_name": "hello",
"description": "hello",
"default_animation_name": "default",
"options": "loop"
},
{
"datapack_identifier": "no",
"name": "no",
"command_name": "no",
"description": "no",
"default_animation_name": "default",
"options": "loop"
},
{
"datapack_identifier": "yes",
"name": "yes",
"command_name": "yes",
"description": "yes",
"default_animation_name": "default",
"options": "loop"
}
]
}
}
- Start the server or run
/emote reload. - Try:
/emote play hello
/emote play hello default_loop
/emote play yes
/emote menu
The example datapacks already contain play_anim_loop.mcfunction, so options: "loop" immediately adds loop entries such as default_loop.
Key Features
- Server-side emote playback from datapacks
- Automatic datapack discovery and reload support
/emotecommand- Optional player skin replacement on modded clients
- Optional MineSkin upload/cache support for baked player skin textures
pack.jsonmetadata-based loop entry generation for datapacks withplay_anim_loop.mcfunction- Support for BD Engine humanoid exports that use
emote:*skin markers
Install
Server
- Put the mod jar into the server
modsfolder. - Put the emote datapack zip or folder into the world
datapacksfolder. - Register the datapack namespace and metadata in
config/emote/pack.json. - Start the server or run
/emote reload. - Use
/emote.
Client
Client installation is optional.
- With the client mod installed, the emote model can use the player's current skin.
- Without the client mod, the skin defined in the datapack is used instead.
- The example datapacks include the developer skin, so their default appearance may look unusual without client skin replacement.
Datapacks
Emotes are loaded from datapacks whose namespaces are listed in config/emote/pack.json.
A datapack is treated as an emote when its data/<namespace> folder matches a configured datapack_identifier.
Prepare Your Own Datapack
BD Engine export zips can be prepared with prepare_emote_datapack.py.
The script adds the emote:* markers used for player skin support and writes an emote.name.zip file.
python docs\prepare_emote_datapack.py [--defaults] [--swap-left-right] path\to\project.zip
Animation Requirements
- A normal animation entry requires
data/<namespace>/function/a/<animation>/play_anim.mcfunction. - A loop entry additionally requires
data/<namespace>/function/a/<animation>/play_anim_loop.mcfunction. - The included example datapacks all provide both
play_anim.mcfunctionandplay_anim_loop.mcfunctionfordefault.
Config
The mod uses two config files:
config/emote/config.jsonconfig/emote/pack.json
config.json
menu_page_size: number of emotes shown per menu pageplayer_skin_port: port used by the built-in skin texture endpoint,0for automatic selectionmineskin_api_key: optional MineSkin API key for uploading baked player skin textures and using MineSkin-hosted URLsemote_permission: default permission required to use emotes
pack.json
pack.json maps permission strings to emote pack entries.
{
"permissions": {
"": [
{
"datapack_identifier": "hello",
"name": "hello",
"command_name": "hello",
"description": "hello",
"default_animation_name": "default",
"options": "loop"
}
],
"emote.pack.vip": [
{
"datapack_identifier": "wave_pack",
"name": "wave",
"command_name": "wave",
"description": "wave",
"default_animation_name": "default",
"options": ""
}
]
}
}
permissionsmaps a permission string to a list of emote packsdatapack_identifieris the datapack namespace, which means the folder name underdata/<namespace>- An empty permission key
""means the pack has no extra pack-specific permission - The same
datapack_identifiercannot appear in more than one permission group command_name,name,description,default_animation_name, andoptionsare defined here instead of being read from the datapack itself
options
options is a space-separated string.
loop: adds extra*_loopanimation entries when the datapack hasplay_anim_loop.mcfunctionvisible_player: keeps the real player visible instead of forcing invisibility during playback
Example:
"""loop""visible_player loop"
License
This project is licensed under the Apache License 2.0.
Available Versions
How to Install Emote on Your Server
Order Server
Order a Minecraft Java server with at least 3 GB RAM (4 GB recommended).
Set fabric Loader
In the panel under "Egg", select the fabric loader and matching Minecraft version (26.1.2).
Install Mod
Open the mod browser in the dashboard and search for "Emote". Click "Install" – done! Alternatively, upload the .jar via SFTP to the /mods folder.
Compatibility
Mod Loaders
Minecraft Versions
26.1.2, 26.1.1, 26.1
Server-side
✓ RequiredRecommended RAM
4 GB(min. 3 GB)Frequently Asked Questions
Emote server crashes on startup – what to do?
Most common cause: wrong fabric version or insufficient RAM. Check the server log (latest.log) for "OutOfMemoryError" or "Mixin" errors. With Mado Hosting: ensure at least 3 GB RAM is allocated and the loader matches the mod version (26.1.2). You can switch loaders with one click in the panel.
Is Emote compatible with fabric?
Emote officially supports fabric for Minecraft 26.1.2, 26.1.1, 26.1. The Mado dashboard automatically detects incompatible loader combinations.
Server lagging with Emote – how to optimize performance?
Recommended RAM: 4 GB (per 8 players). Use /spark profiler to check if Emote consumes the most tick time. Common fixes: reduce server view-distance to 8-10, install "performant" or "starlight" as supplementary mods on Forge. With Mado Hosting, your server runs on NVMe SSDs with dedicated CPU cores for minimal latency.
Similar Mods
Rent Modded Server
Install Emote with just one click on your server.