Skip to content

File Basics

Most Roots files are JSON files under data/<namespace>/.... Every file starts with a schema field.

FieldTypeUsed ByNotes
schemastringallUse the schema for that file type.
display_namecomponentspecies, ancestry, lineage, root, heritageShown in UI and catalogues.
genesarrayspecies, ancestry, lineageEntries are gene ids or objects with gene and occurrence.
demonymobjectancestry, lineage, root, heritagesingular, optional plural, optional adjective.
backstorycomponentancestry, lineage, root, heritageDisplay text for catalogues and editors.
spawn_biasobjectancestry, lineage, rootWeighting used when villagers are naturally assigned roots.
personalitiesobjectspecies, ancestry, lineagePersonality allow/deny policy.

Text fields use Minecraft text components. Plain strings are accepted for simple literal text, and translation objects can point at data-pack language entries.

File TypePathSchema
Rootdata/<namespace>/root/<path>.jsontownstead:root/v1
Speciesdata/<namespace>/species/<path>.jsontownstead:species/v2
Ancestrydata/<namespace>/ancestry/<path>.jsontownstead:ancestry/v1
Lineagedata/<namespace>/lineage/<path>.jsontownstead:lineage/v1
Heritagedata/<namespace>/heritage/<path>.jsontownstead:heritage/v1
Genedata/<namespace>/gene/<path>.jsontownstead:gene/v2
Chronotypedata/<namespace>/chronotype/<path>.jsontownstead:chronotype/v1
Traitdata/<namespace>/trait/<path>.jsontownstead:trait/v1
Rigdata/<namespace>/rig/<path>.jsontownstead:rig/v1

Bare gene ids are enough when a root always carries that gene:

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

Use occurrence when a founder should only sometimes receive a real copy:

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

occurrence is clamped from 0 to 1.

{
"demonym": {
"singular": "Moon Elf",
"plural": "Moon Elves",
"adjective": "Moon Elven"
}
}

plural defaults to singular when omitted. adjective is optional.