Privacy
Language: Español (España)

Item sequence

Give a bow, a mace or a bucket its own phases: draw, hold, release, and a mace that keeps its raised pose. The examples use the example pack provided by Crafto.

This page has not been translated into European Spanish yet, so it is shown in English. Read in English

On this page

An item sequence gives one item its own small story: you pick it up, hold it, draw it and let it go, and a different clip plays for each moment. This recipe builds the draw and release of a bow from two clips and one compat file. It then shows how a mace keeps its raised pose under its swings with over_idle, and how a bucket plays other clips when your other hand is full. It is for pack makers who have made a clip before. If you have not, start with Create an animation.

The clips and excerpts come from the example pack provided by Crafto, Fluid & Foolish, the Punchy! Moves animation pack used for every demo on this wiki. The excerpts keep that pack’s clip names, which only it has. To run one with your own clips, put your own clip names in their place.

Before you start

  • Punchy! Moves installed, and a resource pack with an assets/punchy_moves/ folder. Getting started makes one, and so does New Pack in Punchy! Studio.
  • A world where you can hold a bow and shoot an arrow, to test.
  • If the example pack provided by Crafto is on, turn it off while you test, so that only your own bow plays.

How a bow sequence runs

A sequence sits on an item group (here BOW) or on one exact item. Its behavior decides when each phase plays, and the group’s animations give each phase a clip. A phase with no clip plays nothing, so the walk and the idle you already have show instead. For a bow:

PhaseWhen it playsIts clip
equipYou pick the bow up.Optional.
idleThe bow is held and nothing else is happening, and after another phase ends.Optional.
chargeYou hold the use button.The draw.
holdThe draw is complete.Optional: the full draw.
releaseThe arrow leaves.The release.

The draw clip does not play at its own speed. Moves sets its time from how long you have held the use button: after charge_ticks (20 by default, which is one second) the clip stands on its last frame. So the last frame of your draw clip is the full draw. If you let go without a shot, the bow goes back to idle.

A hold clip is optional. Without it the draw clip stays on its last frame while you keep holding. The example pack’s bow gives hold the draw clip with hold_last_frame, so the full draw is a phase of its own, with its own blend and settings.

The other behaviors are trident, mace, flint, shears, fishing, bucket and throwable. Their phases are in The behaviors and their phases.

The compat file

This is the file you will end up with. It is the example pack’s bow, trimmed, with placeholder clip names: my_bow_draw and my_bow_release are the two clips you make in the next section.

{
  "format_version": 2,
  "item_groups": {
    "BOW": {
      "static_when_using": true,
      "sequence": {
        "behavior": "bow",
        "charge_ticks": 20,
        "legs_locomotion_retain": 1,
        "defaults": {
          "transition_seconds": 0.16,
          "locomotion_retain": 0.08
        }
      },
      "animations": {
        "charge": "my_bow_draw",
        "hold": { "clip": "my_bow_draw", "hold_last_frame": true },
        "release": { "clip": "my_bow_release", "locomotion_retain": 0.15 }
      }
    }
  }
}
  • BOW is the item group of bows. Crossbows are their own group and do not use a sequence.
  • static_when_using draws the item you use in its ordinary held place while you use it, instead of Minecraft’s own placement for a used item. The example pack’s bow, mace and buckets all have it.
  • behavior is bow, in lower case. charge_ticks is how long the use button must be held for the draw clip to reach its last frame.
  • legs_locomotion_retain is how much of the walk shows on the legs during every phase. At 1 the legs keep the whole walk.
  • defaults holds settings that every phase shares. transition_seconds is the blend into a phase, in seconds, and locomotion_retain is how much of the walk shows during the phase. A phase’s own value wins, so release lets a little more of the walk through.
  • hold plays the draw clip again with hold_last_frame, so it shows the draw’s last frame and stays there.

Build it

Tool

In Blockbench

