Quest Codex Config
Manifest entry that overrides the default Quest Codex configuration. Any field left empty uses the built-in default. Only one entry is needed — it applies globally.
Top-Level Fields
| Field | Type | Default | Description |
|---|---|---|---|
soundOnOpen | Sound | item.book.page_turn | Sound played when a menu opens. |
soundOnSwitch | Sound | item.flintandsteel.use | Sound played when switching between menus. |
soundOnClick | Sound | item.flintandsteel.use | Sound played on any navigation click. |
soundOnTrack | Sound | entity.arrow.hit_player | Sound played when tracking a quest. |
soundOnUntrack | Sound | entity.arrow.hit_player | Sound played when untracking a quest. |
multiTrackingEnabled | Boolean | true | Keep several quests tracked while Typewriter exposes the latest selected quest as primary. |
maxTrackedQuests | Int | 5 | Maximum simultaneous tracked quests. |
trackingArtifact | Ref<QuestCodexTrackingArtifactEntry> | (empty) | Artifact used to persist each player's tracked quest ids and their order. Without it, tracking works only until the next restart/reconnect cycle. |
recoveryEnabled | Boolean | true | Enable recovery checkpoints for active Typewriter dialogues and cinematics. |
recoveryArtifact | Ref<QuestCodexRecoveryArtifactEntry> | (empty) | Artifact used to persist the active interaction snapshot. Recovery is disabled when this is empty. |
recoveryRetentionSeconds | Long | 120 | Maximum lifetime of a recovery snapshot. Clamped to 10 seconds–24 hours. |
recoveryRestoreDelayTicks | Long | 2 | Delay after join before restoring the interaction. Clamped to 1–20 ticks. |
defaultRows | Int | 4 | Default inventory rows for category menus (3-6). |
nowTrackingMessage | String @Placeholder @Colored | "<green>Tu suis maintenant : {quest}</green>" | Message when tracking starts. {quest} → quest name. |
stoppedTrackingMessage | String @Placeholder @Colored | "<gray>Tu ne suis plus : {quest}</gray>" | Message when tracking stops. |
questUntrackHint | String | "<yellow>Click to stop tracking</yellow>" | Lore shown on a tracked quest. |
trackingLimitMessage | String | "<red>You can track at most {max} quests.</red>" | Message when the limit is reached. |
questInactiveMessage | String @Placeholder @Colored | "<gold>{quest} — Commence cette quete !</gold>" | Message when clicking an inactive quest. |
questCompletedMessage | String @Placeholder @Colored | "<green>{quest} — Completee !</green>" | Message when clicking a completed quest. |
categoryProgressMessage | String @Placeholder @Colored | "<gray>{completed}/{total} quetes</gray>" | Lore line for category progress. {completed} and {total} variables. |
categoryClickHint | String @Placeholder @Colored | "<yellow>Clique pour voir les quetes</yellow>" | Lore hint for category items. |
questTrackHint | String @Placeholder @Colored | "<yellow>Clique pour suivre</yellow>" | Lore hint for quest items. |
mainMenuTrigger | Ref<TriggerableEntry> | (empty) | Entry triggered to open the main menu (e.g. an open_gui entry) when no category_menu with an empty category exists. Used by /tw codex and the codex BACK button. (Since 0.3.0.) |
Note: The
Soundtype follows Typewriter's standard sound format withsoundIdandsoundSource. To mute a sound, set its volume to0.
Custom main menu via mainMenuTrigger
If your main hub is a custom open_gui menu (GUI Extension) instead of an auto-generated codex main menu, point mainMenuTrigger at it:
{
"type": "quest_codex",
"id": "my_codex_config",
"mainMenuTrigger": "my_main_menu_gui"
}
With this set, /tw codex and every codex BACK button open your custom menu.
Persistent multi-tracking
To keep multiple tracked quests after reconnects, create a Quest Codex Tracking Data artifact entry and reference it here:
{
"type": "quest_codex",
"id": "my_codex_config",
"multiTrackingEnabled": true,
"maxTrackedQuests": 9,
"trackingArtifact": "questCodexTrackingData"
}
If trackingArtifact is empty, QuestCodex still tracks multiple quests in memory, but that list is not durable. The official Quest extension remains unchanged and receives only the most recently tracked quest as the primary tracker.
Dialogue and cinematic recovery
Create a Quest Codex Recovery
artifact in a static page and reference it through recoveryArtifact.
QuestCodex stores only the active dialogue or cinematic for each player. For a
cinematic, the current page and frame are saved; for a dialogue, its entry id
is saved. Snapshots are persisted asynchronously, expire automatically, and
are restored after the configured join delay.
Usage
Create one entry in any compiled page JSON to customize the global behavior. Only one entry is loaded — if multiple exist, the last one wins.
{
"type": "quest_codex",
"id": "my_codex_config",
"name": "My Codex Config",
"defaultRows": 5,
"multiTrackingEnabled": true,
"maxTrackedQuests": 9,
"trackingArtifact": "questCodexTrackingData",
"nowTrackingMessage": "<green>Now tracking: {quest}</green>",
"soundOnOpen": {
"soundId": { "type": "default", "value": "minecraft:item.book.page_turn" },
"soundSource": { "type": "master", "value": false },
"volume": 1.0,
"pitch": 1.0
}
}
Template Variables
| Variable | Available In | Description |
|---|---|---|
{quest} | All message fields | The quest's display name. |
{completed} | categoryProgressMessage | Number of completed quests. |
{total} | categoryProgressMessage | Total quests in the category. |
{max} | trackingLimitMessage | Configured maximum tracked quests. |