Datapack Guide
For server owners and pack authors. Tune via datapack / resource pack; you cannot invent new mechanics—effects[].type and spell type must be registered. Canonical samples: data/fatepath/ in the MOD jar.
| Channel | Content | Applies |
|---|---|---|
| Datapack | talents/, skills/, spells/, recipe/, tags/, destiny_lines/, passive_effect_types/ | /reload |
| Resource pack | assets/<ns>/lang/*.json | Reload resources |
config/fatepath-common.toml | TXP / mana / talent roll count, etc. | Restart |
Later same id wins. Logs: Loaded N … / Failed to load ….
Layout
data/<ns>/
├── talents/**/*.json # Innate talents; never set type
├── skills/<category>/*.json
├── spells/*.json
├── recipe/*.json # includes fatepath:talent_gated
├── destiny_lines/*.json
├── passive_effect_types/*.json # attribute types only
└── tags/block|item/<name>.json # use fatepath ns to patch mod tagsPrefer your own namespace; to override builtins keep the same id under data/fatepath/....
Talents talents/
| Field | Notes |
|---|---|
id | e.g. mypack:talent/foo |
max_level | required |
effects | { type, value?, scope?, range? } |
weight / grade | roll weight; common / extra / unique / ultimate |
mutually_exclusive | talent IDs |
hidden / toggleable / grant_on_join | |
grant_skills | [{ "id", "level"? }] or skill ID string |
prerequisites | [{ "id", "level" }] |
growth_* | developmental (see poison / heat tolerance JSON) |
Do not set type (folder implies talent). Unknown effects[].type → load fails.
Skills skills/<category>/
category: combat | mining | farming | fishing | crafting | exploration
| Field | Notes |
|---|---|
id | e.g. mypack:combat/foo |
max_level / cost_per_level | costs length must cover upgrades |
prerequisites | id + level only |
effects | unknown type → load fails |
on_death | { lose_levels, min_level } or { lose_all: true } |
mutually_exclusive / hidden / toggleable / grant_on_join | |
summon_mastery | see builtin summon_mastery.json |
evoker_fangs | { base_fang_count, base_row_count, fang_spacing, start_distance } |
Active unlocks: skill effect type + matching spell required_skill.
{
"id": "mypack:combat/arcane_bolt",
"category": "combat",
"max_level": 3,
"cost_per_level": [25, 50, 100],
"prerequisites": [],
"effects": [{ "type": "fatepath:fireball" }]
}Spells spells/
| Field | Notes |
|---|---|
id / type | spell ID; type from table below |
required_skill | linked skill (required for most types) |
tier | beginner … god |
color / icon / hidden | wheel |
radius / duration_ticks / cast_ticks / angular_speed / mana_cost | top-level, type-dependent |
levels[] | each needs damage, cooldown_ticks, mana_cost |
summon | see summon_undead.json |
levels[] extras: scale, sets_fire, pierce, speed, explosion_radius, target_range, splash_radius, splash_ratio, undead_multiplier, debuff_duration_ticks, duration_ticks, cast_ticks.
Spell type
| type | Notes |
|---|---|
projectile_fireball | Fireball |
projectile_ice_cone | Ice cone |
cast_projectile | Cast projectile (Radiant Lance) |
channel_beam | Channel (Hydro Jet) |
thunder_strike | Thunder Strike |
lightning_bolt | Lightning Bolt |
flame_dash | Flame Dash |
area_firestorm | Firestorm |
swift_surge | Swift Surge |
encourage | Encourage |
wither_mist | Wither Mist |
evoker_fangs | Evoker Fangs |
summon_undead / summon_creature | Summon |
ignite | Empty-hand; not on wheel |
infinite_gacha | Hidden-style |
Namespace fatepath:. New logic needs Java (RegisterSpellTypesEvent).
{
"id": "mypack:arcane_bolt",
"type": "fatepath:projectile_fireball",
"tier": "intermediate",
"required_skill": "mypack:combat/arcane_bolt",
"color": "#AA44FF",
"icon": "minecraft:ender_pearl",
"levels": [
{ "damage": 5.0, "scale": 0.4, "cooldown_ticks": 40, "speed": 1.5, "mana_cost": 10, "explosion_radius": 0.0 }
]
}Passive effects[].type
Attribute: attack_damage, armor, max_health, luck, mining_speed, movement_speed (last two multipliers).
Event (subset): night_vision, water_breathing, fire_resistance, mining_fortune, farming_fortune, fishing_speed, fishing_loot_tier, auto_reel, crop_plant_*, catalyst_smelting, cobblestone_refine, imbued_ash, magma_armor, block_counter, view_others_talents (scope / range), growth poison_resistance_* / heat_tolerance_*, curse damage_taken / mana_regen_penalty / neutral_aggro / villager_trade_*, plus spell unlock types (fireball, hydro_jet, summon, thunder_strike_lock, …).
Source of truth: PassiveEffectType. Attribute types can be added via passive_effect_types/ (application + attribute); event types need Java.
Gated recipes
type: fatepath:talent_gated (legacy serializer name). required_skill must be owned and enabled.
{
"type": "fatepath:talent_gated",
"group": "cobblestone_refine",
"category": "building",
"required_skill": "fatepath:crafting/cobblestone_refine",
"ingredients": [{ "item": "minecraft:blackstone" }],
"result": { "id": "minecraft:cobblestone", "count": 1 }
}Tags
Mod reads fixed fatepath: tag IDs. Patch with:
data/fatepath/tags/block|item/<name>.json
| Tag | Use |
|---|---|
#fatepath:mining_txp_blocks / mining_txp_excluded | Mining TXP |
#fatepath:catalyst_smelting_ores / catalyst_smelting_meat | Catalyst smelting |
#fatepath:poison_resistance_training_food | Poison growth |
Destiny lines
data/<ns>/destiny_lines/*.json: id, roll_chance, grant_talents, spawn_at, …. See Destiny.
Localization
| Object | Key |
|---|---|
| Talent | talent.<ns>.<dotted path> + .description |
| Skill | skill.<ns>.<dotted path> + .description |
| Spell | spell.<ns>.<path> + .description |
| Effect template | effect.fatepath.<name> (overridable) |
Debug
/reload, then check logs/fatepath talent list|give·/fatepath skill list|give·/fatepath spell cast <id>·/fatepath txp give- Full commands: Commands; knobs: Config
Override same id to retune or "hidden": true. New event effects / spell logic require MOD or addon code.