Body Part (Data Type)

A named part of a humanoid body — a limb, a skin layer, a region such as a hand or the chest, or a group such as both arms.

A named part of a humanoid body — a limb, a skin layer, a region such as a hand or the chest, or a group such as both arms. Every field that names a body part reads the same list:

Given as a String. Matching ignores case, spaces, _ and -, so right_arm, RightArm and right-arm are the same part.

Limbs and skin layers

These map onto the parts of the vanilla biped model. On a player, a limb also covers its skin-overlay layer; the layer names on their own target only the layer.

NameAlso acceptsCovers
headThe head and the hat layer.
hatheadwear, hat_layer, head_layerThe hat layer only.
bodytorso, waistThe torso and the jacket layer.
jacketbody_layerThe jacket layer only.
right_arm / left_armarm_right / arm_leftThe arm and its sleeve.
right_sleeve / left_sleeveright_arm_layer / left_arm_layerThe sleeve only.
right_leg / left_legleg_right / leg_leftThe leg and its trouser layer.
right_pants / left_pantsright_leg_layer / left_leg_layerThe trouser layer only.

Regions

A region is a piece of a limb rather than a whole model part. Regions are what a particle anchors to and what a hit can land on; they are not separate pieces of the model, so they do nothing in apoli:model_color, apoli:modify_model_parts or body_parts.

NameAlso acceptsWhere
right_hand / left_handhand_right, right_fist / hand_left, left_fistThe last quarter of that arm, where a held item sits.
main_hand / off_handhand_main / hand_offThe hand on the entity’s main or off side — right_hand for a right-handed entity, left_hand for a left-handed one.
handsEither hand.
right_foot / left_footfoot_right / foot_leftThe last quarter of that leg.
feetEither foot.
chestThe front of the upper half of the torso.
backThe back half of the torso.
achilles_heelThe back of either foot.

Groups

A group names several limbs at once. In apoli:modify_model_parts a group moves as one piece — a pitch on upper bends the whole upper body forward at the waist instead of tipping the head, arms and torso over each on its own pivot. Everywhere else a group simply means all of its parts.

NameAlso acceptsCoversPivot
armsBoth arms and their sleeves.Halfway between the shoulders.
legsBoth legs and their trouser layers.Halfway between the hips.
upperupper_bodyHead, torso and both arms, with their layers.The waist — the bottom of the torso, following it when it leans.
lowerlower_bodyTorso and both legs, with their layers.The neck — the top of the torso.
wholeany, allEvery part of the model, including any extra limbs.The feet, at ground level.

Each pivot is the joint that holds the group to the rest of the body, so a rotated group stays attached: upper swings around the waist the legs hang from, and lower around the neck the head sits on. whole turns around the feet, which keeps the model standing on the ground when it is scaled. A transformation can move the pivot with its pivot field — see Moving a group.

Other names

A name that is not in the lists above is passed through unchanged. That is how the extra limbs of the built-in models are reached — right_second_arm on apoli:four_arms, right_second_leg on apoli:stinkfly, horse_body on apoli:centaur — and how a minion’s main, flat2 and flat3 parts are named in body_parts. On those models the groups pick up the extra limbs too: arms covers all four arms of apoli:four_arms, and legs covers all four legs of apoli:stinkfly.

The apoli:body_part condition only accepts the names on this page, and fails to load with an unknown one, because it can only ever narrow down which hits it matches.

Example

{
  "type": "apoli:modify_model_parts",
  "transformations": [
    {
      "model_part": "arms",
      "type": "pitch",
      "value": -1.5708,
      "override_animation": true
    }
  ]
}

Both arms held straight out in front, swinging together around the line between the shoulders.