Skip to main content

Realm Stage

A realm_stage defines one stage of a linear realm chain: which resource it belongs to, what it costs to break through to the next stage, and which passive modifiers it grants.

File Location

Realm stage files go in data/<namespace>/mxt/realm_stage/ within your datapack.

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

Fields

FieldTypeDefaultDescription
resourceHolder<resource>requiredThe strongly bound aura/cultivation progress resource; one realm can only belong to one resource chain.
aura_share_weightNumberProvider1Weight used when sharing aura in the same chunk while aura_zone.distribution is realm_weighted.
cultivate_conditionEntityConditionmxt:always_trueEnvironment conditions that allow cultivation at this realm; for example mxt:aura_range can require a minimum concentration.
next_realmHolder<realm_stage>noneThe next realm of the linear chain; at most one.
breakthrough_expNumberProvider0The minimum cultivation progress count needed to break through from the current realm to the next one.
max_experienceNumberProviderDouble.MAX_VALUEThe maximum cultivation progress count that may be held in the current realm before advancing to the next one; once reached, no further cultivation progress is accepted. It must not be smaller than breakthrough_exp.
breakthroughCultivateConditionsempty objectThe breakthrough conditions checked after the minimum cultivation progress is reached.
auto_breakthroughBooleanfalseWhether a breakthrough is attempted automatically while cultivation mode is running; when disabled, a breakthrough can only be triggered through a command, KubeJS or another server-side call.
passive_modifiersList<AttributeEntry>[]Vanilla attribute modifiers granted by the current realm; an entry contains attribute, the vanilla modifier id/amount/operation and an optional value formula.
costsList<ResourceCost>[]Breakthrough costs; each entry is an id and an amount.
ability_requirementsHolderOrTag<ability>[][]Abilities that must be owned before breaking through.
tribulationHolder<tribulation>noneOptional tribulation.
breakthrough_particleParticleEffectnoneOptional breakthrough particle; nothing is sent when it is omitted.
success_actionEntityActionmxt:no_opBehaviour on a successful breakthrough.
fail_actionEntityActionmxt:no_opBehaviour on a failed breakthrough.

Example

{
"resource": "example:qi",
"aura_share_weight": 2,
"cultivate_condition": {"type": "mxt:aura_range", "min": 20, "max": 200},
"next_realm": "example:qi_condensation",
"breakthrough_exp": "1000 + level * 250",
"max_experience": "2000 + level * 500",
"auto_breakthrough": false,
"breakthrough": {
"conditions": [
{"type": "mxt:realm", "realm": "example:foundation"},
{"type": "mxt:resource_compare", "resource": "example:qi", "min": 100}
]
},
"costs": [{"id": "example:qi", "amount": 100}],
"success_action": {
"type": "mxt:grant_ability",
"ability": "example:body_tempering",
"source": "example:foundation"
}
}
Realm chains

A realm stage can only bind one resource and forms a linear realm chain through next_realm; a player can hold several chains for different resources at the same time. The realm attachment stores the current realm Holder, and the server realm cache stores the realm-to-aura mapping. A realm chain can only advance in one direction through next_realm.

First Breakthrough

The mortal stage uses the start_exp of its resource as both the first breakthrough threshold and its cap, while first_realm only determines the target of the first breakthrough. The first breakthrough uses the breakthrough conditions of the target first realm, and start_cultivate_conditions is only used for starting cultivation.