Skin Rendering

Making 3D Skin Layers and Ears follow Apoli's model and colour powers.

3D Skin Layers and Ears both draw extra geometry from the player’s skin file rather than from the vanilla player model, so out of the box they ignore what Apoli does to that model — a player faded to 10% alpha still had a fully opaque hat layer floating around their head. Apoli hooks both so their geometry follows the render powers.

This integration is behaviour-gated and adds no types. Nothing to enable, no new JSON syntax; install either mod and the powers you already have start applying to it.

What follows what

Apoli feature3D Skin LayersEars
apoli:model_color — whole modeltinted, alpha includedtinted, alpha included
apoli:model_colorparts entriestinted per matching body partwhole-model colour only
apoli:modify_model_parts rotation / scale / pivotfollowedfollowed
apoli:modify_model_parts visiblefollowedfollowed
apoli:modify_model_parts hiddenfollowed
apoli:custom_model_render replacing the skin or modelhiddenhidden
apoli:modify_player_modelhiddenhidden
apoli:prevent_feature_renderskin_layers_3dears, or one feature at a time
Fully transparent model (alpha 0)hiddenhidden

A render_as_overlay custom model does not hide either mod — an overlay is drawn on top of the vanilla skin, so the extra geometry still belongs there.

Feature names

Alongside the vanilla feature-layer names, apoli:prevent_feature_render accepts:

NameHides
skin_layers_3devery 3D Skin Layers layer — hat, jacket, sleeves, trouser legs
earsevery Ears feature
ears_earsears
ears_hornhorns
ears_snoutthe snout
ears_tailthe tail
ears_wingswings
ears_capethe Ears cape
ears_chestthe chest piece
ears_claw_left_arm · ears_claw_right_arm · ears_claw_left_leg · ears_claw_right_legthe matching claws

An apoli:prevent_feature_render with no feature/features at all means “every feature layer”, and that includes both mods.

{
    "type": "apoli:prevent_feature_render",
    "features": [
        "skin_layers_3d",
        "ears_tail",
        "ears_wings"
    ]
}

Flattens the skin back to two dimensions and tucks the tail and wings away — handy while a form-change power has the holder in a shape those features don’t belong on.

apoli:model_color’s forced-white overlay (red, green and blue all set to 1) reaches the 3D layers but not Ears — Ears’ vertex path takes no overlay coordinate, so a whitened player keeps normally-coloured ears.

Both integrations are client-side. A dedicated server neither knows nor cares whether these mods are installed, so a pack using the feature names above stays loadable either way.