Camera and features
Turn on and frame the Punchy! Moves shoulder camera, flip its feature switches, and learn the movement, item and world features a pack can animate, with the settings each one reads.
This page has not been translated into Japanese yet, so it is shown in English. Read in English
On this page
Punchy! Moves puts a shoulder camera behind your character and plays the animations of your resource pack on the whole body. This page shows you how to switch the camera on and frame it, what each feature switch does, and the moments of play that Moves can animate, with the settings each one reads. It is for players who want to tune their view and for pack makers who need to know what a feature expects.
Before you start
- Punchy! Moves is installed. Getting started covers the install.
- The camera works on its own. The animations come from a resource pack, because Moves ships no clips of its own. The clips on this page use the example pack provided by Crafto, Fluid & Foolish.
- Most feature cameras (fence, ladder, elytra, nearby block, aiming and riding) frame the view with numbers that a pack supplies. A pack that gives none leaves that camera on your own framing.
Turn on the camera and frame it
- Join a world and press V (Toggle Custom Camera). The view glides behind your shoulder and “Punchy Camera: enabled” shows above the hotbar.
- Press F7 (Open Camera Settings). Moves opens its settings screen, titled Punchy Moves, on the Camera page.
- Press the handle of Horizontal, Vertical, Depth or Field of View and drag. While you drag, only that slider stays on screen, so you judge the new framing on the real view. Let go to bring the screen back.
- The page shows four sliders at a time. Scroll with the mouse wheel, or drag the scrollbar beside them, to reach Horizontal rotation and Vertical rotation.
- Press Done. Your values are saved each time you let go of a slider.
Video coming soon
The Camera page
F7 opens Moves’ own settings screen, titled Punchy Moves, with or without Punchy! installed. It has three pages on the left, under the heading SETTINGS: Camera, Features and Shortcuts. The face settings are elsewhere: with Punchy!‘s new menu installed, they are the Face tab of its Punchy Moves group, covered on Faces.
The Camera page has the Custom Camera button at the top and the six sliders under it, four at a time.
| Label | Control | Default | Range | What it does |
|---|---|---|---|---|
| Custom Camera | button | On | on or off | Turns the shoulder camera on or off, like the V key. It reads Custom Camera: ON or Custom Camera: OFF. |
| Horizontal | slider | 1.17 | -2.0 to 2.0 | Moves the camera sideways. A positive value puts the camera to your character’s right, so the character sits left of the middle of the screen. |
| Vertical | slider | -0.11 | -1.5 to 2.0 | Height of the camera from your character’s eye level. |
| Depth | slider | 2.5 | 1.0 to 8.0 | How far behind your character the camera sits, in blocks. |
| Field of View | slider | 70 | 30 to 110 | Viewing angle in degrees while the custom camera is on. |
| Horizontal rotation | slider | 0 | -30 to 30 | Turns the camera left or right of the direction you aim, in degrees. |
| Vertical rotation | slider | 0 | -30 to 30 | Tilts the camera up or down from the direction you aim, in degrees. |
The buttons:
- Replay tutorial, in the left column, shows the seven-page quick guide again.
- Reset, at the bottom of the left column, puts every camera value, every feature switch and the Better Combat pack attacks and Spatial GUI panel choices back to their defaults and turns the custom camera on, whichever page is open.
- Done and the cross at the top (Close) save and close the screen.
Keys
| Key | Controls label | What it does |
|---|---|---|
| V | Toggle Custom Camera | Turns the custom camera on or off. |
| F7 | Open Camera Settings | Opens the settings screen above, on its Camera page. |
| B | Toggle Orbit Camera | Starts or ends the orbit camera. |
You can change each one under Punchy Moves in Minecraft’s key binds. The Open Minecraft key binds button on the Shortcuts page takes you there. The page lists your current keys, one row each, and scrolls past ten rows. The emote wheel and the other keys are on Keys and emotes.
The orbit camera
The orbit camera lets you look around your character without turning it.
- Press V so the custom camera is on.
- Press B. “Orbit camera: enabled” shows above the hotbar.
- Move the mouse. The camera circles your character and tilts up or down, up to 90 degrees each way. The character keeps its heading, and the movement keys keep moving it.
- Press B again. “Orbit camera: disabled” shows, and your character turns to face where the camera was pointing.
Video coming soon
Pressing B with the camera off shows “Enable the custom camera first”. Turning the custom camera off, or pressing Minecraft’s own perspective key, also ends the orbit.
How the camera behaves
- Turning it on takes about 0.9 seconds and turning it off about 0.7 seconds, so the view never jumps.
- The camera glides to its spot. When a feature camera changes the framing, the move is smooth too.
- Blocks push the camera in. It stops in front of a wall instead of sitting inside it.
- Your character fades as the camera comes close to its body, and disappears when the camera would be inside it.
- The camera works in Minecraft’s third-person back view. Minecraft’s own perspective key (F5 by default) turns the custom camera off on its way through first person and the front view.
- In first person you see Minecraft’s own view. Moves does not pose your character there.
- While you swim in a swim pose, the camera follows the swimming body, so the view stays at your character’s head.
The camera.json file
Moves saves the camera in config/punchy_moves/camera.json. It writes the file each time you let go of a slider, flip a switch, close Moves’ own screen or press V. You can also edit it by hand while the game is closed.
{
"enabled": true,
"horizontal": 1.17,
"vertical": -0.11,
"depth": 2.5,
"fov": 70.0,
"rotationYaw": 0.0,
"rotationPitch": 0.0,
"fenceCamera": true,
"ladderCamera": true,
"proximityCamera": true,
"elytraCamera": true,
"mapCamera": true,
"bowAndCrossbowCameraFix": true,
"spearAndTridentCameraFix": true,
"ladderBodyLock": true
}
| Key | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | The saved state of the Custom Camera switch. |
horizontal | number | 1.17 | The Horizontal slider. Values outside -2 to 2 are brought into range. |
vertical | number | -0.11 | The Vertical slider. Range -1.5 to 2. |
depth | number | 2.5 | The Depth slider. Range 1 to 8. |
fov | number | 70 | The Field of View slider. Range 30 to 110. |
rotation | number | 0 | The Horizontal rotation slider. Range -30 to 30. |
rotation | number | 0 | The Vertical rotation slider. Range -30 to 30. |
fence | boolean | true | The Fence camera switch. |
ladder | boolean | true | The Ladder camera switch. |
proximity | boolean | true | The Nearby-block camera switch. |
elytra | boolean | true | The Elytra camera switch. |
mapCamera | boolean | true | The Map third-person camera switch. |
bow | boolean | true | The Bow and crossbow camera switch. |
spear | boolean | true | The Spear and trident camera switch. |
ladder | boolean | true | The Face the ladder switch. |
A key you leave out keeps its default. A file that is not a JSON object, a key set to null, or a number key written as text that is not a number resets every value in the file to its default, the switches and Custom Camera included. A switch written as text or a number counts as off unless the text reads true (capitals do not matter).
Feature switches and pack cameras
The Features page has ten rows and shows four at a time: scroll with the mouse wheel or drag the scrollbar to reach them all. The first eight rows are switches, all on by default. The ninth chooses the Better Combat mode and the tenth the Spatial GUI mode. Each change saves at once.
| Switch | It applies while | The pack gives its framing with |
|---|---|---|
| Fence camera | You stand on a fence block (wooden fences and the nether brick fence, not walls or gates). It holds until you are back on the ground away from the fence. | fence. |
| Ladder camera | You are on a ladder, a vine or another climbable block. | climbing. |
| Nearby-block camera | You look at a block close to your body, or you mine one (details below). | cameras. |
| Elytra camera | You glide with elytra. | elytra. |
| Map third-person camera | You hold a filled map and look down. It also switches the map pose on and off. | map_view in the MAP item group, or the built-in framing |
| Bow and crossbow camera | You draw a bow, hold a loaded crossbow, hold a throwable that your pack gives a throwable sequence, or a timed held pose runs. | cameras., or the item’s own camera for a throwable or a timed pose |
| Spear and trident camera | You charge a spear or trident, and for four seconds after a spear attack. | cameras. |
| Face the ladder | You are on a ladder block. Your body turns to face the ladder and stays on it. Vines are not affected. | nothing, it is part of the mod |
| Better Combat pack attacks | Better Combat is installed. Each click steps through Automatic, On and Off, and Automatic shows what it does right now, as Automatic (ON) or Automatic (OFF). See Combat. | better_ |
| Spatial GUI panel | The Spatial GUI mod is installed and you use its panel. Each click steps through Full, Partial and Off: Full walks your character to the slot, Partial only reaches for it, and Off leaves the panel alone. Full is the default, saved in config/. | nothing, it is part of the mod |
Video coming soon
A camera block
Every pack camera is one block of five numbers. They mean the same as the sliders on the Camera page.
| Key | Type | What it does |
|---|---|---|
horizontal | number | Sideways offset. Positive is to the character's right. |
vertical | number | Height from eye level. |
depth | number | Distance behind the character, in blocks. |
fov | number | Viewing angle in degrees. |
response | number | How fast the view blends into this framing and back out. Higher is quicker. It must be above 0. (The nearby-block camera blends by blend_ and blend_ instead; its response only has to be above 0.) |
A fence, ladder, elytra, nearby-block or aiming camera needs all five numbers. A block with a missing number, or a response that is 0 or less, stays off, and the view keeps your own framing. Two cameras are the exceptions. A riding camera needs horizontal, vertical, depth and fov, and response is optional (4 when left out). The map camera fills in any number you leave out with its built-in value (horizontal 0, vertical 0.68, depth 1, fov 55, response 4.5), and a response of 0 or less counts as 0.1.
A pack with cameras
This file gives a pack seven cameras: fence, ladder, elytra, riding, nearby block, aiming and map. The numbers come from the example pack provided by Crafto. The clip names are placeholders for yours.
{
"format_version": 2,
"defaults": {
"animations": {
"fence": {
"clip": "my_fence_hold",
"camera": { "horizontal": 0, "vertical": 0.75, "depth": 2.94, "fov": 85, "response": 4 }
},
"climbing": {
"clip": "my_climb",
"camera": { "horizontal": 0, "vertical": 0.11, "depth": 2.34, "fov": 70, "response": 4 }
},
"elytra": {
"normal": "my_glide",
"camera": { "horizontal": 0.92, "vertical": 0.36, "depth": 3.63, "fov": 70, "response": 3.5 }
},
"passenger_state": {
"entities": ["minecraft:nautilus"],
"idle": "my_nautilus_idle",
"moving": "my_nautilus_swim",
"camera": { "horizontal": 0.88, "vertical": -0.65, "depth": 3.91, "fov": 68, "response": 3.5 }
}
}
},
"cameras": {
"proximity": {
"instant_distance": 1,
"enter_distance": 2.2,
"mining_hold_seconds": 2,
"blend_in_response": 5,
"blend_out_response": 3.2,
"camera": { "horizontal": 0.44, "vertical": 0.33, "depth": 2.85, "fov": 80, "response": 4 }
},
"aiming": {
"camera": { "horizontal": 0, "vertical": 0.75, "depth": 2.94, "fov": 85, "response": 4 }
}
},
"item_groups": {
"MAP": {
"animations": {
"map_view": {
"pose": "my_map_pose",
"look_down_enter": 55,
"look_down_exit": 18,
"camera": { "horizontal": 0, "vertical": 0.68, "depth": 1, "fov": 55, "response": 4.5 }
}
}
}
}
}
Save it as assets/punchy_moves/compat/cameras.json in your pack. After editing a pack, press F3+T to reload it. cameras takes only proximity and aiming. Any other key there drops the whole file.
| Key | Type | Default | What it does |
|---|---|---|---|
instant_ | number | 1 | Blocks between your body and the block you look at. Closer than this, the camera moves in at once, unless you sprint. |
enter_ | number | 2.2 | While you hold the attack button on a block this near, the camera moves in. |
mining_ | number | 2 | How long the camera stays in after you stop mining. |
blend_ | number | 5 | How fast the camera moves in. At least 0.1. |
blend_ | number | 3.2 | How fast the camera moves back out. At least 0.1. |
When more than one camera applies
Cameras blend one over the other in this order: fence, nearby block, ladder, elytra, riding, map, aiming. When two apply together, the one lower in the list takes over, blending by its own response (the nearby-block camera uses its blend_in_response and blend_out_response). When none apply, the view returns to the framing of your sliders.
What Punchy! Moves animates
A pack tells Moves which clip belongs to which moment in its compat files, under assets/punchy_moves/compat/. The clips live in assets/punchy_moves/animations/. The sections below name each moment, its action key and its settings.
- Body moments (walking, falling, swimming, riding and more) go in
defaults.animations. Writing them anywhere else does nothing. - Held-item moments go in
defaults,empty_hand,item_groupsoritems. For a held item, Moves looks at the exact item first, then its group, thendefaults. An empty hand usesempty_hand, thendefaults. - A clip name that no animation file defines never plays, and nothing warns you.
Compat files is the full format. This page is the tour.
A small file shows the shape:
{
"format_version": 2,
"defaults": {
"animations": {
"idle": "my_idle",
"walking": {
"directions": {
"forward": "my_walk_forward",
"backward": "my_walk_backward",
"left": "my_sidestep_left",
"right": "my_sidestep_right"
}
},
"jump": { "left": "my_jump_left", "right": "my_jump_right" }
}
}
}

