Skip to content

    Press / to search from anywhere.

    ModsBody Language

    Making your own emotes

    Add new emotes to Body Language with a resource pack, step by step, starting from a looping "raise the roof".

    Every Body Language emote is a small text file (JSON) that says where the player’s head, arms and legs should be at each moment. A resource pack can add new ones. They show up in the emote list (N) and can go on your wheel like the built-in emotes.

    This page walks through making one. The emote file reference lists everything a file can contain.

    1. Make the resource pack

    In your game folder’s resourcepacks folder, make a folder for your pack with these files in it:

    my-emotes/
    ├── pack.mcmeta
    └── assets/
        └── mypack/
            ├── emotes/
            │   └── raise_the_roof.json
            └── lang/
                └── en_us.json

    mypack is your pack’s namespace: any short name in lowercase letters, numbers and underscores. Use your own so your emotes never clash with someone else’s.

    pack.mcmeta tells Minecraft it’s a resource pack (34 is the pack format for 1.21.1):

    {
      "pack": {
        "pack_format": 34,
        "description": "My emotes"
      }
    }

    2. Write the emote

    assets/mypack/emotes/raise_the_roof.json pumps both arms up and down until you move:

    {
      "length": 20,
      "loop": true,
      "order": 500,
      "keyframes": [
        { "t": 0,  "right_arm": [-160, 0, 15], "left_arm": [-160, 0, -15] },
        { "t": 10, "right_arm": [-180, 0, 5],  "left_arm": [-180, 0, -5] },
        { "t": 20, "right_arm": [-160, 0, 15], "left_arm": [-160, 0, -15] }
      ]
    }
    • length is how long one go takes, in ticks. There are 20 ticks in a second, so this is one second.
    • loop: true repeats it until the player moves. Leave it out for an emote that plays once.
    • order is where it comes in the emote list: lower numbers first. The built-in emotes use 0 to 220.
    • Each keyframe says where body parts are at time t. Body Language moves smoothly from one keyframe to the next.

    The angles are in degrees. For the arms, -180 on the first number points the arm straight up (-90 points it forward), and the third number swings it out to the side. The reference explains each part.

    For a looping emote, make the last keyframe the same as the first, so it flows round without a jump.

    3. Give it a name

    assets/mypack/lang/en_us.json gives the emote its name in the list:

    {
      "emote.mypack.raise_the_roof": "Raise the Roof"
    }

    The key is emote.<namespace>.<file name>. Without one, the list uses the file name, tidied up. You can add other languages’ files (fr_fr.json and so on) the same way.

    4. Try it

    1. Turn the pack on in Options › Resource Packs.
    2. Press N: Raise the Roof is in the list. Click it.
    3. Change the file, save it, and press F3 + T in game to reload. Your changes show straight away.

    If your emote doesn’t appear, there’s a mistake in the file. Body Language skips it and writes the reason to the game log, in a line starting Skipping emote mypack:raise_the_roof:, for example “keyframe time 25 is outside 0 to 20”.

    Sharing it

    Zip the pack (the files inside my-emotes, not the folder itself) and share it. On a server with Body Language, other players need the same pack to see your new emote: the server passes on which emote you’re doing, and each player’s game needs the file to know what it looks like. The server itself doesn’t need the pack.

    Tips

    • Start from a built-in emote. They’re in the Body Language jar (open it like a zip) under assets/tgemotes/emotes/.
    • A pack can replace a built-in emote: put a file with the same name in assets/tgemotes/emotes/.
    • Small moves of the head and body (a few degrees) make an emote feel alive.
    • Keep raised arms close to straight up, out to the sides, or folded in: a straight arm held out forward and up, about 30 to 60 degrees above level, reads as a Nazi salute. Body Language’s own emotes are checked for it automatically.
    • Add a sound or particles at a set moment with events, like the claps in Clap.