On this page
Animotions 1.0.3
Animotions is a Paper emote plugin that renders animated player models with display entities, Blockbench-authored emotes, MineSkin body-part textures, built-in pack delivery, and duo invite flows.
Version 1.0.3
1.0.3 Update Log
- Updated all Resourcepacks to now support all version from 1.21.4 +
(Please Make sure you restart server to load new pack and reload Nexo and Itemadder so they can grab the new Resourcepacks. If need any help reach out in discord!)
- Fixed legacy version not working on 1.21.5 and 1.21.4 with ViaVersion
- Fixed Resoucepack pathing issue on 1.21.5 with Nexo
- Code Clean-up
Artifacts
Build outputs:
animotions-paper/target/Animotions.jaranimotions-velocity/target/Animotions-Velocity.jaranimotions-bungeecord/target/Animotions-BungeeCord.jar
Use:
Animotions.jaron every Paper backendAnimotions-Velocity.jaron a Velocity proxyAnimotions-BungeeCord.jaron a BungeeCord proxy
Only install the proxy companion that matches your network.
Requirements
- Java 21+
- Paper 1.21.11+ for backend servers
- PacketEvents on backend servers
- MineSkin API key if you want full body textures for Iris or OptiFine users
- One of:
- standalone backend with local H2
- shared MySQL database
- shared PostgreSQL database
Installation
Standalone Paper
- Install PacketEvents on the backend server.
- Place
Animotions.jarintoplugins/. - Start the server once to generate config files.
- Put your license key in
plugins/Animotions/anim-license.txt. - Set
resource-pack.hostandresource-pack.port. - Set a real MineSkin API key if you want correct body textures for shader-mod clients.
- Leave
network.mode: standalone. - Leave
storage.type: h2unless you want external SQL.
Proxy Network
- Install PacketEvents and
Animotions.jaron every Paper backend. - Install the matching proxy companion jar on Velocity or BungeeCord.
- Use the same
network.sync-channelon proxy and backend jars. Default:animotions:sync. - Give every backend a unique
network.server-id. - Set
network.mode: velocityornetwork.mode: bungeecordon each backend. - Point every backend at the same MySQL or PostgreSQL database.
- Restart the proxy and all backends.
SQL Configuration
config.yml now includes:
network:
mode: standalone
server-id: "backend-1"
sync-channel: "animotions:sync"
storage:
type: h2
jdbc-url: ""
username: ""
password: ""
pool:
maximum-size: 10
minimum-idle: 2
connection-timeout-ms: 10000
MySQL Example
network:
mode: velocity
server-id: "hub-1"
sync-channel: "animotions:sync"
storage:
type: mysql
jdbc-url: "jdbc:mysql://127.0.0.1:3306/animotions?useSSL=false&serverTimezone=UTC"
username: "animotions"
password: "change-me"
pool:
maximum-size: 10
minimum-idle: 2
connection-timeout-ms: 10000
PostgreSQL Example
network:
mode: velocity
server-id: "survival-2"
sync-channel: "animotions:sync"
storage:
type: postgresql
jdbc-url: "jdbc:postgresql://127.0.0.1:5432/animotions"
username: "animotions"
password: "change-me"
pool:
maximum-size: 10
minimum-idle: 2
connection-timeout-ms: 10000
Runtime Sync Behavior
Shared runtime state now stores:
- current backend server
- shader compatibility state
- resource-pack availability state
- MineSkin readiness state
- duo invite state
- active emote session state
What this means in practice:
- backend servers can see whether a player is currently tracked on the network
- duo invite lifecycle is persisted instead of being memory-only
- solo emote sessions can restart after the player joins another backend
- Iris and OptiFine warnings are consistent with MineSkin readiness
Current limit:
- duo playback still requires both players to be on the same backend because the animated entities are rendered by the backend server, not the proxy
Iris and OptiFine Behavior
When a shader-mod client is detected:
- Animotions still allows the emote to start
- the player gets a one-time warning if MineSkin is disabled
- the player gets a one-time warning if MineSkin textures are still processing
- once MineSkin finishes, body-part textures can update correctly
Without MineSkin, shader-mod clients still fall back to repeated head-texture rendering on body parts. That is a rendering limitation of the shader fallback path.
Commands
/animotions <name>: play a solo emote/animotions <name> <player>: send a duo invite/animotions accept: accept a duo invite/animotions deny: deny a duo invite/animotions stop: stop your current emote/animotions list: list emotes/animotions reload: reload config, categories, and emotes/animotions cload: append newly discovered emotes intocategory.yml/animotions pack: resend or debug the resource pack
Resource Pack and Merge Support
Animotions still supports:
- built-in HTTP self-hosting
- Nexo merge mode
- ItemsAdder merge mode
- Oraxen merge mode
- custom folder pack export mode
Notes for Server Owners
- Use MineSkin if your playerbase uses Iris or OptiFine.
- Use MySQL or PostgreSQL for proxy networks. H2 is fine for standalone servers.
- Keep backend
server-idvalues unique. - Keep the proxy companion plugin installed only on the proxy, never on Paper.
- Keep
Animotions.jarinstalled only on backend servers, never on the proxy.