You will make the two clips, export them, and put them in a pack next to the compat file.

  1. Open the Punchy! Moves rig in Blockbench, as in Create an animation. The plugin is punchy_moves_rig.js.

  2. In the Animations panel, press the + button (Add Animation). Set Name to my_bow_draw, set Loop Mode to Play Once and press Confirm.

  3. Select right_arm in the outliner. With the playhead at 0, add a rotation key with the + beside Rotation in the timeline.

  4. Move the playhead to 1 second, the end of the clip, and turn the arm into the full-draw pose. Do the same for left_arm.

    The last frame is the full draw, because Moves moves through this clip as you hold the use button.

  5. Add a second animation, my_bow_release, also Play Once. Key both arms in the full-draw pose at 0 and back at rest at 0.5 seconds.

  6. Choose Animation > Export Animations. In Select Animations to Export, tick my_bow_draw and my_bow_release and press Confirm. Save the file as my_bow.animation.json in assets/punchy_moves/animations/ of your pack.

  7. In assets/punchy_moves/compat/, make a text file called my_bow.json and paste the file from The compat file.

  8. In the game, open Options, then Resource Packs, move your pack to the right-hand list and press Done.

Adding an animation and keying the rig in Blockbench. Your two clips are the draw and the release.
Animation > Export Animations, with only the new clips ticked.

In Punchy! Studio

You will make the two clips and write the compat file in the Bindings workspace. Studio keeps the clips and the file together in one pack.

  1. Join a world and press F6 to open Punchy! Studio. Pick Third Person with the switch between the menus and the workspace tabs.

  2. Choose File > Packs (Ctrl+O) and New Pack. Type the Pack name My Bow Pack and press Create.

  3. Choose File > New Clip (Ctrl+N). Type the Name my_bow_draw, set the Length to 1, leave Loop unticked and press Create.

  4. Select Right Arm in the outliner and press E for rotation. With the playhead at 0, press I to key the arm at rest.

  5. Press Shift+Right to jump to the end of the clip. In the Transform panel, type the rotation of the full-draw pose. Typing a value keys it at the playhead. Do the same for Left Arm.

    The last frame is the full draw, because Moves moves through this clip as you hold the use button.

  6. Make a second clip, my_bow_release, about half a second long. Key both arms in the full-draw pose at 0 and back at rest at the end.

  7. Open the Bindings tab (Ctrl+B) and select the pack’s compat file in the outliner. Choose File > Raw JSON and replace the text with the file from The compat file.

  8. Wait for the line under the text to say Punchy reads this. and press Apply. The Verdict panel of the sheet now says The game reads it.

  9. Press Ctrl+E and, in Export Punchy Moves Pack, keep Turn the pack on and reload ticked and press Export.

Making a clip and keying an arm in Punchy! Studio. This recording makes a looping clip called wave and keys the Right Arm and the Head; your clips are my_bow_draw and my_bow_release, which play once.
Typing a compat file into the Bindings workspace as raw JSON. This clip shows an emote file; yours is the bow.

Your clips can have a left and a right version. Name the pair my_bow_draw_left and my_bow_draw_right and keep writing my_bow_draw in the compat file: Moves plays the one for the arm that does the action. A clip with only a plain name plays for both arms and is not mirrored. See Left and right clips.

Play it

  1. Join a world with a bow and arrows. Press F5 to look at your player in third person. After a later edit, press F3+T to reload the pack.
  2. Hold the use button (right click). Your arms follow the draw clip for as long as you hold, up to one second.
  3. Keep holding. The draw stays on its last frame.
  4. Let go. The arrow leaves, the release clip plays, and the bow goes back to its resting pose.

Video coming soon

A bow sequence in game.

If nothing plays, go down Things that go wrong.

Keep a pose under a phase with over_idle

Some clips are animated as changes from a pose that another clip sets, not as full poses. The example pack’s mace is held raised: its mace_idle clip ends on that raised pose, and the group holds that last frame as its idle. The charge, the slam and the swings are animated as changes from that idle pose, and add their motion onto the raised mace. Played alone, such a clip drops the idle pose while it plays.

over_idle fixes that. With true, the phase’s clip plays on top of the last frame of the item’s idle clip. This is the example pack’s mace. Its defaults turn over_idle on for every phase:

