Privacy
Language: Bahasa Indonesia

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 Indonesian 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

  1. Join a world and press V (Toggle Custom Camera). The view glides behind your shoulder and “Punchy Camera: enabled” shows above the hotbar.
  2. Press F7 (Open Camera Settings). Moves opens its settings screen, titled Punchy Moves, on the Camera page.
  3. 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.
  4. 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.
  5. 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.

LabelControlDefaultRangeWhat it does
Custom CamerabuttonOnon or offTurns the shoulder camera on or off, like the V key. It reads Custom Camera: ON or Custom Camera: OFF.
Horizontalslider1.17-2.0 to 2.0Moves 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.
Verticalslider-0.11-1.5 to 2.0Height of the camera from your character’s eye level.
Depthslider2.51.0 to 8.0How far behind your character the camera sits, in blocks.
Field of Viewslider7030 to 110Viewing angle in degrees while the custom camera is on.
Horizontal rotationslider0-30 to 30Turns the camera left or right of the direction you aim, in degrees.
Vertical rotationslider0-30 to 30Tilts 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

KeyControls labelWhat it does
VToggle Custom CameraTurns the custom camera on or off.
F7Open Camera SettingsOpens the settings screen above, on its Camera page.
BToggle Orbit CameraStarts 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.

  1. Press V so the custom camera is on.
  2. Press B. “Orbit camera: enabled” shows above the hotbar.
  3. 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.
  4. 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
}
Keys of camera.json
KeyTypeDefaultWhat it does
enabledbooleantrueThe saved state of the Custom Camera switch.
horizontalnumber1.17The Horizontal slider. Values outside -2 to 2 are brought into range.
verticalnumber-0.11The Vertical slider. Range -1.5 to 2.
depthnumber2.5The Depth slider. Range 1 to 8.
fovnumber70The Field of View slider. Range 30 to 110.
rotationYawnumber0The Horizontal rotation slider. Range -30 to 30.
rotationPitchnumber0The Vertical rotation slider. Range -30 to 30.
fenceCamerabooleantrueThe Fence camera switch.
ladderCamerabooleantrueThe Ladder camera switch.
proximityCamerabooleantrueThe Nearby-block camera switch.
elytraCamerabooleantrueThe Elytra camera switch.
mapCamerabooleantrueThe Map third-person camera switch.
bowAndCrossbowCameraFixbooleantrueThe Bow and crossbow camera switch.
spearAndTridentCameraFixbooleantrueThe Spear and trident camera switch.
ladderBodyLockbooleantrueThe 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.

SwitchIt applies whileThe pack gives its framing with
Fence cameraYou 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.camera
Ladder cameraYou are on a ladder, a vine or another climbable block.climbing.camera
Nearby-block cameraYou look at a block close to your body, or you mine one (details below).cameras.proximity
Elytra cameraYou glide with elytra.elytra.camera
Map third-person cameraYou 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 cameraYou draw a bow, hold a loaded crossbow, hold a throwable that your pack gives a throwable sequence, or a timed held pose runs.cameras.aiming, or the item’s own camera for a throwable or a timed pose
Spear and trident cameraYou charge a spear or trident, and for four seconds after a spear attack.cameras.aiming
Face the ladderYou 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 attacksBetter 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_combat
Spatial GUI panelThe 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/punchy_moves/spatial_gui.json.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.

The camera block
KeyTypeWhat it does
horizontalnumberSideways offset. Positive is to the character's right.
verticalnumberHeight from eye level.
depthnumberDistance behind the character, in blocks.
fovnumberViewing angle in degrees.
responsenumberHow 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_in_response and blend_out_response 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.

