Part of switching Saturn from player-animation-lib to our own emote library (org.saturnclient:emotes-core / emotes-fabric). The saturnclient side (build files and the per-version playEmote) follows once this merges.
Changes
build.gradle: depends on org.saturnclient:emotes-core:${emotes_version}, a property set in saturnclient's root gradle.properties.
cosmetics/Emotes:
loads assets/saturnclient/player_animations/<id>.json into Saturn's own EmoteRegistry, separate from the library's shared one, so no other mod can replace them
exposes Emotes.get(id)
availableEmotes now lists only the emotes that loaded
Emote wheel: now also calls ServiceClient.emote(id). Without it, other players never saw your emote; it only played locally. The server leaves you out of the recipients, so the emote doesn't play twice.
Testing
Built with every saturnclient version and started on 1.21.11: all six emotes load without errors.
Part of switching Saturn from player-animation-lib to our own emote library (`org.saturnclient:emotes-core` / `emotes-fabric`). The `saturnclient` side (build files and the per-version `playEmote`) follows once this merges.
## Changes
- **`build.gradle`**: depends on `org.saturnclient:emotes-core:${emotes_version}`, a property set in saturnclient's root `gradle.properties`.
- **`cosmetics/Emotes`**:
- loads `assets/saturnclient/player_animations/<id>.json` into Saturn's own `EmoteRegistry`, separate from the library's shared one, so no other mod can replace them
- exposes `Emotes.get(id)`
- `availableEmotes` now lists only the emotes that loaded
- **Emote wheel**: now also calls `ServiceClient.emote(id)`. Without it, other players never saw your emote; it only played locally. The server leaves you out of the recipients, so the emote doesn't play twice.
## Testing
Built with every saturnclient version and started on 1.21.11: all six emotes load without errors.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
- Emotes loads assets/saturnclient/player_animations/*.json with
emotes-core into Saturn's own EmoteRegistry (not the library's shared
one, so other mods can't replace them), and lists the ones that loaded
for the wheel.
- The emote wheel now also sends the emote to the server, so other
players see it. It only played locally before.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of switching Saturn from player-animation-lib to our own emote library (
org.saturnclient:emotes-core/emotes-fabric). Thesaturnclientside (build files and the per-versionplayEmote) follows once this merges.Changes
build.gradle: depends onorg.saturnclient:emotes-core:${emotes_version}, a property set in saturnclient's rootgradle.properties.cosmetics/Emotes:assets/saturnclient/player_animations/<id>.jsoninto Saturn's ownEmoteRegistry, separate from the library's shared one, so no other mod can replace themEmotes.get(id)availableEmotesnow lists only the emotes that loadedServiceClient.emote(id). Without it, other players never saw your emote; it only played locally. The server leaves you out of the recipients, so the emote doesn't play twice.Testing
Built with every saturnclient version and started on 1.21.11: all six emotes load without errors.
🤖 Generated with Claude Code