Skip to main content

Show Both Arms (Power Type)

Draws the arm that first person normally leaves out, so the player with the power can see both hands.

Type ID: apoli:show_both_arms

Vanilla only ever draws one bare arm in first person: the main hand's, and only while the main hand is empty. The off hand's arm is never drawn, and neither arm is drawn while you hold something. This power fills those gaps. An arm that apoli:modify_model_parts edits in the first-person view is drawn anyway, with or without this power.

Fields

FieldTypeDefaultDescription
off_handBooleantrueDraws the off arm when the off hand is empty, so you see both hands.
main_handBooleanfalseDraws the main arm even while the main hand holds an item, so you see the arm as well as the item. Filled maps are skipped, because vanilla already draws both arms for those.
ghost_armsInteger0How many extra ghost copies of each drawn arm trail behind the live one while it swings. 0 turns the effect off, and the maximum is 16.
ghost_spacingFloat0.12How far back each ghost sits, as a fraction of one swing. The nth ghost is drawn at the pose the arm held n × ghost_spacing of a swing ago, wrapping into the previous swing. Keep ghost_arms × ghost_spacing at or below 1.0, because copies further back than a whole swing are skipped.
ghost_alphaFloat0.35The ghosts' opacity, from 0.0 to 1.0. They are translucent so the live arm stays clear through them.
ghost_perspectivesString or Array of String["first_person", "third_person"]The views the ghosts are drawn in: first_person (the player's own held-item view) and third_person (the body as everyone sees it). See Ghosts in third person.

Ghost arms

Ghosts are copies of the same arm frozen at earlier points of the swing, so a single punch leaves a fanned trail behind it and a fast stream of swings blurs into a flurry, like an anime punch barrage. They only appear while an arm is swinging, and only on arms that are drawn at all: the bare main arm vanilla draws for you, plus whichever arms main_hand and off_hand add. Drive the swings with apoli:swing_hand on a fast apoli:action_over_time to keep the trail going.

If several show_both_arms powers are active, the drawn arms combine, and the ghost settings come from whichever power asks for the most ghosts.

Ghosts in third person

With third_person in ghost_perspectives, the ghosts also trail the swinging arms on the body itself, sleeves included. Everyone sees them: other players, the player themselves in third person or in an inventory preview, and any camera power that shows the player's body. In this view every arm that swings gets a trail, so when apoli:swing_hand swings both hands together, both arms leave ghosts. main_hand and off_hand don't matter here, because in third person both arms are always drawn.

The ghosts use the player's skin and take apoli:model_color tints. An arm hidden with apoli:modify_model_parts leaves no ghost, and neither does an invisible player.

note

The extra arms are only drawn in the player's own first-person view, while ghost arms are also drawn in third person, as described above. The first-person arm is the player's real arm, not a copy, so everything that changes how your arms look elsewhere applies here too: apoli:custom_model_render skins and texture overlays (with show_first_person on each layer), apoli:model_color, apoli:modify_player_model, apoli:modify_model_parts transformations and keyframes, player skins from apoli:disguise and apoli:disguise_as, and swings from apoli:swing_hand. Hiding an arm with modify_model_parts hides it in first person too.

Examples

{
    "type": "apoli:show_both_arms"
}

The plain version: while your off hand is empty, its arm is drawn next to your main arm.

{
    "type": "apoli:show_both_arms",
    "main_hand": true,
    "off_hand": true,
    "condition": {
        "type": "apoli:power_active",
        "power": "example:combat_stance"
    }
}

Both arms stay visible while example:combat_stance is active, including the main arm while it holds a weapon.

{
    "type": "apoli:show_both_arms",
    "main_hand": true,
    "ghost_arms": 6,
    "ghost_spacing": 0.14,
    "ghost_alpha": 0.3,
    "condition": {
        "type": "apoli:power_active",
        "power": "example:rush_attack"
    }
}

A punch barrage. While example:rush_attack is on, both fists are visible and each swing drags six translucent copies of itself behind it. Combine it with a power that swings the hands several times a second.

{
    "type": "apoli:show_both_arms",
    "off_hand": false,
    "ghost_arms": 8,
    "ghost_spacing": 0.1,
    "ghost_perspectives": "third_person"
}

A trail only other people see. Every swing leaves eight ghosts on the body, while the player's own first-person view stays clear.

tip

To make both arms swing at once, run apoli:swing_hand twice in the same tick, once for each hand. This power only decides which arms are drawn in first person, and the swing itself comes from the action.