Standing, idle moments and turning
idle is the standing loop. Everything else falls back to it when a pose has no idle of its own.
| Key | Type | Default | What it does |
|---|---|---|---|
variants | list | Clip names. Moves picks one each time. An entry can also be an object with a clip. | |
min_ | number | 20 | Shortest wait between two idle events. At least 1. |
max_ | number | 45 | Longest wait. At least the minimum. |
chance | number | 1 | Chance that an event plays when its time comes, from 0 to 1. |
{
"format_version": 2,
"defaults": {
"animations": {
"idle_events": {
"variants": ["my_look_around", "my_stretch"],
"min_interval_seconds": 8,
"max_interval_seconds": 15,
"chance": 1
}
}
}
}
Turn in place keeps your body still while you look around, then turns it with a clip.
| Key | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | false | Switches the feature on. It must be true or false. |
left | clip name | The clip for a turn to the left. It goes with right: giving only one drops the file. | |
right | clip name | The clip for a turn to the right. | |
minimum_ | number | 60 | The body turns when your view is this far off it. Kept between 2 and 90. |
look_ | number | 2 | The body also turns after you hold your view still this long. Kept between 0 and 10. |
fade_ | number | 0.12 | How long the body takes to blend back to normal when you move. Kept between 0.05 and 0.4. |
left_ | clip name | A companion clip for the left step. It plays with the step, on the step's clock and at its strength, added on top of it on the legs, arms, body and head. Optional, and it needs no leg tracks of its own. | |
right_ | clip name | The same for the right step. |
This is the turn in place of the example pack provided by Crafto, with the clip names changed to placeholders. Its bindings keep the 60 degrees, set look_idle_seconds to 0.25 so the body follows soon after your view rests, and give each step a companion clip:
{
"format_version": 2,
"defaults": {
"animations": {
"turn_in_place": {
"enabled": true,
"left": "my_step_left",
"right": "my_step_right",
"minimum_turn_degrees": 60,
"look_idle_seconds": 0.25,
"fade_out_seconds": 0.12,
"left_overlay": "my_step_add_left",
"right_overlay": "my_step_add_right"
}
}
}
}
The body turns when the view is far enough off, when you held it still long enough, or when you start an action. Both step clips must have tracks for left_leg and right_leg and be longer than 0 seconds, or the feature stays off. The root rotation of the clip paces the turn. A clip without a root rotation turns the body over the whole clip, easing in and out, so the body turns as the feet step. The step clips of the example pack have no root track, so it turns this way. A left_overlay or right_overlay that is empty or not text drops the whole file.
Walking, sprinting and crouching
walking gives a clip per direction. A direction can be a clip name, an object with a clip, or a list of candidates that play by their when and weight expressions.
| Key | Type | Default | What it does |
|---|---|---|---|
directions. | clip, object or list | The forward walk. backward, left and right sit beside it. Without a clip for a direction, that direction has no walk. In the object form, reverse and add work as described below the table. | |
directions. | object | The run. Give forward for one loop, or the stages below. | |
amplitude_ | number | 0 | The speed, in blocks per tick, at which the walk plays at full strength. Above 0 it turns on: the direction clips of the walk and the run then play as strong as your speed against this value, so slow steps are small and a sprint swings wider. 0 or less, or left out, leaves it off and the walk plays at full strength at any speed. While you use an item that slows you, such as drawing a bow or eating, the value is scaled down by that slowdown (to no less than a tenth), so the slowed walk keeps a full stride. |
max_ | number | 1.2 | The most the walk's strength can reach under amplitude_. At 1.2 a sprint can swing up to 20 percent wider than the clip was animated. A negative value counts as 0. It does nothing while amplitude_ is off. |
sprint_ | clip name | A clip added on top of the walk while you sprint, on the walk's own clock and as strong as the sprint. Giving it also makes a sprint run on the forward clips: as the sprint builds, the sidestep and backward parts of the walk move into the forward run (directions.), so a full sprint plays one forward cycle with this clip on top. Without it nothing changes. | |
stride_ | number | 1.67 | Blocks you travel for one full cycle of the walk clip. Never below 0.05. |
sprint_ | number | 1.67 | The same while sprinting. |
crouch_ | number | 1.15 | The same while crouching. |
max_ | number | 1.25 | The fastest the walk clip cycles. |
sprint_ | number | 1.58 | The same while sprinting. |
crouch_ | number | 0.75 | The same while crouching. |
minimum_ | number | 0.0005 | A tick's move shorter than this, in blocks, does not count toward the walk cycle. |
maximum_ | number | 0.35 | A tick's move longer than this does not count either, which ignores teleports. |
A candidate is an object with clip, an optional when (an expression that must hold) and an optional weight (an expression, 1 when left out). Two candidates with weights that cross over make a smooth blend between a slow and a fast walk:
{
"format_version": 2,
"defaults": {
"animations": {
"walking": {
"directions": {
"forward": [
{ "clip": "my_walk_slow", "weight": "1 - smoothstep(0.35, 0.65, limb_speed)" },
{ "clip": "my_walk_fast", "weight": "smoothstep(0.35, 0.65, limb_speed)" }
],
"backward": "my_walk_backward",
"left": "my_sidestep_left",
"right": "my_sidestep_right"
}
}
}
}
}
One walk for two directions
The object form of a direction, and each candidate in a list, takes two more keys:
reverse(trueorfalse,falsewhen left out) plays the clip backward on the walk’s clock, at the same pace, so one forward walk can also be the backward walk.addis the name of an extra clip that plays with the direction’s clip: on the same clock (backward too whenreverseis set) and with the same weight, added on top of the walk. Use it for a sway or an accent made as a change from the walk pose.
Both also work on directions.sprint.forward and on the directions of crawling. This is the walk of the example pack provided by Crafto: one forward clip with a sway on top, played backward for the backward walk, and a stride that scales with your speed. The reference speed of 0.215 blocks per tick is about the game’s walking speed.
{
"format_version": 2,
"defaults": {
"animations": {
"walking": {
"directions": {
"forward": { "clip": "normal_forward", "add": "nf_add" },
"backward": { "clip": "normal_forward", "reverse": true, "add": "nf_add" },
"left": { "clip": "sidestep_left" },
"right": { "clip": "sidestep_right" },
"sprint": { "forward": { "clip": "normal_forward", "add": "nf_add" } }
},
"amplitude_reference_speed": 0.215,
"max_amplitude": 1.2,
"sprint_overlay": "sprint_add"
}
}
}
}
Sprint stages
The sprint object can hold stages:
{
"format_version": 2,
"defaults": {
"animations": {
"walking": {
"directions": {
"forward": "my_walk_forward",
"sprint": {
"entry_loop": { "clip": "my_run_start_loop", "duration": 2, "blend_to_second_stage": 0.4 },
"second_stage": { "clip": "my_run" },
"rare_loop": { "clip": "my_run_rare", "chance": 0.01 },
"stop": { "to_idle": "my_run_stop", "to_walk": "my_run_stop_walk", "minimum_speed": 0.08 }
}
}
}
}
}
}
| Key | Type | What it does |
|---|---|---|
forward | clip or list | A single sprint loop. It is used when the pack gives no entry_loop or second_ clip. |
entry_loop | object | The first stage. It has a clip, a duration in seconds (0 when left out) and blend_ (0 when left out). |
second_ | object | The second stage, as an object with a clip. |
rare_loop | object | An occasional clip with a clip and a chance (0.125 when left out). |
transition | object | A clip for the move from the entry loop to the second stage, with a name or animation. It plays only when the pack gives both an entry_loop (its duration sets when the move happens) and a second_ clip. |
start | object or text | A clip for the start of a sprint. |
stop | object | The stop clips: to_idle, to_walk and legacy, and minimum_ (0.08, never below 0.01). With additive set to true (without quotes), the stop clip is added on top of what plays underneath instead of blending over it and back into the walk. Arms held with both hands get none of it. |
Crouching and other poses
The pose moments sit beside walking. Each takes clip (or pose) and many take idle, the standing clip that plays under the pose when you stop.
| Key | Type | What it does |
|---|---|---|
crouch | object | clip is the hold, enter and exit play when you start and stop crouching, idle is the standing clip under it, and timer_ (1) sets how fast the crouch clips run. With additive set to true (without quotes, false when left out) the crouch is one held pose: the enter clip (or clip, when there is no enter) plays once at timer_, then stays on its last frame for as long as you crouch. Letting go fades it out. exit and the crouch's idle are not used, and the standing idle plays under it. |
crawling | object | directions with forward, backward, left and right, like walking. |
fence | object | Plays while you stand on a fence block, on the ground and not gliding, flying, climbing, crawling, falling or in a fluid. Takes clip, idle and camera. |
walk_ | object | The wading pose, while you walk in water that leaves your head above the surface. Takes clip and idle. |
creative_ | object | The creative flight pose, with clip and idle. Your character also leans into the direction you fly. |
{
"format_version": 2,
"defaults": {
"animations": {
"crouch": { "clip": "my_crouch", "enter": "my_crouch_in", "exit": "my_crouch_out", "timer_scale": 1.45 },
"fence": { "clip": "my_fence_hold" },
"walk_on_water": { "clip": "my_wade" },
"creative_fly": { "clip": "my_fly" }
}
}
}
In the example pack provided by Crafto, the crouch is one held pose: enter is its sneaking clip, additive is true and timer_scale is 1.45.
{
"format_version": 2,
"defaults": {
"animations": {
"crouch": { "enter": "my_sneak", "additive": true, "timer_scale": 1.45 }
}
}
}
The other sprint clips can also stand on their own as the actions run_start, run_stop, run_stage_transition and run_second_stage. run_stop takes the same to_idle, to_walk and additive as stop above. The example pack provided by Crafto gives both stops one clip and sets additive to true:
{
"format_version": 2,
"defaults": {
"animations": {
"run_stop": { "to_idle": "my_run_stop", "to_walk": "my_run_stop", "additive": true }
}
}
}
Expressions
A candidate’s when and weight, and the timer and blending fields of held actions, take a small expression written as text, such as "limb_speed <= 0.30". The functions are sin, cos (in radians), abs, sqrt, round, random(x), min(a, b), max(a, b), clamp(x, low, high), smoothstep(edge0, edge1, x) and lerp(t, a, b). A walking candidate can read limb_speed, crouch_modifier, sprint_weight, rare_run, sprint_elapsed, locomotion_phase, stride_distance, forward, backward, left, right and direction_weight. A file can also declare its own var.<name> numbers and varb.<name> switches under a root key variables. Compat files says what each one is.
Jumping, falling and landing
| Key | Type | Default | What it does |
|---|---|---|---|
left | clip | A hop on the left foot. right goes with it. Hops alternate and start on the right. | |
running.left | clip | A hop while you sprint. running.right goes with it. | |
moving.left | clip | A hop while moving. moving.right goes with it. | |
idle.left | clip | A hop while standing. idle.right goes with it. | |
landing | clip | The jump's contact clip, which finishes a jump on the ground (see below). running, moving and idle take their own landing too, and a family's own landing wins. | |
landing_ | number (seconds) | 0.7 | How far into the jump clip a landing still plays the contact clip. A later landing plays the landing clips instead. It also bounds where the jump waits in the air. It counts only with a contact clip. 0 or less: no landing counts as early. |
A jump tries a family of clips, best first. A sprinting jump tries running, then moving, then the plain left and right. A walking jump tries moving, then the plain sides. A standing jump tries idle, then the plain sides. In each family Moves tries the side that is due first, then the other side.
With a contact clip, the jump clip plays up to the moment whose pose is nearest the contact’s first frame (no later than landing_before_seconds) and waits there while you stay in the air. When you land before landing_before_seconds into the jump, the contact clip plays on top of what plays underneath, at full strength, in place of the landing clips, and the jump stops. A dive never plays it. Without any contact clip, the jump clip plays on and holds its last frame until you land, and then the landing clips play.
{
"format_version": 2,
"defaults": {
"animations": {
"jump": {
"left": "my_jump_left",
"right": "my_jump_right",
"running": { "left": "my_hop_left", "right": "my_hop_right" },
"moving": { "left": "my_walk_jump", "right": "my_walk_jump", "landing": "my_walk_jump_contact" },
"landing": "my_jump_contact",
"landing_before_seconds": 0.7
}
}
}
}
The example pack provided by Crafto gives a sprinting jump its own hop clips, and gives the walking and the standing jump a contact clip, with landing_before_seconds at 0.7.
| Key | Type | Default | What it does |
|---|---|---|---|
normal | clip | The falling loop. clip works as a name for it too. | |
free_fall | clip | The loop for a long, fast drop. | |
effect | clip | An extra clip played on top of the free fall at the very longest drops. | |
trigger_ | number | 5 | A fall counts after this many blocks. Never below 5. The drop is the larger of the distance already fallen and the distance to solid ground below, checked up to 64 blocks. |
free_ | number | 7 | The free fall clip takes over when the drop reaches this, or the speed reaches the next value. At least 0.5. |
free_ | number | 0.72 | Blocks per tick. At least 0.05. |
effect_ | number | 13 | The effect clip joins at this drop, or at the next speed. At least 0.5. |
effect_ | number | 1.05 | Blocks per tick. At least 0.05. |
blend_ | number | 1.2 | How fast the falling clips (normal, free_fall and effect) blend in. The blend takes 1 divided by this many seconds, so 1.2 is about 0.8 seconds. Higher is quicker. A value below 0.05 counts as 0.05. |
| Key | Type | Default | What it does |
|---|---|---|---|
light | clip | The landing for a small drop. clip works as a name too. | |
medium | clip | The landing for a medium drop. | |
heavy | clip | The landing for a big drop. | |
medium_ | number | 4 | A drop of this many blocks, or the speed below, counts as medium. At least 0.5 and at most the heavy distance. |
heavy_ | number | 8 | The same for a heavy landing. At least 0.5. |
medium_ | number | 0.58 | Impact speed in blocks per tick. At least 0.05 and at most the heavy speed. |
heavy_ | number | 0.95 | Impact speed for a heavy landing. At least 0.05. |
additive | boolean | false | true, without quotes, adds the landing clip on top of what plays underneath (the walk or the idle keeps going) instead of blending over it, and plays it as strong as the impact: full strength at the speed of a free fall from full_ blocks, weaker for softer landings. The light, medium and heavy choice is unchanged. Arms held with both hands get none of it, and a dive's landing ignores it. Text or a number is ignored. |
full_ | number | 5 | For an additive landing: the free fall, in blocks, whose impact speed plays the landing at full strength. A landing from lower plays weaker, in step with its impact speed. A value of 0 or less counts as 5. It does nothing without additive. |
{
"format_version": 2,
"defaults": {
"animations": {
"falling": { "normal": "my_fall", "free_fall": "my_free_fall", "effect": "my_fall_effect", "trigger_distance": 5, "blend_in_response": 1.2 },
"landing": { "light": "my_land", "medium": "my_land_medium", "heavy": "my_land_heavy", "heavy_distance": 8 }
}
}
}
The example pack provided by Crafto uses one squash clip for all three landings and adds it on top, so a small drop gives a small squash:
{
"format_version": 2,
"defaults": {
"animations": {
"landing": { "light": "my_squash", "medium": "my_squash", "heavy": "my_squash", "additive": true, "full_strength_distance": 5 }
}
}
}
Gliding and flying
| Key | Type | Default | What it does |
|---|---|---|---|
normal | clip | The glide loop. It blends into the high speed loop as you speed up. | |
high_speed | clip | The fast glide loop. | |
rotate | clip | A pose held on top of the glide. | |
firework_ | clip | Plays when you use a firework while gliding. | |
firework_ | clip | Plays while you glide with a firework in hand. | |
high_ | number | 0.9 | The speed where the fast loop takes over. At least 0.05. |
bank_ | number | 30 | The most your character banks when you turn. |
bank_ | number | 5 | How strongly turning banks the glide. |
bank_ | number | 5 | How quickly the bank follows the turn. At least 0.1. |
camera | camera block | The elytra camera. |
{
"format_version": 2,
"defaults": {
"animations": {
"elytra": {
"normal": "my_glide",
"high_speed": "my_glide_fast",
"rotate": "my_glide_rotate",
"firework_use": "my_firework_use",
"firework_hold": "my_firework_hold",
"high_speed_threshold": 0.9,
"bank_degrees": 30
}
}
}
}
Creative flight is the creative_fly pose in the section above.
Swimming and diving
| Key | Type | Default | What it does |
|---|---|---|---|
surface | clip | Swimming at the surface of deep water. | |
underwater | clip | Swimming under water. | |
vertical | clip | Swimming straight up or down. | |
surface_ | number | 0.12 | How deep the body sits under the surface in the surface pose. |
surface_ | number | 1.35 | How far above the surface the pose holds before it lets go. At least 0.25. |
vertical_ | number | 30.8 | The most the body tilts in the vertical swim. |
sprint_ | number | 1.25 | How much faster the clips play while you sprint-swim. |
timer_ | number | 1 | A speed factor for the swim clips. |
| Key | Type | Default | What it does |
|---|---|---|---|
water_ | clip | Plays in the air as you fall toward water. | |
water_ | clip | Plays as you hit the water. | |
water_ | clip | The dive's loop clip. alternate_ is the loop of the alternate dive. | |
water_ | clip | A second air clip, picked by chance. | |
water_ | number | 0.5 | The chance of the alternate dive, from 0 to 1. |
water_ | clip | The air clip of the cannonball tuck, picked when you sneak early in a dive (see below). sneak_loop is its loop. | |
water_ | clip | The air clip of the belly flop tuck, picked when you sneak later in a dive. late_ is its loop. | |
water_ | number | 0.3 | How long after the dive starts in the air a sneak still picks sneak_air. A sneak after that picks late_. A negative value counts as 0. It counts only with the tuck clips. |
water_ | number | 0.45 | How long the dive takes to blend into the water: from the air clip into the contact clip or the held entry pose, and from the contact into its loop. Above 0, kept between 0.05 and 5. 0 or less, or a value that is not a number, means 0.45. |
water_ | number | 0.6 | How long the hand-over from the dive to swimming takes, once the dive's clips are done and you swim. Above 0, kept between 0.05 and 5. 0 or less means 0.6. |
water_ | number | 3 | A dive starts when the drop to the water, counting what you already fell, is at least this many blocks. At least 0.5. |
lava_ | clip | The lava dive pose, held through the fall and the contact. | |
lava_ | clip | An extra clip on top of the pose while you fall toward the lava. contact_ is the one on top once you hit it. | |
lava_ | number | 3 | The same rule for lava. At least 0.5. |
{
"format_version": 2,
"defaults": {
"animations": {
"swimming": {
"surface": "swimming_overwater",
"underwater": "swimming_underwater",
"vertical": "swimming_vertical",
"surface_body_depth": 0.12,
"sprint_playback_multiplier": 1.25
},
"water_dive": { "air": "my_dive", "contact": "my_dive_pose", "loop": "my_dive_loop", "alternate_air": "my_cannonball", "alternate_loop": "my_cannonball_loop", "alternate_chance": 0.5, "trigger_distance": 3 },
"lava_dive": { "pose": "lava_dive", "air_effect": "lava_dive_air_effect", "contact_effect": "lava_dive_effect" }
}
}
}
Sneaking in a dive
Sneaking during a dive picks a tuck, once per dive. Sneak within sneak_window_seconds of the dive’s start and the dive turns into sneak_air (a cannonball), with sneak_loop as its loop. Sneak later and it turns into late_sneak_air (a belly flop), with late_sneak_loop. A tuck plays no contact clip. If the tuck you picked has no air clip, the dive stays the plain dive.
A pack with sneak_air or late_sneak_air starts every dive as the plain dive, so it needs air (without air no dive plays), and it never uses alternate_air, alternate_loop or alternate_chance. The example pack provided by Crafto does this:
{
"format_version": 2,
"defaults": {
"animations": {
"water_dive": {
"air": "my_dive",
"loop": "my_dive_loop",
"entry_blend_seconds": 0.45,
"swim_blend_seconds": 0.6,
"sneak_air": "my_cannonball",
"sneak_loop": "my_cannonball_loop",
"late_sneak_air": "my_belly_flop",
"late_sneak_loop": "my_belly_flop_loop",
"sneak_window_seconds": 0.3
}
}
}
}
Video coming soon
The swimming recipe builds these from the first clip.
Climbing
climbing plays on ladders, vines and other climbable blocks. With timer_effect set to vertical_delta, one clip follows your vertical speed: it pauses when you stop, runs backward when you go down, and speeds up with your speed.
| Key | Type | Default | What it does |
|---|---|---|---|
clip | clip | One clip for both directions. pose and name work as names too. | |
timer_ | text | vertical_ makes the clip follow your vertical speed. | |
timer_ | number | 1 | Calibrates that speed. It counts only with vertical_. The example pack provided by Crafto uses 8. |
camera | camera block | The ladder camera. |
{
"format_version": 2,
"defaults": {
"animations": {
"climbing": {
"clip": "climbing_up",
"timer_effect": "vertical_delta",
"timer_scale": 8,
"camera": { "horizontal": 0, "vertical": 0.11, "depth": 2.34, "fov": 70, "response": 4 }
}
}
}
}
Two different clips for up and down are their own actions, climb_up and climb_down, written beside each other and without a shared clip:
{
"format_version": 2,
"defaults": {
"animations": {
"climb_up": "my_climb_up",
"climb_down": "my_climb_down"
}
}
}
The Face the ladder switch, on by default, keeps the body on the ladder while you climb a ladder block.
Riding and sitting
passenger_state, mount_state and sitting_state read the same keys. They pick a pose by the vehicle or mount you sit on.
| Key | Type | Default | What it does |
|---|---|---|---|
entities | list of ids | The vehicle ids, such as minecraft:. Ids are lower case and one * is a wildcard, as in minecraft:. A rule without entities is skipped without a message, and the rest of the file is kept. | |
pose | clip | The seat pose. | |
idle | clip | The clip while the vehicle is still. | |
moving | clip | The clip while the vehicle moves. | |
speed_ | number | 0.12 | The speed at which moving takes over. At least 0.001. |
camera | camera block | The riding camera. It needs horizontal, vertical, depth and fov. | |
dynamics. | number | 0 | Lifts or lowers the rider. |
dynamics. | number | 0 | The most the rider banks in a turn. |
dynamics. | number | 1 | How strongly the rider banks. |
dynamics. | number | 0 | The most the rider tilts when the vehicle goes up or down. |
dynamics. | number | 4 | How strongly vertical speed tilts the rider. |
dynamics. | number | 5 | How quickly the tilt follows. At least 0.1. |
A file can hold many rules. passenger_state and sitting_state can be a list of rules. When two rules match one vehicle, the last one wins.
{
"format_version": 2,
"defaults": {
"animations": {
"passenger_state": {
"entities": ["minecraft:nautilus", "minecraft:zombie_nautilus"],
"idle": "idle_nautilus",
"moving": "sprint_nautilus",
"speed_threshold": 0.12,
"camera": { "horizontal": 0.88, "vertical": -0.65, "depth": 3.91, "fov": 68, "response": 3.5 },
"dynamics": { "rider_vertical_offset": 10, "bank_degrees": 28, "bank_sensitivity": 1.5, "vertical_tilt_degrees": 22, "response": 6 }
},
"sitting_state": {
"entities": ["minecraft:boat", "minecraft:*_boat", "minecraft:*minecart"],
"pose": "sit",
"idle": "sit_idle"
}
}
}
}
Video coming soon
The riding recipe walks through a full pack.
Held items
Held-item clips play for the arm that does the action. The main hand uses your main arm and the off hand your other arm. When a clip named <name>_left or <name>_right exists for that arm, Moves plays it, and otherwise the plain name. Clips are not mirrored for you. Only the music listening and map view poses mirror themselves for a left hand.
Each item belongs to the first group it matches. The group keys are MACE, FLINT, SHEARS, FISHING_ROD, EMPTY_BUCKET, FILLED_BUCKET, SWORD, PICKAXE, AXE, SHOVEL, HOE, TRIDENT, SPEAR, LANTERN, TORCH, HORNS, BOW, CROSSBOW, SHIELD, MAP, SPYGLASS, BRUSH, THROWABLE, CONSUMABLE and BUNDLE. Write a key in any case. Items outside every group match the key _. Exact items go under items with the full id, such as minecraft:trident. An id without its namespace never matches.
| Key | Type | What it does |
|---|---|---|
attack | clip or variants | A swing. A list of variants plays as a combo, in order. |
mining | clip | The mining loop. |
hand_in | clip | The equip clip, when you pick the item up. |
item_ | clip | The hand swap clip. |
item_ | clip | A hand swap per arm. |
pose | clip | A held pose loop. A pose_ of 0 or more (seconds) makes it a timed pose. -1 is the default and means untimed. |
idle | clip | The item's own idle, played when the item or its group declares one. |
useitem | clip | A general use clip. |
interact | clip | The first choice for using a block. |
eating | clip | The eating loop. drinking is its twin. pose works as a name too. |
spyglass_ | clip | The spyglass hold. shield_ is the shield hold. |
crossbow | object | charge, charge_, idle, charged and shoot clips. |
throwable | object | throw, the throw clip for a throwable item. |
| Key | Type | Default | What it does |
|---|---|---|---|
locomotion_ | number or object | How much of the walk, run and jump shows through the action. A number sets all three. An object takes default, walk, sprint, jump, transition (1) and hand_only (false). Values above 1 are percent. Everyday defaults: pose 0.65, 0.75 and 0.65, mining 0.15, 0.15 and 0.2, crossbow 0.05, 0.05 and 0.1. Two-handed holds and swings are the exception. A held pose, a crossbow hold, or an attack, mining, spear or trident clip whose last frame turns both arms 20 degrees or more from rest holds the item with both hands. While it plays, the arms keep none of the walk, whatever this says, and the landing, the run stop and the run start leave the arms alone. A shovel held across the body is such a hold. | |
retrigger_ | percent | 50 | Percent of the clip that must play before the next click starts the next swing. 50 for attack, mining and spear, 70 for sequence phases. |
blending | object | A weight ramp with from (0) and to (1), plus blending_ in seconds, blending_ and blending_. | |
timer_ | number or expression | 1 | A speed factor for the clip's clock. |
timer_ | boolean or expression | true | The clock freezes while this is false. |
overlays | list | More clips over the action. Each has a clip, a mode of additive (the default), override or exclusive, and a list of bones. A bones list matches the one-word bones root, waist, head and body. Leave it out to cover every bone. | |
base_ | object | For attack, mining and sequence phases. How much of the pose underneath each bone keeps, from 0 to 1, for root, waist, head, body, left_arm, right_arm, left_leg and right_leg. | |
one_handed | clip | Another clip for when your other hand holds something. | |
one_ | list | Overlays used instead of overlays while the action's one_handed clip plays. They are written like overlays: objects with clip, mode and bones. Without it, the one-handed clip plays the ordinary overlays. An empty list plays none. Anything but a list drops the whole file. It works on attack, mining, hand_in, pose, an item's idle, throwable, spear, trident and the phases of a sequence, and the first level that has it (item, group, defaults) wins. | |
waist_ | clip | A clip that plays on the waist during hand_in, pose and a throw. | |
fence_ | number | 100 | How much of the fence balance shows while hand_in or pose plays. Values above 1 are percent. |
static_ | boolean | false | On an item, a group, defaults or empty_hand. Draws the item you use in its ordinary held place while you use it, instead of Minecraft's own placement for a used item. |
This is the sword group of the example pack provided by Crafto, with two attack clips that play as a combo:
{
"format_version": 2,
"item_groups": {
"SWORD": {
"animations": {
"attack": {
"variants": ["sword_attack_1", "sword_attack_2"],
"retrigger_progress": 10,
"locomotion_influence": { "walk": 0, "sprint": 0, "jump": 0 }
},
"mining": { "clip": "mine", "retrigger_progress": 50 },
"hand_in": { "clip": "default_hand_in", "retrigger_progress": 50 }
}
}
}
}
A tool can have a one-handed swing with its own overlays. In the example pack provided by Crafto, the axes use a pickaxe swing when your other hand holds something, with overlays to match:
{
"format_version": 2,
"item_groups": {
"AXE": {
"animations": {
"attack": {
"clip": "my_axe_swing",
"one_handed": "my_axe_swing_one_hand",
"overlays": [{ "clip": "my_axe_swing_add" }],
"one_handed_overlays": [{ "clip": "my_axe_swing_one_hand_add" }]
}
}
}
}
}
A combo goes back to its first clip after more than a second without a swing, or when you change item.
Item sequences
A sequence gives an item a full cycle of phases that Moves runs from what you do. Sequences go on item groups and items, never on empty_hand.
| Key | Type | Default | What it does |
|---|---|---|---|
behaviorRequired | text | One of bow, trident, mace, flint, shears, fishing, bucket or throwable, in lower case. | |
charge_ | number | 20 | The use time that maps to the whole charge clip (bow and trident). |
minimum_ | number | 3 | Ticks held before another player's release counts. |
charge_ | number | 3 | Mace: the charge starts while you fall and the ground below you is more than this many blocks away. |
smash_ | number | 1.5 | Mace: the slam starts when the fall is longer than this. |
legs_ | number | How much leg motion shows. It can also be set per phase. | |
defaults | object | Phase settings shared by every phase. | |
transition_ | number | 0.16 | Blend time into a phase. Set on a phase or in defaults. |
locomotion_ | number | 0.15 | How much of the walk shows during the phase. A phase whose clip holds the item with both hands (both arms turned 20 degrees or more from rest at its last frame) keeps none of the walk on the arms, whatever this says, unless base_ sets the arms. |
moving_ | number | 1 | Leg influence while moving, from 0 to 1. |
hold_ | boolean | On a phase only. true holds the last frame. | |
over_idle | boolean | false | true, without quotes, plays the phase's clip on top of the last frame of the item's idle phase clip, for a phase whose clip was animated as a change from the idle pose. Without it, such a clip drops the idle pose while it plays. Put it on a phase, or in defaults for every phase. It is ignored on equip and idle. Text is ignored. |
The phases are equip, idle, charge, hold, release, slam, attack, use, cast, fishing and reel. Only attack takes variants. Anything unknown on a phase drops the file. A sequence combo goes back to its first attack after one and a half seconds. A bow looks like this:
{
"format_version": 2,
"item_groups": {
"BOW": {
"sequence": { "behavior": "bow", "charge_ticks": 20, "defaults": { "transition_seconds": 0.12 } },
"animations": {
"equip": "my_bow_equip",
"idle": "my_bow_idle",
"charge": "my_bow_draw",
"hold": { "clip": "my_bow_hold", "hold_last_frame": true },
"release": "my_bow_release"
}
}
}
}
The item sequence recipe builds one step by step.
Combat
Plain swings use attack: in empty_hand for bare hands, in a group such as SWORD as above or an exact item, and in defaults for any item and for bare hands that have none of their own. More weapons have their own actions.
| Key | Type | Default | What it does |
|---|---|---|---|
spear. | clip | The spear charge hold. | |
spear. | clip | The spear's attack clip. | |
spear. | number | 0.9 | Attack strength from 0 to 1. A swing below it is dropped. |
trident. | clip | The trident draw, when the trident has no sequence. | |
trident. | clip | The trident throw. | |
trident. | number | 10 | Ticks of charge before a release throws. |
{
"format_version": 2,
"item_groups": {
"SPEAR": {
"static_when_using": true,
"animations": {
"spear": { "charge": "spear", "attack": "spear_lunge_var_1", "attack_ready_threshold": 0.9 }
}
}
}
}
The mace uses a sequence. This is the mace of the example pack provided by Crafto, with a clip for the charge, the slam and two attacks. Each has its own one-handed clip. The sequence’s defaults set over_idle to true, so the charge, the slam and the attacks play on top of the last frame of the idle clip, the raised mace, and do not drop that pose:
{
"format_version": 2,
"item_groups": {
"MACE": {
"static_when_using": true,
"sequence": { "behavior": "mace", "charge_height": 3, "smash_distance": 1.5, "defaults": { "over_idle": true } },
"animations": {
"equip": { "clip": "mace_idle" },
"idle": { "clip": "mace_idle", "hold_last_frame": true },
"charge": { "clip": "mace_charge", "one_handed": "mace_charge_alt" },
"slam": { "clip": "mace_slam", "one_handed": "mace_slam_alt", "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" }
]
}
}
}
}
}
Better Combat
With Better Combat installed, a pack can give its weapons’ attacks their own clips, with Better Combat’s timing. The Better Combat pack attacks row on the Features page chooses when that happens: each click steps through Automatic, On and Off. The choice is saved in config/punchy_moves/better_combat.json as mode.
| Mode | Pack attacks play |
|---|---|
| Automatic | Only when the active pack has Better Combat clips. This is the default. |
| On | Always. |
| Off | Never. |
The row shows Automatic as Automatic (ON) or Automatic (OFF), for what it is doing now.
A better_combat block goes in defaults, an item group or an item:
{
"format_version": 2,
"defaults": {
"better_combat": {
"attacks": ["my_slash_1", { "clip": "my_slash_2", "impact_time": 0.25 }],
"animations": { "bettercombat:one_handed_slash_horizontal_right": "my_slash_wide" },
"transition_seconds": 0.08
}
}
}
| Key | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | false turns pack attacks off for that level. |
attacks | list | The combo in Better Combat's order. Each entry is a clip name or an object. It works for your own player only. | |
animations | object | Maps a Better Combat animation id, with its namespace, to a clip. It works for every player you see. | |
transition_ | number | 0.08 | Blend time from 0 to 1. An attack inherits the block's value. |
locomotion_ | number | 0 | How much of the walk shows, from 0 to 1. An attack inherits it. |
clip | text | In an attack object: the clip. | |
impact_ | number | In an attack object: the second where the hit lands. It must fall inside the clip. Without it, the hit lands at the middle of the clip. | |
overlays | list | In an attack object: overlays. Their mode must be additive, override or exclusive. |
Timing belongs to Better Combat, so keys such as retrigger_progress do not belong in this block. An unknown key, a number written as text, or an id without a namespace drops the file.
Music listening
When a jukebox plays nearby and you stand still, your character listens. The pose ends when you keep walking on the ground for the movement stop delay (1 second by default), when you jump twice, swing twice or mine twice, or when you leave the jukebox’s range.
| Key | Type | Default | What it does |
|---|---|---|---|
loop | clip | The listening loop. clip and name work too. | |
source | text | active_ | active_ is the one source Moves knows. Another text turns listening off. |
radius | number | 12 | Blocks from a playing jukebox that count as listening. Kept between 1 and 32. |
scan_ | number | 10 | Ticks between searches for a jukebox. Kept between 1 and 100. |
start_ | number | 1 | Seconds of standing still before the pose starts. |
movement_ | number | 1 | Seconds of moving on the ground before the pose stops. |
item_hand | text | main_hand | main_hand or off_hand. The pose is mirrored when that hand is the left one. |
{
"format_version": 2,
"defaults": {
"animations": {
"music_listening": {
"loop": "listening_song",
"source": "active_jukebox",
"radius": 12,
"scan_interval_ticks": 10,
"start_delay_seconds": 1,
"movement_stop_delay_seconds": 1,
"item_hand": "main_hand"
}
}
}
}
Video coming soon
Map view
Hold a filled map in your main hand and look down, and your character lifts the map while the camera moves over it. The camera also moves over a filled map in your off hand, but the pose plays only for a map in your main hand. The Map third-person camera switch turns this on and off.
| Key | Type | Default | What it does |
|---|---|---|---|
pose | clip | The map pose. clip and name work too. | |
look_ | number | 42 | Degrees of looking down that start the pose. |
look_ | number | 32 | Degrees that end it. Keep it below the enter value, so the pose does not flicker. |
camera | camera block | The map camera. Without one, Moves frames the map with horizontal 0, vertical 0.68, depth 1, field of view 55 and response 4.5. | |
locomotion_ | number or object | How much walking shows through the pose. |
It sits in the MAP group. The map is not raised while you glide, swim, climb or ride. The example pack provided by Crafto starts the pose at 55 degrees and ends it at 18:
{
"format_version": 2,
"item_groups": {
"MAP": {
"animations": {
"map_view": {
"pose": "my_map_pose",
"look_down_enter": 55,
"look_down_exit": 18,
"locomotion_influence": { "walk": 0, "sprint": 0, "jump": 0 }
}
}
}
}
}
Video coming soon
The world around you
These moments play from what happens to your character or where it stands. They all go in defaults.animations.
| Key | Type | What it does |
|---|---|---|
biome | object or list | A rule needs pose or event. biomes lists ids or #tags (empty matches every biome), temperature_ and temperature_ compare with the biome's base temperature, and pose_layer (fullbody, the default, or upperbody) and event_ (upperbody, the default) say how they blend. An event plays between min_ (15) and max_ (30), with a chance (1) and event_ (false). The last matching rule wins. |
cold | object | A shiver clip for the powder snow freeze. clip plays when the freeze reaches trigger_ (0.05, from 0 to 1, at least 0.001) and can play again once it falls below reset_ (0.01). |
low_hunger | object | A loop while your food level is at or below food_ (6). clip is the loop. Your own player only. |
nausea | clip | A loop while you stand still under Nausea. |
hurt_ | clip | Plays when a hit comes from the front, so you rock back. hurt_ plays when it comes from behind. If one is missing the other plays. Your own player only. |
armor | clip | Plays when armor goes on. armor_ is the one for a helmet. |
{
"format_version": 2,
"defaults": {
"animations": {
"cold": { "clip": "cold", "trigger_progress": 0.05, "reset_progress": 0.01 },
"low_hunger": { "clip": "belly_loop", "food_level_at_most": 6 },
"nausea": "my_dizzy_idle",
"hurt_forward": "hurt_forward",
"hurt_backward": "hurt_backward",
"armor_helmet": "armor_in_helmet",
"armor": "armor_in",
"biome": {
"temperature_max": 0.15,
"pose": "cold_effect",
"pose_layer": "fullbody",
"event": "cold",
"event_layer": "upperbody",
"min_interval_seconds": 12,
"max_interval_seconds": 28,
"event_while_moving": true
}
}
}
}
Emotes are clips that you start from the emote wheel or their own keys. They are on Keys and emotes, and a face can go with each one, as Face reactions shows.
Things that go wrong
- A feature camera does nothing. Its block needs all five numbers, with
responseabove 0. A riding camera needs four, and a map camera fills in what you leave out. Check the switch on the Features page too. - Orbit says “Enable the custom camera first”. Press V, then B.
- The custom camera is off in first person or in the front view. Minecraft’s perspective key (F5 by default) turns the custom camera off on its way through those views. The camera works in the back view.
- A whole compat file does nothing. One field the format does not accept drops the whole file. The game log has a line that contains
Could not load animation compatand names the field. The reason at the end of that line is written in Portuguese, for examplecampo desconhecidofor an unknown field. The usual causes: aformat_versionthat is not2, an action name that is not lower case letters, digits and underscores or does not start with a letter, a root key outside the allowed list,cameraswith a key other thanproximityandaiming,cliptogether withvariants,turn_in_placewith only one ofleftandright, or with aleft_overlayorright_overlaythat is empty or not text,overlaysorone_handed_overlaysthat is not a list, asequenceonempty_handor with an unknownbehavior, and an unknown key in abetter_combatblock. - A body moment never plays. Body actions are read from
defaultsonly. A group or item that names one is not read for it. - A held item never plays its clip. Item ids in
itemsneed their namespace, as inminecraft:trident. - A clip never plays. Clip names are case-sensitive, and a name that no animation file defines is skipped without a message. An animation file with a root that is not an object is lost whole.
- Your changes to a pack do not show. Press F3+T to reload.
Related pages
- Getting started to install Moves and add a pack
- Keys and emotes for the emote wheel and every key
- Compat files for the whole format
- Animation files for the clips themselves
- Studio Game view to see a clip on your own player while you make it
- The walk cycle recipe, the swimming recipe, the riding recipe and the item sequence recipe
- Faces for the faces that react to all of this
- Troubleshooting and the FAQ
Last checked against the mod on 29 October 2026.