Timing keys of cameras.proximity
KeyTypeDefaultWhat it does
instant_distancenumber1Blocks between your body and the block you look at. Closer than this, the camera moves in at once, unless you sprint.
enter_distancenumber2.2While you hold the attack button on a block this near, the camera moves in.
mining_hold_secondsnumber2How long the camera stays in after you stop mining.
blend_in_responsenumber5How fast the camera moves in. At least 0.1.
blend_out_responsenumber3.2How 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_groups or items. For a held item, Moves looks at the exact item first, then its group, then defaults. An empty hand uses empty_hand, then defaults.
  • 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" }
    }
  }
}
Clips from the example pack provided by Crafto playing on the Punchy! Moves rig in Blockbench, including climbing_up and mace_slam_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.

idle_events: a random clip while you stand still
KeyTypeDefaultWhat it does
variantslistClip names. Moves picks one each time. An entry can also be an object with a clip.
min_interval_secondsnumber20Shortest wait between two idle events. At least 1.
max_interval_secondsnumber45Longest wait. At least the minimum.
chancenumber1Chance 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.

turn_in_place
KeyTypeDefaultWhat it does
enabledbooleanfalseSwitches the feature on. It must be true or false.
leftclip nameThe clip for a turn to the left. It goes with right: giving only one drops the file.
rightclip nameThe clip for a turn to the right.
minimum_turn_degreesnumber60The body turns when your view is this far off it. Kept between 2 and 90.
look_idle_secondsnumber2The body also turns after you hold your view still this long. Kept between 0 and 10.
fade_out_secondsnumber0.12How long the body takes to blend back to normal when you move. Kept between 0.05 and 0.4.
left_overlayclip nameA 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_overlayclip nameThe 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.