{
  "format_version": 2,
  "item_groups": {
    "MACE": {
      "static_when_using": true,
      "sequence": {
        "behavior": "mace",
        "charge_height": 3,
        "smash_distance": 1.5,
        "defaults": {
          "transition_seconds": 0.16,
          "locomotion_retain": 0.15,
          "retrigger_progress": 70,
          "over_idle": true
        }
      },
      "animations": {
        "equip": { "clip": "mace_idle" },
        "idle": { "clip": "mace_idle", "hold_last_frame": true, "transition_seconds": 0.22 },
        "charge": {
          "clip": "mace_charge",
          "one_handed": "mace_charge_alt",
          "transition_seconds": 0.05,
          "locomotion_retain": 0.05
        },
        "slam": {
          "clip": "mace_slam",
          "one_handed": "mace_slam_alt",
          "transition_seconds": 0.05,
          "locomotion_retain": 0,
          "retrigger_progress": 85
        },
        "attack": {
          "variants": [
            { "clip": "mace_attack_1", "one_handed": "mace_attack_alt_1" },
            { "clip": "mace_attack_2", "one_handed": "mace_attack_alt_2" }
          ]
        }
      }
    }
  }
}

Video coming soon

The same mace swing without and with over_idle.

How it behaves:

  • Put over_idle on one phase, or in sequence.defaults for every phase. A phase’s own value wins. The same keys work on an exact item under items.
  • It is true or false without quotes. Text such as "true" is ignored.
  • It does nothing on equip and idle, and it needs an idle phase with a clip. Without one there is nothing to play on top of.
  • The clip’s values are added to the idle’s last frame. A clip that already holds the raised pose in its own keys would raise it twice, so leave over_idle off for a clip animated from the full pose.

To use it on one phase only, write it on that phase:

{
  "format_version": 2,
  "item_groups": {
    "MACE": {
      "sequence": { "behavior": "mace" },
      "animations": {
        "idle": { "clip": "my_mace_idle", "hold_last_frame": true },
        "slam": { "clip": "my_mace_slam", "over_idle": true }
      }
    }
  }
}

To see it with two clips of your own:

  1. Make my_mace_idle the way Build it makes the bow’s clips, about 1 second long. Key right_arm at rest at 0 and raised forward, about 50 degrees, at the end. Its last frame is the raised mace.
  2. Make my_mace_slam, about half a second long. Key right_arm raised high, about 120 degrees forward, at 0 and with every value at 0 at the end. With over_idle, 0 means the idle pose, so the arm ends on the raised mace.
  3. Put both clips in your pack as in Build it, and save the block above as my_mace.json in assets/punchy_moves/compat/. In Punchy! Studio, paste it into the pack’s compat file in the Bindings workspace and export the pack. Turn your pack on, keep the example pack provided by Crafto off, and press F3+T.
  4. Hold a mace, fall more than 1.5 blocks and hit a mob. The slam plays on top of the raised arm. Delete "over_idle": true, reload, and swing again: the raised arm drops while the slam plays.

When your other hand is full

one_handed on a phase names the clip that plays instead when your other hand holds something. It is a clip name, or an object with a clip and settings of its own. The mace above gives most phases a one-handed twin. The example pack’s filled bucket does the same for equip, idle and use, and gives the idle’s one-handed clip an object so that it can have its own blend:

{
  "format_version": 2,
  "item_groups": {
    "FILLED_BUCKET": {
      "static_when_using": true,
      "sequence": {
        "behavior": "bucket",
        "defaults": {
          "transition_seconds": 0.16,
          "locomotion_retain": 0.15,
          "retrigger_progress": 70
        }
      },
      "animations": {
        "equip": {
          "clip": "bucket_full_dual_handed_intro",
          "one_handed": "bucket_full_one_handed_intro"
        },
        "idle": {
          "clip": "bucket_full_dual_handed_intro",
          "one_handed": { "clip": "bucket_full_one_handed_intro", "transition_seconds": 0.16 },
          "hold_last_frame": true,
          "transition_seconds": 0.22
        },
        "use": {
          "clip": "bucket_full_dual_handed_action",
          "one_handed": "bucket_full_one_handed_action"
        }
      }
    }
  }
}

The bucket behavior plays use when you use the bucket. An empty bucket is its own group, EMPTY_BUCKET, with a sequence of its own.

Video coming soon

A filled bucket with a free hand and with a full one.

Overlays follow the same split. one_handed_overlays is a list of overlay objects, written like overlays, with a clip, a mode and bones. While the phase’s one-handed clip plays, it replaces overlays. Without it, the one-handed clip plays the ordinary overlays. An empty list plays none. For a use phase, the overlays are chosen when it starts and kept until it ends.

