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.
-
Blockbench
-
Punchy! Studio
This page has not been translated into Norwegian Bokmål 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:
| Phase | When it plays | Its clip |
|---|---|---|
equip | You pick the bow up. | Optional. |
idle | The bow is held and nothing else is happening, and after another phase ends. | Optional. |
charge | You hold the use button. | The draw. |
hold | The draw is complete. | Optional: the full draw. |
release | The 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 }
}
}
}
}
BOWis the item group of bows. Crossbows are their own group and do not use a sequence.static_when_usingdraws 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.behaviorisbow, in lower case.charge_ticksis how long the use button must be held for the draw clip to reach its last frame.legs_locomotion_retainis how much of the walk shows on the legs during every phase. At 1 the legs keep the whole walk.defaultsholds settings that every phase shares.transition_secondsis the blend into a phase, in seconds, andlocomotion_retainis how much of the walk shows during the phase. A phase’s own value wins, soreleaselets a little more of the walk through.holdplays the draw clip again withhold_last_frame, so it shows the draw’s last frame and stays there.
Build it
In Blockbench
You will make the two clips, export them, and put them in a pack next to the compat file.
-
Open the Punchy! Moves rig in Blockbench, as in Create an animation. The plugin is
punchy_moves_rig.js. -
In the Animations panel, press the + button (Add Animation). Set Name to
my_bow_draw, set Loop Mode to Play Once and press Confirm. -
Select
right_armin the outliner. With the playhead at 0, add a rotation key with the + beside Rotation in the timeline. -
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.
-
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. -
Choose Animation > Export Animations. In Select Animations to Export, tick
my_bow_drawandmy_bow_releaseand press Confirm. Save the file asmy_bow.animation.jsoninassets/punchy_moves/animations/of your pack. -
In
assets/punchy_moves/compat/, make a text file calledmy_bow.jsonand paste the file from The compat file. -
In the game, open Options, then Resource Packs, move your pack to the right-hand list and press Done.


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.
-
Join a world and press F6 to open Punchy! Studio. Pick Third Person with the switch between the menus and the workspace tabs.
-
Choose File > Packs (Ctrl+O) and New Pack. Type the Pack name
My Bow Packand press Create. -
Choose File > New Clip (Ctrl+N). Type the Name
my_bow_draw, set the Length to 1, leave Loop unticked and press Create. -
Select Right Arm in the outliner and press E for rotation. With the playhead at 0, press I to key the arm at rest.
-
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.
-
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. -
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.
-
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.
-
Press Ctrl+E and, in Export Punchy Moves Pack, keep Turn the pack on and reload ticked and press Export.


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
- 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.
- Hold the use button (right click). Your arms follow the draw clip for as long as you hold, up to one second.
- Keep holding. The draw stays on its last frame.
- Let go. The arrow leaves, the
releaseclip plays, and the bow goes back to its resting pose.
Video coming soon
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
How it behaves:
- Put
over_idleon one phase, or insequence.defaultsfor every phase. A phase’s own value wins. The same keys work on an exact item underitems. - It is
trueorfalsewithout quotes. Text such as"true"is ignored. - It does nothing on
equipandidle, and it needs anidlephase 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_idleoff 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:
- Make
my_mace_idlethe way Build it makes the bow’s clips, about 1 second long. Keyright_armat rest at 0 and raised forward, about 50 degrees, at the end. Its last frame is the raised mace. - Make
my_mace_slam, about half a second long. Keyright_armraised high, about 120 degrees forward, at 0 and with every value at 0 at the end. Withover_idle, 0 means the idle pose, so the arm ends on the raised mace. - Put both clips in your pack as in Build it, and save the block above as
my_mace.jsoninassets/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. - 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
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.
| Key | Type | Default | What it does |
|---|---|---|---|
behaviorRequired | text | In sequence. One of bow, trident, mace, flint, shears, fishing, bucket or throwable, in lower case. It decides when each phase plays. | |
charge_ | number | 20 | In sequence, for bow and trident. The ticks of holding the use button that map onto the whole charge clip. |
minimum_ | number | 3 | In sequence, for bow and trident. The ticks another player must have held the use button before their release counts as a shot. |
legs_ | number | In sequence or on a phase. How much of the walk shows on the legs. Without it, locomotion_ applies to the legs too. | |
defaults | object | In sequence. Phase settings shared by every phase. A phase's own value wins. It takes phase settings only, never a clip. | |
clip | clip | On a phase. The phase's clip. A phase can also be just a clip name. | |
hold_ | boolean | On 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_idle | boolean | false | On a phase or in sequence.. 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_handed | clip or object | On a phase. The clip that plays instead while your other hand holds something. An object takes a clip and settings of its own. | |
overlays | list | On a phase. More clips played over it. See overlays. | |
one_ | list | On 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_ | number | 0.16 | On 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_ | number | 0.15 | On a phase or in defaults. How much of the walk shows during the phase. |
retrigger_ | percent | 70 | On 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
behaviorthat is not one of the eight, or is not in lower case; a key a sequence or a phase does not take; aclipor aone_handed_overlaysinsequence.defaults; ahold_last_framethat is nottrueorfalse; anoverlaysorone_handed_overlaysthat is not a list;variantson any phase butattack; an action namedattack_1or ending in_one_handedin a sequenced item (keepvariantsandone_handedinside the phase); asequenceonempty_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_secondsfor that phase. over_idledoes nothing. It is ignored onequipandidle, it needs anidleclip, and"true"in quotes is text, which is ignored.- An overlay on an arm does not show. An overlay’s
boneslist matchesroot,waist,headandbody. A name with an underscore, such asright_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.
Related pages
- Compat files is the whole reference, with Sequences for every phase and behavior.
- Camera and features lists the sequence keys among the held-item actions.
- Create an animation makes the clips this recipe wires up.
- Animation files explains what a clip file holds and how Moves finds a clip.
- Punchy! Studio for Moves covers the Bindings workspace.
- Other recipes: walk cycle, emote, riding and swimming.
Last checked against the mod on 30 October 2026.