walking
KeyTypeDefaultWhat it does
directions.forwardclip, object or listThe 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.sprintobjectThe run. Give forward for one loop, or the stages below.
amplitude_reference_speednumber0The 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_amplitudenumber1.2The most the walk's strength can reach under amplitude_reference_speed. 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_reference_speed is off.
sprint_overlayclip nameA 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.sprint.forward), so a full sprint plays one forward cycle with this clip on top. Without it nothing changes.
stride_blocks_per_cyclenumber1.67Blocks you travel for one full cycle of the walk clip. Never below 0.05.
sprint_stride_blocks_per_cyclenumber1.67The same while sprinting.
crouch_stride_blocks_per_cyclenumber1.15The same while crouching.
max_cycles_per_secondnumber1.25The fastest the walk clip cycles.
sprint_max_cycles_per_secondnumber1.58The same while sprinting.
crouch_max_cycles_per_secondnumber0.75The same while crouching.
minimum_displacementnumber0.0005A tick's move shorter than this, in blocks, does not count toward the walk cycle.
maximum_displacementnumber0.35A 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 (true or false, false when 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.
  • add is the name of an extra clip that plays with the direction’s clip: on the same clock (backward too when reverse is 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 }
          }
        }
      }
    }
  }
}
Keys of directions.sprint
KeyTypeWhat it does
forwardclip or listA single sprint loop. It is used when the pack gives no entry_loop or second_stage clip.
entry_loopobjectThe first stage. It has a clip, a duration in seconds (0 when left out) and blend_to_second_stage (0 when left out).
second_stageobjectThe second stage, as an object with a clip.
rare_loopobjectAn occasional clip with a clip and a chance (0.125 when left out).
transitionobjectA 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_stage clip.
startobject or textA clip for the start of a sprint.
stopobjectThe stop clips: to_idle, to_walk and legacy, and minimum_speed (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.

Pose actions
KeyTypeWhat it does
crouchobjectclip is the hold, enter and exit play when you start and stop crouching, idle is the standing clip under it, and timer_scale (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_scale, 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.
crawlingobjectdirections with forward, backward, left and right, like walking.
fenceobjectPlays 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_on_waterobjectThe wading pose, while you walk in water that leaves your head above the surface. Takes clip and idle.
creative_flyobjectThe 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

jump
KeyTypeDefaultWhat it does
leftclipA hop on the left foot. right goes with it. Hops alternate and start on the right.
running.leftclipA hop while you sprint. running.right goes with it.
moving.leftclipA hop while moving. moving.right goes with it.
idle.leftclipA hop while standing. idle.right goes with it.
landingclipThe 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_before_secondsnumber (seconds)0.7How 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.

falling
KeyTypeDefaultWhat it does
normalclipThe falling loop. clip works as a name for it too.
free_fallclipThe loop for a long, fast drop.
effectclipAn extra clip played on top of the free fall at the very longest drops.
trigger_distancenumber5A 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_fall_distancenumber7The free fall clip takes over when the drop reaches this, or the speed reaches the next value. At least 0.5.
free_fall_velocitynumber0.72Blocks per tick. At least 0.05.
effect_distancenumber13The effect clip joins at this drop, or at the next speed. At least 0.5.
effect_velocitynumber1.05Blocks per tick. At least 0.05.
blend_in_responsenumber1.2How 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.
landing
KeyTypeDefaultWhat it does
lightclipThe landing for a small drop. clip works as a name too.
mediumclipThe landing for a medium drop.
heavyclipThe landing for a big drop.
medium_distancenumber4A drop of this many blocks, or the speed below, counts as medium. At least 0.5 and at most the heavy distance.
heavy_distancenumber8The same for a heavy landing. At least 0.5.
medium_velocitynumber0.58Impact speed in blocks per tick. At least 0.05 and at most the heavy speed.
heavy_velocitynumber0.95Impact speed for a heavy landing. At least 0.05.
additivebooleanfalsetrue, 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_strength_distance 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_strength_distancenumber5For 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

elytra
KeyTypeDefaultWhat it does
normalclipThe glide loop. It blends into the high speed loop as you speed up.
high_speedclipThe fast glide loop.
rotateclipA pose held on top of the glide.
firework_useclipPlays when you use a firework while gliding.
firework_holdclipPlays while you glide with a firework in hand.
high_speed_thresholdnumber0.9The speed where the fast loop takes over. At least 0.05.
bank_degreesnumber30The most your character banks when you turn.
bank_sensitivitynumber5How strongly turning banks the glide.
bank_responsenumber5How quickly the bank follows the turn. At least 0.1.
cameracamera blockThe 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

swimming
KeyTypeDefaultWhat it does
surfaceclipSwimming at the surface of deep water.
underwaterclipSwimming under water.
verticalclipSwimming straight up or down.
surface_body_depthnumber0.12How deep the body sits under the surface in the surface pose.
surface_grace_distancenumber1.35How far above the surface the pose holds before it lets go. At least 0.25.
vertical_tilt_degreesnumber30.8The most the body tilts in the vertical swim.
sprint_playback_multipliernumber1.25How much faster the clips play while you sprint-swim.
timer_scalenumber1A speed factor for the swim clips.
water_dive and lava_dive
KeyTypeDefaultWhat it does
water_dive.airclipPlays in the air as you fall toward water.
water_dive.contactclipPlays as you hit the water.
water_dive.loopclipThe dive's loop clip. alternate_loop is the loop of the alternate dive.
water_dive.alternate_airclipA second air clip, picked by chance.
water_dive.alternate_chancenumber0.5The chance of the alternate dive, from 0 to 1.
water_dive.sneak_airclipThe air clip of the cannonball tuck, picked when you sneak early in a dive (see below). sneak_loop is its loop.
water_dive.late_sneak_airclipThe air clip of the belly flop tuck, picked when you sneak later in a dive. late_sneak_loop is its loop.
water_dive.sneak_window_secondsnumber0.3How long after the dive starts in the air a sneak still picks sneak_air. A sneak after that picks late_sneak_air. A negative value counts as 0. It counts only with the tuck clips.
water_dive.entry_blend_secondsnumber0.45How 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_dive.swim_blend_secondsnumber0.6How 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_dive.trigger_distancenumber3A dive starts when the drop to the water, counting what you already fell, is at least this many blocks. At least 0.5.
lava_dive.poseclipThe lava dive pose, held through the fall and the contact.
lava_dive.air_effectclipAn extra clip on top of the pose while you fall toward the lava. contact_effect is the one on top once you hit it.
lava_dive.trigger_distancenumber3The 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.

climbing
KeyTypeDefaultWhat it does
clipclipOne clip for both directions. pose and name work as names too.
timer_effecttextvertical_delta makes the clip follow your vertical speed.
timer_scalenumber1Calibrates that speed. It counts only with vertical_delta. The example pack provided by Crafto uses 8.
cameracamera blockThe 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.

Riding rules
KeyTypeDefaultWhat it does
entitieslist of idsThe vehicle ids, such as minecraft:boat. Ids are lower case and one * is a wildcard, as in minecraft:*_boat. A rule without entities is skipped without a message, and the rest of the file is kept.
poseclipThe seat pose.
idleclipThe clip while the vehicle is still.
movingclipThe clip while the vehicle moves.
speed_thresholdnumber0.12The speed at which moving takes over. At least 0.001.
cameracamera blockThe riding camera. It needs horizontal, vertical, depth and fov.
dynamics.rider_vertical_offsetnumber0Lifts or lowers the rider.
dynamics.bank_degreesnumber0The most the rider banks in a turn.
dynamics.bank_sensitivitynumber1How strongly the rider banks.
dynamics.vertical_tilt_degreesnumber0The most the rider tilts when the vehicle goes up or down.
dynamics.vertical_sensitivitynumber4How strongly vertical speed tilts the rider.
dynamics.responsenumber5How 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.

Held-item actions
KeyTypeWhat it does
attackclip or variantsA swing. A list of variants plays as a combo, in order.
miningclipThe mining loop.
hand_inclipThe equip clip, when you pick the item up.
item_switchclipThe hand swap clip.
item_changeclipA hand swap per arm.
poseclipA held pose loop. A pose_duration of 0 or more (seconds) makes it a timed pose. -1 is the default and means untimed.
idleclipThe item's own idle, played when the item or its group declares one.
useitemclipA general use clip.
interactclipThe first choice for using a block.
eatingclipThe eating loop. drinking is its twin. pose works as a name too.
spyglass_useclipThe spyglass hold. shield_pose is the shield hold.
crossbowobjectcharge, charge_idle, idle, charged and shoot clips.
throwableobjectthrow, the throw clip for a throwable item.
Settings many held actions take
KeyTypeDefaultWhat it does
locomotion_influencenumber or objectHow 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_progresspercent50Percent of the clip that must play before the next click starts the next swing. 50 for attack, mining and spear, 70 for sequence phases.
blendingobjectA weight ramp with from (0) and to (1), plus blending_progression in seconds, blending_condition and blending_modifier.
timer_modifiernumber or expression1A speed factor for the clip's clock.
timer_conditionboolean or expressiontrueThe clock freezes while this is false.
overlayslistMore 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_pose_retainobjectFor 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_handedclipAnother clip for when your other hand holds something.
one_handed_overlayslistOverlays 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_blendclipA clip that plays on the waist during hand_in, pose and a throw.
fence_balance_influencenumber100How much of the fence balance shows while hand_in or pose plays. Values above 1 are percent.
static_when_usingbooleanfalseOn 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.

sequence and its phases
KeyTypeDefaultWhat it does
behaviorRequiredtextOne of bow, trident, mace, flint, shears, fishing, bucket or throwable, in lower case.
charge_ticksnumber20The use time that maps to the whole charge clip (bow and trident).
minimum_charge_ticksnumber3Ticks held before another player's release counts.
charge_heightnumber3Mace: the charge starts while you fall and the ground below you is more than this many blocks away.
smash_distancenumber1.5Mace: the slam starts when the fall is longer than this.
legs_locomotion_retainnumberHow much leg motion shows. It can also be set per phase.
defaultsobjectPhase settings shared by every phase.
transition_secondsnumber0.16Blend time into a phase. Set on a phase or in defaults.
locomotion_retainnumber0.15How 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_pose_retain sets the arms.
moving_legs_influencenumber1Leg influence while moving, from 0 to 1.
hold_last_framebooleanOn a phase only. true holds the last frame.
over_idlebooleanfalsetrue, 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.

Spear and trident
KeyTypeDefaultWhat it does
spear.chargeclipThe spear charge hold.
spear.attackclipThe spear's attack clip.
spear.attack_ready_thresholdnumber0.9Attack strength from 0 to 1. A swing below it is dropped.
trident.chargeclipThe trident draw, when the trident has no sequence.
trident.releaseclipThe trident throw.
trident.minimum_charge_ticksnumber10Ticks 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.

ModePack attacks play
AutomaticOnly when the active pack has Better Combat clips. This is the default.
OnAlways.
OffNever.

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
    }
  }
}
better_combat
KeyTypeDefaultWhat it does
enabledbooleantruefalse turns pack attacks off for that level.
attackslistThe combo in Better Combat's order. Each entry is a clip name or an object. It works for your own player only.
animationsobjectMaps a Better Combat animation id, with its namespace, to a clip. It works for every player you see.
transition_secondsnumber0.08Blend time from 0 to 1. An attack inherits the block's value.
locomotion_retainnumber0How much of the walk shows, from 0 to 1. An attack inherits it.
cliptextIn an attack object: the clip.
impact_timenumberIn 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.
overlayslistIn 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.