The example pack provided by Crafto uses it on held actions outside a sequence: the attack and mining of its AXE group name pickaxe clips as one_handed, with the pickaxe overlays in one_handed_overlays. On a phase it is written the same way. The overlay clips here are placeholders:

{
  "format_version": 2,
  "item_groups": {
    "FILLED_BUCKET": {
      "sequence": { "behavior": "bucket" },
      "animations": {
        "use": {
          "clip": "bucket_full_dual_handed_action",
          "one_handed": "bucket_full_one_handed_action",
          "overlays": [{ "clip": "my_bucket_use_add", "mode": "additive", "bones": ["head"] }],
          "one_handed_overlays": [{ "clip": "my_bucket_use_one_hand_add", "mode": "additive", "bones": ["head"] }]
        }
      }
    }
  }
}

one_handed_overlays goes on a phase, never in sequence.defaults: there it drops the whole file.

The keys used here

These are the keys this recipe uses. Every other key of a sequence is in Sequences of the compat file reference.

Keys of a sequence and its phases
KeyTypeDefaultWhat it does
behaviorRequiredtextIn sequence. One of bow, trident, mace, flint, shears, fishing, bucket or throwable, in lower case. It decides when each phase plays.
charge_ticksnumber20In sequence, for bow and trident. The ticks of holding the use button that map onto the whole charge clip.
minimum_charge_ticksnumber3In sequence, for bow and trident. The ticks another player must have held the use button before their release counts as a shot.
legs_locomotion_retainnumberIn sequence or on a phase. How much of the walk shows on the legs. Without it, locomotion_retain applies to the legs too.
defaultsobjectIn sequence. Phase settings shared by every phase. A phase's own value wins. It takes phase settings only, never a clip.
clipclipOn a phase. The phase's clip. A phase can also be just a clip name.
hold_last_framebooleanOn a phase. true starts the clip on its last frame. It stays there on idle, hold and fishing, and on the charge of a mace. On any other phase the clip ends at once and the sequence moves on, to idle (to fishing after a cast while the hook is out). It must be true or false, without quotes.
over_idlebooleanfalseOn a phase or in sequence.defaults. true plays the phase's clip on top of the last frame of the item's idle clip, for a clip animated as a change from the idle pose. Ignored on equip and idle, and when the value is not true or false.
one_handedclip or objectOn a phase. The clip that plays instead while your other hand holds something. An object takes a clip and settings of its own.
overlayslistOn a phase. More clips played over it. See overlays.
one_handed_overlayslistOn a phase. Overlays used instead of overlays while its one-handed clip plays. An empty list plays none. Anything but a list drops the file.
transition_secondsnumber0.16On a phase or in defaults. Seconds to blend into the phase. A use, cast or reel that starts from using the item never blends slower than 0.08.
locomotion_retainnumber0.15On a phase or in defaults. How much of the walk shows during the phase.
retrigger_progresspercent70On a phase or in defaults. How much of the phase's clip must play before the next attack can start.

Things that go wrong

  • The whole file is dropped. The game skips a file with any of these: a behavior that is not one of the eight, or is not in lower case; a key a sequence or a phase does not take; a clip or a one_handed_overlays in sequence.defaults; a hold_last_frame that is not true or false; an overlays or one_handed_overlays that is not a list; variants on any phase but attack; an action named attack_1 or ending in _one_handed in a sequenced item (keep variants and one_handed inside the phase); a sequence on empty_hand. The full list is Things that drop a whole file. In Punchy! Studio the line under the raw JSON says The game drops this file, or what is wrong with the JSON, before you export.
  • The draw is too quick or too slow. The clip follows how long you hold the use button, not its own length. Change charge_ticks.
  • The arms jump when a phase starts. Raise transition_seconds for that phase.
  • over_idle does nothing. It is ignored on equip and idle, it needs an idle clip, and "true" in quotes is text, which is ignored.
  • An overlay on an arm does not show. An overlay’s bones list matches root, waist, head and body. A name with an underscore, such as right_arm, never matches, so let the phase’s own clip move the arms.
  • A crossbow has no sequence. It has its own crossbow action.
  • Nothing plays in game. Check that the pack is on, that the example pack provided by Crafto is off while you test, that the clip names are spelled exactly as in the animation file, and that you pressed F3+T after the last edit. Why a clip does not play has the rest.

Last checked against the mod on 30 October 2026.