ftbq → tenet migrator

the mapping bible, condensed

Reference.

Every FTB Quests 1.21.1 field below already has a Tenet home: the middle column is what the migrator writes. FTB’s snake_case becomes Tenet’s camelCase, and an absent FTB field keeps Tenet’s default. Sourced from tenet/docs/authoring/ftb-mapping.md and the conversion spec — the full texts, not this page, are the contract.

Tasks that map 1:1
FTB taskTenet typeNotes for the tool
advancement + criteriontenet:advancementEmpty criterion ("", all 54 ATM10 uses) means the whole advancement: emitted without criterion.
observationtenet:observationtoObserve / timer / observeType; NBT on toObserve is a fuzzy subset match.
stattenet:statSame two fields, same meaning.
forge_energytenet:energyvalue + maxInput; absent max_input means unlimited.
killtenet:killTag takes precedence over id; NBT fuzzy subset match.
locationtenet:locationSame box; ignore_dim → ignoreDimension.
item + match_componentstenet:item + matchnone / fuzzy / strict identical; 1.20.1 match_nbt becomes match. Integers past ±2⁵³−1 force fuzzy.
item data componentsverbatimPassed through structurally, never interpreted; 1b/0b read as booleans.
item + only_from_craftingtenet:item + onlyFromCraftingTenet counts lifetime crafted statistics.
item + consume_itemstenet:item + consumeItemsAbsent defers to chapter defaultConsumeItems, then file default.
filter stackstenet:filterExpression verbatim; quest-unanswerable functions become tenet:custom placeholders.
item/fluid + task_screen_only+ manualOnlyPiped task-screen fill is a documented loss; the manual half is kept.
checkmarktenet:checkmarkSame handshake; author picture wins over the box.
gamestagetenet:stagestage + teamStage pair.
Rewards that map 1:1
FTB rewardTenet fieldNotes for the tool
autoautoenabled / invisible / no_toast / disabled identical, incl. file default.
team_rewardteamAbsent defers to the file default.
exclude_from_claim_allexcludeFromClaimAllSame flag on every reward.
ignore_reward_blockingignoreRewardBlockingSame flag, on rewards and quests.
disable_toastdisableToastQuiets the reward-level notice.
title (from lang)titleThe row’s own words; checkmarks read their button from here.
icon overrideiconItem, texture file, atlas region, or entity spawn egg.
command + silenttenet:commandPlaceholders {p} {x}/{y}/{z} {quest} {chapter} {team} carry over.
item + only_onetenet:item + onlyOneChecked by item type, ignoring components.
toasttenet:toastLiteral text or translation key with fallback.
currencytenet:currencyAmount passes through; the coin belongs to the installed economy.
gamestagetenet:stagestage / remove / teamStage triple.
choice / random / loot / all_tabletable modesrandom excludes empty, loot includes empty_weight, all_table ignores weights, choice never auto-grants.
Quest · chapter · file
FTB fieldTenet fieldNotes for the tool
require_sequential_taskssequentialTasks / defaultSequentialTasksQuest flag, chapter default.
hide_quest_until_deps_*hideUntilDependencies*Tristate; absent defers to chapter defaults.
hide_dependency_lineshideDependencyLinesIncoming lines only.
hide_dependent_lineshideDependentLinesThe outgoing half; either silence wins.
min_width / default_min_widthminWidth / defaultMinWidth0–3000, 0 unset.
autofocus_idautofocusQuest in this chapter; absent centres the bounding box.
icons (custom_icon, entity_face)icon.png/.jpg suffix is a file, anything else an atlas region.
table use_title / hide_tooltipuseTitle / hideTooltipSame pair under Tenet’s names.
invisible (+ until_tasks)invisible (+ invisibleUntilTasks)Same pair, same counting rule.
tagstagsSame list on every object; lowercase-letters-digits-underscores.
guide_pageguidePageShown as a Guide: reference; no integration.
show_lock_iconsshowLockIconsTool writes explicit true unless FTB says false (absent readings diverge).
(no FTB field — FTB has no zoom tiers)disableCanvasLodTool writes explicit true: preserves the always-drawn canvas. Chapter writes explicit false to opt back into tiers.
pause_game / disable_guipauseGame / disableGuiSame switches under Tenet’s names.
drop_loot_crates / loot_crate_no_droptool-reportedNo Tenet home (crates out of scope): manual work.
verify_on_loadtool-reportedA loader flag with no quest-file meaning.
Dependencies
FTB fieldTenet fieldNotes for the tool
dependenciesdependsOnRemapped HEX → slug, order preserved. Gates on task/reward ids lift onto the owning quest and are reported.
dependency_requirementprerequisiteModeall/one × completed/started, same four words.
min_required_dependenciesminRequiredWritten only above 0; refused above the dependency count.
max_completable_dependentsmaxCompletableDependentsSame cap, written only above 0.
optionaloptionalStill gates dependants — optional only excuses chapter completion.
progression_modeflexibleProgressQuest → chapter → file; flexible anywhere sets the flag.
can_repeatrepeatableQuest → chapter default_repeatable_quest → false.
repeat_cooldown (s)repeatCooldownTicks (×20)Cooldown without repeatable is reported and dropped.
dep_control_ptstool-reportedTenet draws its own routes; hand-bent lines are reported.
Commands rewritten
FTB Quests commandTenet command
/ftbquests block_rewards/tenet rewards blockunblock for the release.
/ftbquests complete/tenet completewith-dependencies where FTB finished the chain.
/ftbquests reset/tenet resetwith-dependencies where FTB cleared the chain.
/ftbquests open_book/tenet open_bookQuest ids remapped lowercase.
/ftbquests reload/tenet reload
/ftbteams teamstage …/tenet stage add/remove-teamNamed by a member’s player id.

editing_mode, locked and the rest have no Tenet home: reported as manual work.

Inlined at import

Visual presets and chapter appearance defaults resolve into explicit quest values — Tenet reads the result, never the preset. Geometry: coordinates ×64, sizes ×48 (measured against FTB in-game rendering), clamped 16–512 px; collisions nudge +1,+1 deterministically and are reported. Ids lowercase (no aliases — Tenet normalises lookup); every locale found ships as a lang/ overlay keyed by the new ids.

Tenet schema stamp: d8258f4 · vendored 2026-10-10 · index.schema.json, group.schema.json, chapter.schema.json, quest.schema.json, reward_table.schema.json