Aller au contenu principal

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

FieldTypeDefaultDescription
soundOnOpenSounditem.book.page_turnSound played when a menu opens.
soundOnSwitchSounditem.flintandsteel.useSound played when switching between menus.
soundOnClickSounditem.flintandsteel.useSound played on any navigation click.
soundOnTrackSoundentity.arrow.hit_playerSound played when tracking a quest.
soundOnUntrackSoundentity.arrow.hit_playerSound played when untracking a quest.
multiTrackingEnabledBooleantrueKeep several quests tracked while Typewriter exposes the latest selected quest as primary.
maxTrackedQuestsInt5Maximum simultaneous tracked quests.
trackingArtifactRef<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.
recoveryEnabledBooleantrueEnable recovery checkpoints for active Typewriter dialogues and cinematics.
recoveryArtifactRef<QuestCodexRecoveryArtifactEntry>(empty)Artifact used to persist the active interaction snapshot. Recovery is disabled when this is empty.
recoveryRetentionSecondsLong120Maximum lifetime of a recovery snapshot. Clamped to 10 seconds–24 hours.
recoveryRestoreDelayTicksLong2Delay after join before restoring the interaction. Clamped to 1–20 ticks.
defaultRowsInt4Default inventory rows for category menus (3-6).
nowTrackingMessageString @Placeholder @Colored"<green>Tu suis maintenant : {quest}</green>"Message when tracking starts. {quest} → quest name.
stoppedTrackingMessageString @Placeholder @Colored"<gray>Tu ne suis plus : {quest}</gray>"Message when tracking stops.
questUntrackHintString"<yellow>Click to stop tracking</yellow>"Lore shown on a tracked quest.
trackingLimitMessageString"<red>You can track at most {max} quests.</red>"Message when the limit is reached.
questInactiveMessageString @Placeholder @Colored"<gold>{quest} — Commence cette quete !</gold>"Message when clicking an inactive quest.
questCompletedMessageString @Placeholder @Colored"<green>{quest} — Completee !</green>"Message when clicking a completed quest.
categoryProgressMessageString @Placeholder @Colored"<gray>{completed}/{total} quetes</gray>"Lore line for category progress. {completed} and {total} variables.
categoryClickHintString @Placeholder @Colored"<yellow>Clique pour voir les quetes</yellow>"Lore hint for category items.
questTrackHintString @Placeholder @Colored"<yellow>Clique pour suivre</yellow>"Lore hint for quest items.
mainMenuTriggerRef<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 Sound type follows Typewriter's standard sound format with soundId and soundSource. To mute a sound, set its volume to 0.

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

VariableAvailable InDescription
{quest}All message fieldsThe quest's display name.
{completed}categoryProgressMessageNumber of completed quests.
{total}categoryProgressMessageTotal quests in the category.
{max}trackingLimitMessageConfigured maximum tracked quests.