Skip to main content

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. Every field that names a body part reads the same list:

It is 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, and the layer names on their own only target 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, not a whole model part. Regions are what a particle anchors to and what a hit can land on. They aren't 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 and 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, so 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 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_bodyThe head, torso and both arms, with their layers.The waist, at the bottom of the torso, following it when it leans.
lowerlower_bodyThe torso and both legs, with their layers.The neck, at 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).

Wings and Ears features

These name the extra geometry that Icarus and Ears draw on a player. They only do anything with that mod installed, and nothing at all without it. Both Ears 1.4 and Ears 2 are supported.

NameAlso acceptsCovers
right_wing / left_wingwing_right / wing_left, icarus_right_wing / icarus_left_wingThat Icarus wing, and the wing on that side of an Ears wing pair.
wingsicarus_wingsBoth Icarus wings and every Ears wing, including a single or flat one.
earsEvery ear Ears draws.
right_ear / left_earear_right / ear_leftThat ear, in the Ears ear modes that draw each ear on its own.
hornshornThe Ears horn.
snoutThe Ears snout.
tailThe Ears tail.
clawsAll four Ears claws.
right_arm_claw / left_arm_clawclaw_right_arm / claw_left_armThe claw on that arm.
right_leg_claw / left_leg_clawclaw_right_leg / claw_left_legThe claw on that leg.
ears_chestThe chest piece Ears draws.
ears_capeThe cape Ears draws from the skin file.
haloThe Ears halo, single or double. Ears 2 only.
right_digitigrade_leg / left_digitigrade_legdigitigrade_right_leg / digitigrade_left_legThat digitigrade leg, trousers included. Ears 2 only.
digitigrade_legsBoth digitigrade legs. Ears 2 only.

They work in model_part of apoli:modify_model_parts and part of apoli:model_color:

  • Icarus wings are real model parts, so every transformation type applies. pitch, yaw and roll swing the wing about its root on the back, the scales grow it from there, and visible and hidden take it away. This covers wings from an equipped item and from apoli:wings alike.
  • Ears features are drawn by Ears itself, not as model parts, so they respond to visible, hidden and colour, but not to rotation, scale or pivot. They already follow the part they hang from, so bend head and the ears and horns go with it.

Ears draws both ears as one shape in its above, cross, tall and tall_cross ear modes. right_ear and left_ear can't reach that shape on their own, but ears can, and so does hiding both right_ear and left_ear at once. Wings work the same way: a single or flat Ears wing responds to wings, or to hiding both right_wing and left_wing.

Sides are always the player's own, so right_wing is the wing on the player's right, even in an asymmetric Ears wing pair whose skin layout calls that wing the left one.

None of these belong to a group, so whole and upper leave wings and Ears features alone. They have no hitbox, so the apoli:body_part condition refuses them, and particles and body_parts have nothing to attach to.

Held items

NameAlso acceptsCovers
right_item / left_itemitem_right, right_hand_item, right_held_item / item_left, left_hand_item, left_held_itemThe item held in that hand.
main_hand_item / off_hand_itemmain_item, item_main, mainhand_item / off_item, item_off, offhand_itemThe item in the entity's main or off hand: right_item for a right-handed entity and left_item for a left-handed one.
itemsheld_items, held_itemBoth held items.

They work in model_part of apoli:modify_model_parts, where they turn, grow, move or hide the item (see Held items). They aren't model parts, so whole and the other groups leave them alone (an item still follows the arm holding it), apoli:model_color doesn't tint them, and the apoli:body_part condition refuses them.

Other names

A name that isn't in the lists above is passed through unchanged, and so are the wing and Ears names, so tail reaches the horse tail of apoli:centaur as well as an Ears tail. That is how the extra limbs of the built-in models are reached, such as right_second_arm on apoli:four_arms, right_second_leg on apoli:stinkfly and 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 limbs, layers, regions and groups on this page. It fails to load with an unknown name or a wing or Ears name, 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.