Skip to main content

Sect

A sect definition holds the rank ladder, the contribution tasks and the contribution exchanges of one sect. Membership, contribution and territory are runtime state; the JSON only defines the policy those systems read.

File Location

Sect JSON files go in data/<namespace>/mxt/sect/ within your data pack.

The filename corresponds to its ID. For example, data/example/mxt/sect/qingxiao_sect.json has the ID example:qingxiao_sect.

Fields

FieldTypeDefaultDescription
ranksList<Rank>requiredAt least one rank with a unique ID
tasksList<Task>[]Contribution tasks
exchangesList<Exchange>[]Contribution and resource exchanges
territory_permissionsIdentifier[][]Territory permission identifiers

Rank

FieldTypeDefaultDescription
idStringrequiredThe rank ID; must be unique inside one sect definition
priorityInteger0Rank order; promotion selects the lowest-priority rank above the current one
min_contributionInteger0The contribution required before a member can be promoted into this rank
permissionsIdentifier[][]The permission identifiers granted by this rank
promotion_costsList<ResourceCost>[]The resources paid when promoting into this rank

Task

FieldTypeDefaultDescription
idIdentifierrequiredThe task ID
contribution_rewardIntegerrequiredThe contribution granted on completion; a positive integer
onceBooleantrueWhether the task can only be completed once
required_permissionIdentifiernoneThe permission required to complete the task

Exchange

FieldTypeDefaultDescription
idIdentifierrequiredThe exchange ID
contribution_costInteger0The contribution consumed by the exchange
costsList<ResourceCost>[]The resources consumed by the exchange
outputsIdentifier[]requiredThe output item IDs
required_permissionIdentifiernoneThe permission required to use the exchange
note

A sect definition requires at least one rank, and the rank id values must be unique inside one definition.

Example

// data/mxt_test/mxt/sect/qingxiao_sect.json
{
"ranks": [
{ "id": "outer_disciple", "priority": 0, "min_contribution": 0, "permissions": ["mxt:claim"] },
{
"id": "inner_disciple",
"priority": 1,
"min_contribution": 20,
"permissions": ["mxt:claim"],
"promotion_costs": [{ "id": "mxt_test:spirit_power", "amount": 10 }]
}
],
"tasks": [{ "id": "mxt_test:meditate", "contribution_reward": 20, "once": false }],
"exchanges": [{
"id": "mxt_test:qingxiao_spirit_crystal",
"contribution_cost": 20,
"outputs": ["mxt_test:qingxiao_spirit_crystal"]
}],
"territory_permissions": ["mxt:claim"]
}

ResourceCost entries use an id and an amount; see Shared Data Types for the exact shape.