Skip to content

Species

Species describes the body-level base for one or more roots.

Path: data/<namespace>/species/<path>.json

Schema: townstead:species/v2

Species is the highest body-and-asset boundary in Roots. It answers questions like:

  • What kind of body does this root use?
  • Which rig and animation sources can drive that body?
  • Which appearance assets and character editor tabs make sense for it?
  • Which roots can mix ancestry or lineage with each other?

Roots inside the same species can share compatible inheritance, faces, textures, and editor controls. Roots in different species do not interbreed, because Townstead cannot safely invent a new rig, texture layout, face map, overlay set, or attachment layout from two incompatible body models.

Species is responsible for:

AreaMeaning
Body baseDefault rig id, render scale, and broad body genes.
Breeding boundaryRoots can mix ancestry and lineage within a species, but different species do not interbreed.
Asset compatibilityRigs, texture sets, face layouts, overlays, attachments, and equipment anchors are authored for a species.
Animation source choicesSpecies can opt body states into humanoid animation behaviour, opt them out, and list animation providers.
Character editor layoutSpecies can keep MCA’s native character tabs or replace them with generated Townstead tabs.
Personality poolSpecies can provide broad personality policy.
Admixtureadmixture_chance controls how often newly generated founders can start with mixed same-species heritage.

Use Rigs for the full rig file format and Appearance Assets for textures, face assets, overlays, and generated appearance controls.

FieldTypeRequiredNotes
schemastringyestownstead:species/v2.
display_namecomponentnoFalls back to the file id when omitted.
rigobjectnobase rig or model id and optional scale.
animationsobjectnoAnimation source settings and provider ids.
breastsbooleannoDefaults to true for mca:villager, false for other rigs.
admixture_chancenumbernoChance from 0 to 1 that newly generated founders can start with mixed heritage from compatible roots in this species.
genesarraynoSpecies-level genes shared by descendants.
personalitiesobjectnoBroad personality policy for roots in this species. See Personality Policy.
character_editorobjectnoCustom character editor layout. Omit it to keep MCA’s native Character tab unchanged.
{
"schema": "townstead:species/v2",
"display_name": { "translate": "species.my_pack.elf" },
"rig": {
"base": "mca:villager",
"scale": 1.02
},
"animations": {
"crouch": "humanoid",
"sleep": "humanoid",
"fly": "none",
"providers": ["minecraft:skeleton", "humanoid"]
},
"breasts": true,
"admixture_chance": 0.15,
"genes": [
"my_pack:pointed_ears",
"my_pack:long_life"
],
"character_editor": {
"native": ["body", "clothes"],
"tabs": [
{
"id": "face",
"label": { "translate": "character_editor.my_pack.face" },
"fields": [
"my_pack:eye_shape",
"my_pack:mouth_shape"
]
},
{
"id": "mca_eyes",
"label": { "translate": "gui.villager_editor.subpage.eyes" },
"fields": ["mca_eyes"]
}
]
}
}

The species rig block chooses the default body rig and render scale:

{
"rig": {
"base": "my_pack:skeletownie",
"scale": 0.96
}
}
FieldTypeDefaultNotes
baseidmca:villagermca:villager, a vanilla or modded model layer id, or a custom rig loaded from data/<namespace>/rig/.
scalenumber1.0Global render scale for this species.

The deeper rig file owns model sources, textures, bones, armour, face anchors, wearable anchors, held item transforms, pose transforms, hitboxes, camera settings, and emote integration. See Rigs.

The species animations block does not define a full animation rig. It tells Townstead which animation source to use for broad body states, and which provider ids can drive idle/walk style animation bridges.

{
"animations": {
"crouch": "humanoid",
"sleep": "humanoid",
"fly": "none",
"providers": ["minecraft:skeleton", "humanoid"]
}
}

Animation state keys currently include:

StateMeaning
crouchCrouching pose source.
sleepSleeping pose source.
flyFlying pose source.

Values are:

ValueMeaning
humanoidUse humanoid animation behaviour.
noneDo not use that animation source.

Unlisted states default to humanoid.

providers is an ordered fallback list for animation bridge integrations. A provider id names an entity identity whose external animation setup can be tried. The special value humanoid means Townstead’s own humanoid setup is the fallback floor. If providers is omitted or empty, the rig uses its base behaviour.

character_editor controls the Character tab shown in the MCA editor for this species.

If character_editor is omitted, Townstead leaves MCA’s native Character tab unchanged. This is usually right for ordinary villager-style species.

If character_editor is present, Townstead replaces the native subpage strip with a species-aware layout:

FieldTypeNotes
nativearrayMCA-native groups to keep when tabs are auto-generated. Supported values are body, clothes, hair, and mca_eyes.
tabsarrayExplicit tab list. If omitted or empty, Townstead generates tabs from editable species genes and kept native groups.

Each explicit tab has:

FieldTypeNotes
idstringTab id. Townstead renders gene tabs as townstead_char:<id>.
labelcomponentOptional tab label. Falls back to id.
fieldsarrayOrdered native group ids or gene ids.

Native groups can be listed inside explicit fields; a tab with one native group delegates to MCA’s own subpage. A tab with gene fields becomes a Townstead-rendered gene tab.

Only editable variant genes with options appear in generated tabs. Tinted skin-tone style genes render as a tone selector and colour swatch; other variant genes render as cyclers. Non-visual genes, passive abilities, and hidden mechanics do not appear in the character editor.

breasts controls whether this species keeps MCA’s breast body part and breast editor slider.

If omitted, the default follows the rig:

RigDefault
mca:villagertrue
Any other rigfalse

Set breasts explicitly when a custom humanoid rig supports that part, or when a villager-derived species should hide it.

genes uses the same gene-list format as ancestries and lineages. A bare id means the species always contributes that gene:

{
"genes": ["my_pack:tall_frame"]
}

Use occurrence when a founder should only sometimes receive the gene:

{
"genes": [
{ "gene": "my_pack:golden_eyes", "occurrence": 0.65 }
]
}

Species genes are broad traits for the body group. Root, ancestry, and lineage genes can still add narrower identity, family, or heritage traits on top.

admixture_chance is the same-species mixed-founder knob. A value of 0 means newly generated founders start from one root. A value of 1 means every eligible founder can be generated from compatible roots in the same species.

For example, if humans and elves are roots in the same species, this is the field that controls how often new founders might begin with mixed human/elf heritage. If they are different species, admixture_chance does not make cross-species children.