Tags
Creators
Details
0.10.0+26.2
Compatibility
Required content
Changes
0.10.0 Update
All features originally planned for this project have now been implemented. Unless additional bugs are discovered, the stable release is scheduled for next week.
If you encounter a bug, please report it on GitHub Issues.
This update adds permission-based idle emotes and a server API, while improving the stability and performance of emote playback and the web converter.
New Features
- Idle durations and lists of emotes to play automatically can now be configured per permission group in
emotes.json. - If a player remains idle, idle emotes are replayed at intervals defined by
delay_seconds. - When multiple idle emotes are configured, the next emote is selected randomly, excluding the one that was played most recently.
- The default configuration now includes the
drink:defaultidle emote, which plays after five minutes of inactivity. - Added a server API that allows other mods to control emotes.
- Start and stop emote playback
- Query the current playback state
- Register emotes at runtime
- Cancellable playback events
- Playback start and end events
Configuration Changes
- Added the
mineskin_cache_retention_daysoption for configuring the MineSkin cache retention period. The default value is 30 days. - Added the
mineskin_cache_max_miboption for configuring the maximum MineSkin cache size. The default value is 256 MiB. - MineSkin cache files that exceed the retention period or maximum size are now automatically removed, starting with the oldest files.
- Configuration files and animation directories are now prepared when the server starts rather than during mod initialization.
Usability Improvements
- When an emote starts on the client, the camera now switches to the front-facing third-person view and returns to the previous perspective when the emote ends.
- The emote wheel now directly uses the key binding registered with Minecraft.
- Reassigned emote wheel keys now work correctly with both keyboard and mouse inputs.
- Simplified the web converter workspace and changed the 3D preview so that it is loaded only when needed.
Bug Fixes
- Fixed an issue where emotes could appear to vibrate or stutter in certain situations.
- Fixed an issue where the local player’s equipment was hidden even when
hide_playerwas disabled for the emote. - Fixed an issue where player skins were not applied to invisible display nodes.
- Fixed an issue where the MineSkin queue could stop processing after a skin generation task failed.
- Fixed an issue where emote entities and player visibility states were not fully cleaned up when a player disconnected.
- Fixed an issue where display entities created at runtime were saved to the world.
- Fixed an issue where emote search queries containing spaces were truncated in commands.
- Added validation to prevent the web converter from exporting invalid resource pack paths.
- Fixed player heads without the explicit
minecraft:namespace so that they are also recognized as skin parts. - Updated the web converter’s validation rules to match those used by the mod loader.
- Fixed an issue where the default pose of generated nodes did not match the starting pose of the animation.
Performance Improvements
- Reduced repeated calculations and object allocations during emote loading and playback initialization.
- Improved performance by reusing emote wheel geometry and player skin images.
- Added caching for idle emote permission checks.
- Reduced the cost of MineSkin cache lookups and queue processing.
- Reduced unnecessary synchronization packets that were repeatedly sent while maintaining a player’s hidden state.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:qUF0jygw:7lp4BZLG"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:qUF0jygw:7lp4BZLG"
}

