# Table of Contents - [PlayerAnimationLibrary & Emotecraft Documentation](#playeranimationlibrary-emotecraft-documentation) - [Blog | PlayerAnimationLibrary & Emotecraft Documentation](#blog-playeranimationlibrary-emotecraft-documentation) - [Emotecraft 3.0.0 | PlayerAnimationLibrary & Emotecraft Documentation](#emotecraft-3-0-0-playeranimationlibrary-emotecraft-documentation) - [dima_dencep here | PlayerAnimationLibrary & Emotecraft Documentation](#dima-dencep-here-playeranimationlibrary-emotecraft-documentation) - [New Emotecraft 3.0.0 Alpha!!! | PlayerAnimationLibrary & Emotecraft Documentation](#new-emotecraft-3-0-0-alpha-playeranimationlibrary-emotecraft-documentation) - [Archive | PlayerAnimationLibrary & Emotecraft Documentation](#archive-playeranimationlibrary-emotecraft-documentation) - [Creating Emotes With Blockbench | PlayerAnimationLibrary & Emotecraft Documentation](#creating-emotes-with-blockbench-playeranimationlibrary-emotecraft-documentation) - [Custom Pivot Points/Bones | PlayerAnimationLibrary & Emotecraft Documentation](#custom-pivot-points-bones-playeranimationlibrary-emotecraft-documentation) - [Creating Emotes With Blender | PlayerAnimationLibrary & Emotecraft Documentation](#creating-emotes-with-blender-playeranimationlibrary-emotecraft-documentation) - [Fading in/out | PlayerAnimationLibrary & Emotecraft Documentation](#fading-in-out-playeranimationlibrary-emotecraft-documentation) - [PlayerAnimationLibrary & Emotecraft Documentation](#playeranimationlibrary-emotecraft-documentation) - [Authors | PlayerAnimationLibrary & Emotecraft Documentation](#authors-playeranimationlibrary-emotecraft-documentation) - [How to port from player animator | PlayerAnimationLibrary & Emotecraft Documentation](#how-to-port-from-player-animator-playeranimationlibrary-emotecraft-documentation) - [How to play animations | PlayerAnimationLibrary & Emotecraft Documentation](#how-to-play-animations-playeranimationlibrary-emotecraft-documentation) - [Bedrock limitations | PlayerAnimationLibrary & Emotecraft Documentation](#bedrock-limitations-playeranimationlibrary-emotecraft-documentation) - [Installation | PlayerAnimationLibrary & Emotecraft Documentation](#installation-playeranimationlibrary-emotecraft-documentation) - [Introduction | PlayerAnimationLibrary & Emotecraft Documentation](#introduction-playeranimationlibrary-emotecraft-documentation) - [Geyser Extension | PlayerAnimationLibrary & Emotecraft Documentation](#geyser-extension-playeranimationlibrary-emotecraft-documentation) - [Commands | PlayerAnimationLibrary & Emotecraft Documentation](#commands-playeranimationlibrary-emotecraft-documentation) - [How to add the library to your mod's project | PlayerAnimationLibrary & Emotecraft Documentation](#how-to-add-the-library-to-your-mod-s-project-playeranimationlibrary-emotecraft-documentation) - [Getting Started | PlayerAnimationLibrary & Emotecraft Documentation](#getting-started-playeranimationlibrary-emotecraft-documentation) - [Custom Emotes | PlayerAnimationLibrary & Emotecraft Documentation](#custom-emotes-playeranimationlibrary-emotecraft-documentation) - [Commands | PlayerAnimationLibrary & Emotecraft Documentation](#commands-playeranimationlibrary-emotecraft-documentation) - [Using Emotecraft | PlayerAnimationLibrary & Emotecraft Documentation](#using-emotecraft-playeranimationlibrary-emotecraft-documentation) - [Installing Emotecraft | PlayerAnimationLibrary & Emotecraft Documentation](#installing-emotecraft-playeranimationlibrary-emotecraft-documentation) - [Proxies | PlayerAnimationLibrary & Emotecraft Documentation](#proxies-playeranimationlibrary-emotecraft-documentation) - [Creating Music for Emotes | PlayerAnimationLibrary & Emotecraft Documentation](#creating-music-for-emotes-playeranimationlibrary-emotecraft-documentation) - [Looping (For Blockbench formats) | PlayerAnimationLibrary & Emotecraft Documentation](#looping-for-blockbench-formats-playeranimationlibrary-emotecraft-documentation) - [MoLang | PlayerAnimationLibrary & Emotecraft Documentation](#molang-playeranimationlibrary-emotecraft-documentation) - [Relevant Emotecraft wiki pages | PlayerAnimationLibrary & Emotecraft Documentation](#relevant-emotecraft-wiki-pages-playeranimationlibrary-emotecraft-documentation) --- # PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/creatingemotes/#__docusaurus_skipToContent_fallback) On this page This section includes information about emote creation, limitations, and additional features. Creating text components ======================== All the text you write in the `author`, `name` and `description` fields is a text component of Minecraft that supports formatting, translations, etc. To decorate text, use [Text Component Generator](https://misode.github.io/text-component/) , it will also help you create badges later on. Additional features =================== Badges (1.21.4+)[​](https://docs.zigythebird.com/emotecraft/creatingemotes/#badges-1214 "Direct link to Badges (1.21.4+)") --------------------------------------------------------------------------------------------------------------------------- You can use [text components](https://docs.zigythebird.com/emotecraft/creatingemotes/) to create badges. You can have multiple of them! Here's a part of an emote file with badges: { "name": "A super cool emote with badges", "bages": [ { "text": "a red badge with regular text", "color": "#ff0000" }, { "translate": "badge.key", "fallback": "Green badge with translatable text", "color": "#00ff00" } ], "emote": {...}} Limitations =========== * The max size of the emote packet is limited to 1mb (32kb in older versions) * [Badges (1.21.4+)](https://docs.zigythebird.com/emotecraft/creatingemotes/#badges-1214) --- # Blog | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/blog#__docusaurus_skipToContent_fallback) > _No longer an April Fool's joke_ Hi --- # Emotecraft 3.0.0 | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/blog/2025-07-12-emotecraft-300#__docusaurus_skipToContent_fallback) > _No longer an April Fool's joke_ It's the biggest update in recent times and here's what it brings:[​](https://docs.zigythebird.com/blog/2025-07-12-emotecraft-300#its-the-biggest-update-in-recent-times-and-heres-what-it-brings "Direct link to It's the biggest update in recent times and here's what it brings:") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * πŸ‘‹ **Switching to a new animation library** First of all this change fixes a million playerAnimator bugs and allows us to go to the next level. * πŸͺ­ **Bends are back** The bending library has been completely redesigned to look good and be similar to _Minecraft: Story Mode_. * 🌟 **Future-Proofing Emotecraft** This update lays the groundwork for even more powerful features and improvements. * πŸ“š **Documentation** New documentation is being created that will describe all modern features and contain all necessary info. It's very WIP, so please be patient with us as we work on it. Downloads[​](https://docs.zigythebird.com/blog/2025-07-12-emotecraft-300#downloads "Direct link to Downloads") --------------------------------------------------------------------------------------------------------------- * [CurseForge (NeoForge)](https://curseforge.com/minecraft/mc-mods/emotecraft-forge/files/6759734) * [CurseForge (Fabric)](https://curseforge.com/minecraft/mc-mods/emotecraft/files/6759735) * [Modrinth (NeoForge)](https://modrinth.com/mod/pZ2wrerK/version/jbZLWXOs) * [Modrinth (Fabric)](https://modrinth.com/mod/pZ2wrerK/version/swWqK9eX) * [Modrinth (Paper)](https://modrinth.com/mod/pZ2wrerK/version/5C8NKcw9) * [Hangar (Paper)](https://hangar.papermc.io/dima_dencep/emotecraft/versions/3.0.0-a.build.106+1.21.7-paper) * [It's the biggest update in recent times and here's what it brings:](https://docs.zigythebird.com/blog/2025-07-12-emotecraft-300#its-the-biggest-update-in-recent-times-and-heres-what-it-brings) * [Downloads](https://docs.zigythebird.com/blog/2025-07-12-emotecraft-300#downloads) --- # dima_dencep here | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/blog/2025-07-11-dima-dencep-here#__docusaurus_skipToContent_fallback) Hi Blog post... --- # New Emotecraft 3.0.0 Alpha!!! | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/blog/2025-07-17-new-emotecraft-3.0.0-alpha#__docusaurus_skipToContent_fallback) We have fixed a lot of the bugs with the mod! Please report any bugs you encounter in the [GitHub issues](https://github.com/ZigyTheBird/PlayerAnimationLibrary/issues) page Here are SOME of the fixed issues: * Armor being messed up with bends * Cape & elytra being messed up with bends (cape still not fully fixed but much better) * Fixed .emotecraft file loading * Fixed bug with NBT sounds 3D SKIN LAYERS COMPATIBILITY!!! =============================== The 3D Skin Layers mod will soon get an update that will make it compatible with Bendable Cuboids! Special thanks to TR for helping us get this done πŸ™ --- # Archive | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/blog/archive#__docusaurus_skipToContent_fallback) ### 2025[​](https://docs.zigythebird.com/blog/archive#2025 "Direct link to 2025") * [July 11 - dima\_dencep here](https://docs.zigythebird.com/blog/2025-07-11-dima-dencep-here) * [July 12 - Emotecraft 3.0.0](https://docs.zigythebird.com/blog/2025-07-12-emotecraft-300) * [July 17 - New Emotecraft 3.0.0 Alpha!!!](https://docs.zigythebird.com/blog/2025-07-17-new-emotecraft-3.0.0-alpha) --- # Creating Emotes With Blockbench | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/creatingemotes/blockbench#__docusaurus_skipToContent_fallback) note This is not a tutorial on how you can use Blockbench as a whole. If you don't know how to use Blockbench then you need to find a way to learn that yourself. First you need to install the GeckoLib Animation Utils plugin in Blockbench. Then grab a .bbmodel from our [GitHub](https://github.com/KosmX/emotes/tree/dev/blender) . Then just open it and get started! Extra data ========== To specify the author, description, or anything else, you must use the `player_animation_library` key in your animation JSON: { "format_version": "1.8.0", "animations": { "animation_name": { "player_animation_library": { "name": "My animation", "description": "My first animation", "author": "dima_dencep" }, "bones": {...} } }, "geckolib_format_version": 2} You can store whatever data you want in it, and PAL will load them! Though Emotecraft only uses data it's interested in, like the data in the example. If no name is specified in the extra data then the animation name specified in Blockbench is used. --- # Custom Pivot Points/Bones | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/creatingemotes/custom_pivot_points#__docusaurus_skipToContent_fallback) You can add custom bones to the Blockbench model AS LONG AS THEY ARE A CHILD OF THE BODY BONE. For example you could add a hip bone that rotates all the bones except the legs around well... the hips. But for this to work you have to register the new bone you have created by adding something like this to the animation JSON: "model": { "bone_name": { "pivot": [0, 12, 0] } }, "parents": { "right_arm": "bone_name", "left_arm": "bone_name", "torso": "bone_name", "head": "bone_name" }, You can either add this to the root of the JSON or under a specific animation. Replace `bone_name` with the name of your custom bone. Replace the bones in parents which whatever bones are the children of your custom bone. And last but not least replace the pivot value with the pivot point of your custom bone. You can add as many custom bones as you want, and even have custom bones with other custom bones as their children. You could also add a bone with no children as some sort of marker. warning If you have read the fading in/out page of the wiki you know that `endTick` uses the easing of the last keyframe. Well, this does not apply to custom bones. So if the bones affected by a custom bone have a keyframe their easings will be used, if not then it will default to in out sine. --- # Creating Emotes With Blender | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/creatingemotes/blender#__docusaurus_skipToContent_fallback) To make emotes in Blender, you need to use one of the available rigs on the Emotecraft's [GitHub](https://github.com/KosmX/emotes/tree/dev/blender) . Please read the readme. This guide is based on the `emote_creator_bend_item_scale` one as it has more features. The process will be roughly the same with other rigs. It is expected that you are already familiar with Blender in some way. If you are not, please read the [Blender Documentation](https://docs.blender.org/manual/en/latest/) first. I recommend reading `User Interface`, `Editors`, `Scenes & Objects` and `Animation` sections. How do I make emotes?? ====================== You place all the keyframes you want on the body parts, go to the `Export` tab, change the contents of the variables for your liking and run the script. Your emote will be placed in the same directory as the rig. warning All keyframes on tick 0 are ignored, they must be on tick 1 and above!!! Items are animated with the `rightItem` and `leftItem` objects, not the sword models! Press F12 to make an icon for your emote. You can set up the camera however you want. You may not =========== * Change relations between body parts (See the Tricks section for a hint on doing that anyway) * Scale bend objects (scale their parents instead) Limitations =========== * `Bezier` interpolation is replaced with `QUAD` * `Automatic` easing is replaced with `INOUT` * The script reads keyframes only, so you can't use `Graph Editor`, `Drivers` and `Nonlinear Animation` (You have to bake animation data that uses those editors) * Scaled item's position gets exported incorrectly (Location needs to be divided by scale on corresponding axes, but it can't be done well without baking) Tricks ====== Baking the animation is your best friend. It allows to use nearly any animation feature in Blender. Baking the animation enables you to use `Bezier` interpolation and `Automatic` easing as it gets baked into keyframes that the script can read. The same with `Graph Editor`, `Drivers` and `Nonlinear Animation` editors. Changing parts' hierarchy ========================= You can add a new object and make a body part follow it with the `Copy Transforms` constraint. Now it is independent! Animate this new object, bake animation on the original part so it actually has frames on it, export the emote and see the magic appear in the game! You can use armatures! ====================== Now repeat the process for every part, attach the support objects to an armature via the `Armature` constraint. This allows you to have IK and other useful features of armatures. --- # Fading in/out | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/creatingemotes/fades#__docusaurus_skipToContent_fallback) Our animations support properties called `endTick` and `beginTick`. To add these properties to Blockbench animations, check out the extra data section of the Blockbench wiki page. All of these properties are in ticks. (Each second being 20 ticks) They allow you to fade in and out of the default pose. `beginTick` is the time it takes to fade in from the default pose to the animation. The `animation_length` in Blockbench anims or `stopTick` in Blender ones is when the animation will fully end. `endTick` is when the animation starts fading to the default pose, and by the end of the animation the default pose will be reached. `beginTick` fades into the first keyframe and `endTick` fades from the last keyframe, so if you have a keyframe at tick 0 and at the final tick no fading will be done. `endTick` uses the easing of the last keyframe, but `beginTick` defaults to in out sine. (If it gets requested I might add custom `beginTick` easings) important Blockbench automatically generates a keyframe at second 0 which will cause `beginTick` not to work! You must remove it manually. --- # PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/#__docusaurus_skipToContent_fallback) Official documentation for PlayerAnimationLibrary, Emotecraft and other projects in the future... [](https://docs.zigythebird.com/pal/intro) [### PAL Documentation\ \ See how you can easily animate the player for your mod.](https://docs.zigythebird.com/pal/intro) [](https://docs.zigythebird.com/pal/intro) [View Documentation](https://docs.zigythebird.com/pal/intro) [](https://docs.zigythebird.com/emotecraft/gettingstarted) [### Emotecraft Documentation\ \ Learn how to make player animations, and use them via Emotecraft.](https://docs.zigythebird.com/emotecraft/gettingstarted) [](https://docs.zigythebird.com/emotecraft/gettingstarted) [View Documentation](https://docs.zigythebird.com/emotecraft/gettingstarted) --- # Authors | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/blog/authors#__docusaurus_skipToContent_fallback) Authors ======= * ![dima_dencep](https://github.com/dima-dencep.png) dima\_dencep ------------ 3 Queen [](https://github.com/dima-dencep "GitHub") * ![Zigy](https://github.com/ZigyTheBird.png) Zigy ---- 2 Queen [](https://github.com/zigythebird "GitHub") --- # How to port from player animator | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/pal/how_to_port_from_player_animator#__docusaurus_skipToContent_fallback) On this page The basics[​](https://docs.zigythebird.com/pal/how_to_port_from_player_animator#the-basics "Direct link to The basics") ------------------------------------------------------------------------------------------------------------------------ The animations folder was moved from `assets//player_animation` to `assets//player_animations` late into player animator's life and in PAL. In player animator you use a `KeyframeAnimationPlayer` to play a `KeyframeAnimation`, but each `KeyframeAnimationPlayer` can only play one animation before having to be discarded, so you usually register an `AnimationLayer` or `ModifierLayer` to the player animation stack to hold the current animation player. In PAL though you can simply register a `PlayerAnimationController` and play animations using it as shown in the how to play animations section. (You can even chain animations so they play back to back using the `PlayerRawAnimation` class!) An animation controller can also hold modifiers so while the `AnimationLayer` and `ModifierLayer` classes still exist in PAL you probably won't need them. TLDR: `KeyframeAnimationPlayer, AnimationLayer, ModifierLayer` -> `PlayerAnimationController` `KeyframeAnimation` -> `Animation` Modifiers[​](https://docs.zigythebird.com/pal/how_to_port_from_player_animator#modifiers "Direct link to Modifiers") --------------------------------------------------------------------------------------------------------------------- First of all modifiers now give you an instance of `PlayerAnimBone` instead of various vectors per bone, but I assume you will get the hang of that quickly. :) All bone names are now in snake case so for example `left_arm` instead of `leftArm`. There are some other serious changes when it comes to the values in modifiers though, so here is a list: * Player animator uses metres/block for body positions unlike all other bones, but PAL now also uses pixels for it for the sake of consistency * The Y pos axis for every bone is negated except the body bone * The Y and X rot axes are negated for the body bone * The X and Z position and rotation axes are negated for capes * The Z and Y position and rotation axes are swapped for items * All the rotation and position axes are negated for items except the Y pos axis. (previously the Z axis on player animator) All these changes are for achieving consistency between how all the different bones operate, more specifically consistency with how they work in Blockbench. * [The basics](https://docs.zigythebird.com/pal/how_to_port_from_player_animator#the-basics) * [Modifiers](https://docs.zigythebird.com/pal/how_to_port_from_player_animator#modifiers) --- # How to play animations | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/pal/how_to_play_animations#__docusaurus_skipToContent_fallback) PlayerAnimationFactory.ANIMATION_DATA_FACTORY.registerFactory(ANIMATION_LAYER_ID, 1000, player -> new PlayerAnimationController(player, (controller, state, animSetter) -> PlayState.STOP )); Here is an example of how you register an animation layer for every player! Here the `ANIMATION_LAYER_ID` is the `ResourceLocation`/`Identifier` for your layer. The number after that is the priority of your animation. 1000 priority is for cosmetic stuff like emotes, very low values are for idle animations, and values higher than that like 1500+ are for important gameplay animations. warning If you're using Fabric, you register controllers in your mod's client init class. But if you're on NeoForge you MUST use the `enqueueWork` method of the `FMLClientSetupEvent` event!!! Here is how to get an animation layer and play an animation for a specific player: PlayerAnimationController controller = (PlayerAnimationController) PlayerAnimationAccess.getPlayerAnimationLayer( player, ANIMATION_LAYER_ID);controller.triggerAnimation(animationID); That's the most basic way to do it. But there are a lot of other ways to play animations. Take a look at the `replaceWithFade` method and the `PlayerRawAnimationBuilder` class! You should put your animations in `assets//player_animations`. The `animationID` of your animation will be a `ResourceLocation`/`Identifier` with your mod's namespace and the path will be the name of the animation set in the animation file. Keep in mind that the name of the file itself has nothing to do with what the ID will be. --- # Bedrock limitations | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/geyserext/bedrock#__docusaurus_skipToContent_fallback) On this page Playing emotes[​](https://docs.zigythebird.com/emotecraft/geyserext/bedrock#playing-emotes "Direct link to Playing emotes") ---------------------------------------------------------------------------------------------------------------------------- * To play bedrock emote, use the standard wheel (you can also play paid emotes, and all Java and Bedrock players will see them). * To play emotecraft emote, use the `/emotes-geyser list` command and select the desired one from the list. To add emotecraft emotes to the list, ask the server owner to add them on the server, and they will appear in the form. You can add them either on the backend server or on geyser standalone; both lists will be loaded and added. Bends[​](https://docs.zigythebird.com/emotecraft/geyserext/bedrock#bends "Direct link to Bends") ------------------------------------------------------------------------------------------------- Bends are applied by replacing the geometry. This does not always work, but when it does, you will see them. Otherwise, use the `/emotes-geyser fix-bends`. If the player stops playing the emotes after running the command, run the command again and the bends should fix. * [Playing emotes](https://docs.zigythebird.com/emotecraft/geyserext/bedrock#playing-emotes) * [Bends](https://docs.zigythebird.com/emotecraft/geyserext/bedrock#bends) --- # Installation | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/geyserext/installation#__docusaurus_skipToContent_fallback) On this page Supported setups[​](https://docs.zigythebird.com/emotecraft/geyserext/installation#supported-setups "Direct link to Supported setups") --------------------------------------------------------------------------------------------------------------------------------------- Common setups include: * Geyser Standalone * Geyser on Velocity / BungeeCord * Geyser as a plugin (Paper/Spigot/etc.) * Geyser as a mod (Fabric/NeoForge/etc.) Install steps[​](https://docs.zigythebird.com/emotecraft/geyserext/installation#install-steps "Direct link to Install steps") ------------------------------------------------------------------------------------------------------------------------------ [Follow this guide](https://geysermc.org/wiki/geyser/extensions#installing-extensions) Recommended[​](https://docs.zigythebird.com/emotecraft/geyserext/installation#recommended "Direct link to Recommended") ------------------------------------------------------------------------------------------------------------------------ * Keep Geyser updated to the latest stable release. * Use the extension release that matches your Geyser API version. * [Supported setups](https://docs.zigythebird.com/emotecraft/geyserext/installation#supported-setups) * [Install steps](https://docs.zigythebird.com/emotecraft/geyserext/installation#install-steps) * [Recommended](https://docs.zigythebird.com/emotecraft/geyserext/installation#recommended) --- # Introduction | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/pal/intro#__docusaurus_skipToContent_fallback) On this page Why should I use this?[​](https://docs.zigythebird.com/pal/intro#why-should-i-use-this "Direct link to Why should I use this?") -------------------------------------------------------------------------------------------------------------------------------- Here are a couple of the features the mod provides that you might find very useful: * Provides an easy way to play JSON animations made in Blockbench AND Blender, while allowing you to modify them using code. * Enables smooth transitions between all animations. * Has a priority system so conflicts between two mods trying to animate the player at the same time can be resolved. * Almost full MoLang support using [Mocha](https://unnamed.team/docs/mocha) . (Even supports stuff like arrow `->` operators, and variables!) Why should I use this over player animator?[​](https://docs.zigythebird.com/pal/intro#why-should-i-use-this-over-player-animator "Direct link to Why should I use this over player animator?") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Well this is the official successor to player animator! Player animator will no longer receive any updates. PAL is capable of doing everything player animator can, that includes loading all player animator format animations. PAL has a ton of exclusive features and bug fixes, like the aforementioned MoLang support. * [Why should I use this?](https://docs.zigythebird.com/pal/intro#why-should-i-use-this) * [Why should I use this over player animator?](https://docs.zigythebird.com/pal/intro#why-should-i-use-this-over-player-animator) --- # Geyser Extension | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/geyserext/#__docusaurus_skipToContent_fallback) On this page The **Geyser Extension** enables **cross-edition emotes** on Geyser servers: * Bedrock players can see Java players’ emotes * Java players can see Bedrock players’ emotes Status[​](https://docs.zigythebird.com/emotecraft/geyserext/#status "Direct link to Status") --------------------------------------------------------------------------------------------- * βœ… **Bedrock β†’ Java**: stable and reliable * ⚠️ **Java β†’ Bedrock**: experimental and may be unstable If you hit issues, please report them with logs [here](https://github.com/KosmX/emotes/issues) . Compatibility[​](https://docs.zigythebird.com/emotecraft/geyserext/#compatibility "Direct link to Compatibility") ------------------------------------------------------------------------------------------------------------------ This extension is designed for: * A Geyser-powered server (proxy or server mod/plugin) * A Java emotes source (e.g., an emotes mod/plugin on the Java backend) * Bedrock clients joining through Geyser Exact requirements depend on your server setup; see [Installation](https://docs.zigythebird.com/emotecraft/geyserext/installation) . * [Status](https://docs.zigythebird.com/emotecraft/geyserext/#status) * [Compatibility](https://docs.zigythebird.com/emotecraft/geyserext/#compatibility) --- # Commands | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/geyserext/commands#__docusaurus_skipToContent_fallback) Bedrock players can use the emotecraft commands from the backend server [listed here](https://docs.zigythebird.com/emotecraft/gettingstarted/commands) . The following commands are exclusive to Bedrock players: * `/emotes-geyser list` β€” list available emotes (built-in and loaded on the geyser and backend servers) * `/emotes-geyser fix-geometry` β€” fixes the geometry (for example, if you cannot see the bends) --- # How to add the library to your mod's project | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/pal/how_to_add_lib_to_mod#__docusaurus_skipToContent_fallback) Gradle Properties (latest versions are fetched automatically): | Minecraft Version | PAL Version | Status | | --- | --- | --- | | 26.1 | `1.2.4+mc.26.1` | Supported | | 1.21.11 | `1.1.7+mc.1.21.11` | Supported | | 1.21.9-10 | `1.1.3+mc.1.21.9` | Unsupported | | 1.21.8 | `1.1.2+mc.1.21.8` | Unsupported | | 1.21.7 | `1.0.12+mc1.21.7` | Unsupported | | 1.21.1 | `1.1.4+mc.1.21.1` | Supported | pal_version = Maven Repository: mavenCentral()maven { name = "RedlanceMinecraft" url = "https://repo.redlance.org/public"} Architectury Common: modApi "com.zigythebird.playeranim:PlayerAnimationLibCommon:$pal_version"implementation "com.zigythebird.playeranim:PlayerAnimationLibCommon:$pal_version" Architectury NeoForge: modImplementation "com.zigythebird.playeranim:PlayerAnimationLibNeo:$pal_version" Fabric: modImplementation "com.zigythebird.playeranim:PlayerAnimationLibFabric:$pal_version" NeoForge: implementation "com.zigythebird.playeranim:PlayerAnimationLibNeo:$pal_version" --- # Getting Started | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/gettingstarted/#__docusaurus_skipToContent_fallback) This section includes information about installing emotecraft and how to proceed further. warning This documentation is based on the functionality of emotecraft 3.0.0+ older versions are not described by this documentation! --- # Custom Emotes | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/gettingstarted/customemotes#__docusaurus_skipToContent_fallback) On this page This section includes information about downloading and installing emotes for emotecraft. ### Downloading[​](https://docs.zigythebird.com/emotecraft/gettingstarted/customemotes#downloading "Direct link to Downloading") You can currently download emotes from [Emotes Open Collection](https://emotes.kosmx.dev/) , or by using [RedlanceBot](https://discord.com/users/762690439769358377) on the emotecraft server in discord (You can also DM) warning `.json` and `.emotecraft` emotes will NEVER contain viruses, but be careful about file ext and never double-click them! ### Installing[​](https://docs.zigythebird.com/emotecraft/gettingstarted/customemotes#installing "Direct link to Installing") To install an emote, you just need to drag and drop the `.emotecraft` or `.json` file from the downloads folder into the emotes folder, which is where the `mods` folder is located warning The `.json` can also have a `.png` or `.nbs` file, so you should move those too! * [Downloading](https://docs.zigythebird.com/emotecraft/gettingstarted/customemotes#downloading) * [Installing](https://docs.zigythebird.com/emotecraft/gettingstarted/customemotes#installing) --- # Commands | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/gettingstarted/commands#__docusaurus_skipToContent_fallback) On this page Client commands[​](https://docs.zigythebird.com/emotecraft/gettingstarted/commands#client-commands "Direct link to Client commands") ------------------------------------------------------------------------------------------------------------------------------------- These commands are registered on the client and **are not sent to the server**. * `/emotes-client play ` β€” play an emote * `/emotes-client stop` β€” stop the current emote Server commands[​](https://docs.zigythebird.com/emotecraft/gettingstarted/commands#server-commands "Direct link to Server commands") ------------------------------------------------------------------------------------------------------------------------------------- These commands are registered on the server; you may need permissions to execute them. * `/emotes play ` β€” play an emote * `/emotes stop ` β€” stop the current player's emote * `/emotes reload` β€” reload emotes Server permissions[​](https://docs.zigythebird.com/emotecraft/gettingstarted/commands#server-permissions "Direct link to Server permissions") ---------------------------------------------------------------------------------------------------------------------------------------------- * `emotes.play.player` - to execute the `/emotes play` command * `emotes.stop.player` - to execute the `/emotes stop` command * `emotes.stop.forced` - to execute the `/emotes stop` if the emote is forced * `emotes.play.showhidden` - allows to see "hidden" emotes in autocomplete * `emotes.reload` - to execute the `/emotes reload` command * [Client commands](https://docs.zigythebird.com/emotecraft/gettingstarted/commands#client-commands) * [Server commands](https://docs.zigythebird.com/emotecraft/gettingstarted/commands#server-commands) * [Server permissions](https://docs.zigythebird.com/emotecraft/gettingstarted/commands#server-permissions) --- # Using Emotecraft | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/gettingstarted/using#__docusaurus_skipToContent_fallback) On this page This section includes information about using Emotecraft in the game, once you have installed it. Playing emotes[​](https://docs.zigythebird.com/emotecraft/gettingstarted/using#playing-emotes "Direct link to Playing emotes") ------------------------------------------------------------------------------------------------------------------------------- To open the emote wheel simply press `B` (or whatever you set the open emote wheel keybind to). To play an emote simply left click it. Setting the Emote Wheel[​](https://docs.zigythebird.com/emotecraft/gettingstarted/using#setting-the-emote-wheel "Direct link to Setting the Emote Wheel") ---------------------------------------------------------------------------------------------------------------------------------------------------------- To assign an emote to a slot just click an emote and then the slot you want to put it in. You can also bind keys to emotes, to do this just click the emote and then the box to the left of Reset. Finally just hit the key you want to bind the emote to. When you are done click the done button and everything will save. * [Playing emotes](https://docs.zigythebird.com/emotecraft/gettingstarted/using#playing-emotes) * [Setting the Emote Wheel](https://docs.zigythebird.com/emotecraft/gettingstarted/using#setting-the-emote-wheel) --- # Installing Emotecraft | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/gettingstarted/installing#__docusaurus_skipToContent_fallback) On this page This section includes information on installing emotecraft to use the mod in the game. Downloads[​](https://docs.zigythebird.com/emotecraft/gettingstarted/installing#downloads "Direct link to Downloads") --------------------------------------------------------------------------------------------------------------------- To avoid security risks, **only download the mod from official sources**: * **[GitHub/KosmX/emotes](https://github.com/KosmX/emotes) ** * **[Modrinth/Emotecraft](https://modrinth.com/mod/emotecraft) ** * **[CurseForge/Emotecraft](https://www.curseforge.com/minecraft/mc-mods/emotecraft) ** * **[CurseForge/Emotecraft (Forge)](https://www.curseforge.com/minecraft/mc-mods/emotecraft-forge) ** * **[Hangar/dima\_dencep/Emotecraft](https://hangar.papermc.io/dima_dencep/emotecraft) ** (Paper only) * **[maven.kosmx.dev](https://maven.kosmx.dev/io/github/kosmx/emotes/) ** (For developers) warning Do NOT download from unofficial sources! Installing on Fabric/(Neo)Forge[​](https://docs.zigythebird.com/emotecraft/gettingstarted/installing#installing-on-fabricneoforge "Direct link to Installing on Fabric/(Neo)Forge") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ info You also need to install `PlayerAnimationLibrary` and `Fabric API` (if you are playing on fabric) Once you have the mod(s) you just need to put them in your mods folder located at * Windows: C:/Users/{your user}/AppData/Roaming/.minecraft/mods * Mac: /Users/{your user}/Library/Application Support/minecraft/mods * Linux: /home/{your user}/.minecraft/mods Then start/restart your Minecraft client. Installing on Paper[​](https://docs.zigythebird.com/emotecraft/gettingstarted/installing#installing-on-paper "Direct link to Installing on Paper") --------------------------------------------------------------------------------------------------------------------------------------------------- info On paper, emotecraft doesn't require any additional plugins, but older versions required [Protocol Lib](https://hangar.papermc.io/dmulloy2/ProtocolLib) Once you have the plugin(s) you just need to put them in your plugins folder located at {serverPath}/plugins. Then start/restart your Minecraft server. * [Downloads](https://docs.zigythebird.com/emotecraft/gettingstarted/installing#downloads) * [Installing on Fabric/(Neo)Forge](https://docs.zigythebird.com/emotecraft/gettingstarted/installing#installing-on-fabricneoforge) * [Installing on Paper](https://docs.zigythebird.com/emotecraft/gettingstarted/installing#installing-on-paper) --- # Proxies | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/gettingstarted/proxies#__docusaurus_skipToContent_fallback) On this page This section covers what you need to configure to run Emotecraft behind a proxy (Velocity, BungeeCord, etc.). Emotecraft synchronizes emotes between players using plugin messages (custom payloads). Every emote β€” including [custom ones](https://docs.zigythebird.com/emotecraft/gettingstarted/customemotes) β€” is sent over the network in full, and an emote can be larger than the default plugin message size limit some proxies and server cores enforce. Without this fix affected players may be kicked with a `Payload may not be larger than ... bytes` error. warning By default many proxies and Bukkit-based cores limit **every** plugin message to `32767` bytes. In Minecraft `32767` bytes is the maximum size of an **unregistered** payload. Mod payloads (like the ones Emotecraft uses) are **registered**, and registered channels are allowed a much larger size β€” equal to the standard vanilla limit of `1048576` bytes (1 MiB). The fixes below simply lift the `32767` cap for these registered channels. Velocity[​](https://docs.zigythebird.com/emotecraft/gettingstarted/proxies#velocity "Direct link to Velocity") --------------------------------------------------------------------------------------------------------------- Velocity caps the maximum **serverbound** plugin message payload at `32767` bytes by default, which is too small for larger emotes. Raise it to `1048576` bytes (1 MiB, the vanilla limit) by adding the following JVM argument when starting the proxy: -Dvelocity.max-plugin-message-payload-size=1048576 For example: java -Dvelocity.max-plugin-message-payload-size=1048576 -jar velocity.jar info `velocity.max-plugin-message-payload-size` sets the limit for **both** directions at once. The clientbound limit is already `1048576` by default, but setting both keeps things working even if those defaults change in a future Velocity version. BungeeCord / Waterfall[​](https://docs.zigythebird.com/emotecraft/gettingstarted/proxies#bungeecord--waterfall "Direct link to BungeeCord / Waterfall") -------------------------------------------------------------------------------------------------------------------------------------------------------- BungeeCord has the same problem as Velocity β€” it caps **serverbound** plugin messages at `32767` bytes ([source](https://github.com/SpigotMC/BungeeCord/blob/master/protocol/src/main/java/net/md_5/bungee/protocol/packet/PluginMessage.java) ) β€” but unlike Velocity this limit is **hardcoded and cannot be changed** (no config option or JVM argument exists, see [#3509](https://github.com/SpigotMC/BungeeCord/issues/3509) ). warning There is currently no way to fix this on BungeeCord. If you need larger emotes to work behind a proxy, use **Velocity** instead. A [pull request (#3571)](https://github.com/SpigotMC/BungeeCord/pull/3571) that would add a similar configurable limit has been opened, but it is **not merged yet**. * [Velocity](https://docs.zigythebird.com/emotecraft/gettingstarted/proxies#velocity) * [BungeeCord / Waterfall](https://docs.zigythebird.com/emotecraft/gettingstarted/proxies#bungeecord--waterfall) --- # Creating Music for Emotes | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/creatingemotes/creatingmusic#__docusaurus_skipToContent_fallback) You can make music for your emotes using [Note Block Studio](https://noteblock.studio/) ! Once that is done run the program, you should be greeted with a blank song. Here you can create the song When you are done the song click save and save it to the emotes folder as {nameOfEmoteFile}.nbs. Useful links ============ * [Note Block World](https://noteblock.world/) - The largest public community centered around Minecraft note blocks. * [Note Block Tool](https://github.com/RaphiMC/NoteBlockTool/releases/latest) - Tool for importing, exporting, batch manipulating and playing Minecraft note block songs. Limitations =========== * In 1.21.5+ nearly every feature is supported * In versions lower you have only default instruments and 2.5 octaves * Only nbs is supported by the main mod; you can use [EmoteTweaks](https://modrinth.com/mod/emote-tweaks) to play `.wav` files, but it's unstable. --- # Looping (For Blockbench formats) | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/creatingemotes/looping#__docusaurus_skipToContent_fallback) On this page This section includes information on the different ways you can loop an animation. Return to tick[​](https://docs.zigythebird.com/emotecraft/creatingemotes/looping#return-to-tick "Direct link to Return to tick") --------------------------------------------------------------------------------------------------------------------------------- This method comes first because it was added by us for the Bedrock format It was ported from playerAnimator and has the same functionality. This makes it so the animation loops back to the specified time in the animation instead of the beginning. Unlike what the name suggested the time provided should be in seconds not ticks. If the `loopTick` key is specified in the JSON then the `loop` key is ignored. { "loopTick": 0.4} Hold on last frame[​](https://docs.zigythebird.com/emotecraft/creatingemotes/looping#hold-on-last-frame "Direct link to Hold on last frame") --------------------------------------------------------------------------------------------------------------------------------------------- As the name suggests, it makes the animation "hold" on the last frame. The animation will remain paused on the last frame and won't end unless the animation is cancelled. { "loop": "hold_on_last_frame"} Play once[​](https://docs.zigythebird.com/emotecraft/creatingemotes/looping#play-once "Direct link to Play once") ------------------------------------------------------------------------------------------------------------------ Using this method, the animation won't loop; it will just play once. This is the default loop type and will be chosen if no loop type is specified. { "loop": false} Loop[​](https://docs.zigythebird.com/emotecraft/creatingemotes/looping#loop "Direct link to Loop") --------------------------------------------------------------------------------------------------- The most boring method, the animation simply starts from the beginning when it ends. { "loop": true} * [Return to tick](https://docs.zigythebird.com/emotecraft/creatingemotes/looping#return-to-tick) * [Hold on last frame](https://docs.zigythebird.com/emotecraft/creatingemotes/looping#hold-on-last-frame) * [Play once](https://docs.zigythebird.com/emotecraft/creatingemotes/looping#play-once) * [Loop](https://docs.zigythebird.com/emotecraft/creatingemotes/looping#loop) --- # MoLang | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/emotecraft/creatingemotes/molang#__docusaurus_skipToContent_fallback) Emotecraft uses [a custom fork of Mocha](https://github.com/PlayerAnimationLibrary/mochafloats) for Molang functionality. Almost all of Bedrock MoLang's functionality is present in Emotecraft. All MoLang queries and functions have been implemented in Emotecraft. [Here is the full documentation for MoLang.](https://bedrock.dev/docs/stable/Molang) --- # Relevant Emotecraft wiki pages | PlayerAnimationLibrary & Emotecraft Documentation [Skip to main content](https://docs.zigythebird.com/pal/relevant_emotecraft_wiki_pages#__docusaurus_skipToContent_fallback) Most pages related to actually making animations are in the Emotecraft wiki. I believe you will find these very useful: * [Creating Emotes With Blender](https://docs.zigythebird.com/emotecraft/creatingemotes/blender) * [Creating Emotes With Blockbench](https://docs.zigythebird.com/emotecraft/creatingemotes/blockbench) * [Custom Pivot Points/Bones](https://docs.zigythebird.com/emotecraft/creatingemotes/custom_pivot_points) * [Fading in/out](https://docs.zigythebird.com/emotecraft/creatingemotes/fades) * [Looping (For Blockbench formats)](https://docs.zigythebird.com/emotecraft/creatingemotes/looping) * [MoLang](https://docs.zigythebird.com/emotecraft/creatingemotes/molang) ---