music_listening
KeyTypeDefaultWhat it does
loopclipThe listening loop. clip and name work too.
sourcetextactive_jukeboxactive_jukebox is the one source Moves knows. Another text turns listening off.
radiusnumber12Blocks from a playing jukebox that count as listening. Kept between 1 and 32.
scan_interval_ticksnumber10Ticks between searches for a jukebox. Kept between 1 and 100.
start_delay_secondsnumber1Seconds of standing still before the pose starts.
movement_stop_delay_secondsnumber1Seconds of moving on the ground before the pose stops.
item_handtextmain_handmain_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.

map_view
KeyTypeDefaultWhat it does
poseclipThe map pose. clip and name work too.
look_down_enternumber42Degrees of looking down that start the pose.
look_down_exitnumber32Degrees that end it. Keep it below the enter value, so the pose does not flicker.
cameracamera blockThe 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_influencenumber or objectHow 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.

World moments
KeyTypeWhat it does
biomeobject or listA rule needs pose or event. biomes lists ids or #tags (empty matches every biome), temperature_min and temperature_max compare with the biome's base temperature, and pose_layer (fullbody, the default, or upperbody) and event_layer (upperbody, the default) say how they blend. An event plays between min_interval_seconds (15) and max_interval_seconds (30), with a chance (1) and event_while_moving (false). The last matching rule wins.
coldobjectA shiver clip for the powder snow freeze. clip plays when the freeze reaches trigger_progress (0.05, from 0 to 1, at least 0.001) and can play again once it falls below reset_progress (0.01).
low_hungerobjectA loop while your food level is at or below food_level_at_most (6). clip is the loop. Your own player only.
nauseaclipA loop while you stand still under Nausea.
hurt_backwardclipPlays when a hit comes from the front, so you rock back. hurt_forward plays when it comes from behind. If one is missing the other plays. Your own player only.
armorclipPlays when armor goes on. armor_helmet 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 response above 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 compat and names the field. The reason at the end of that line is written in Portuguese, for example campo desconhecido for an unknown field. The usual causes: a format_version that is not 2, 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, cameras with a key other than proximity and aiming, clip together with variants, turn_in_place with only one of left and right, or with a left_overlay or right_overlay that is empty or not text, overlays or one_handed_overlays that is not a list, a sequence on empty_hand or with an unknown behavior, and an unknown key in a better_combat block.
  • A body moment never plays. Body actions are read from defaults only. A group or item that names one is not read for it.
  • A held item never plays its clip. Item ids in items need their namespace, as in minecraft: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.

Last checked against the mod on 29 October 2026.