promotional bannermobile promotional banner

Dynamic Quests

A server-wide quest system with one shared active quest with sub-quests/tasks, side quests and a completed archive.

Dynamic Quests turns a single locked book into a shared quest journal for the whole world or server. Every player sees the exact same progress, there is no per-player state, so it is built for cooperative play, map-making, and server storylines.

What it does:

A quest book is permanently kept in each player's last hotbar slot (slot 9). It can't be dropped, moved out, or duplicated, and it re-appears automatically for anyone who joins.

The book has three clean sections across its pages: 

Active Quest — the current main quest in orange, with its steps listed below as bullet points. Completed steps turn green and struck-through; the current step is marked with an arrow. (Active Quests are always pinned as a boss bar).

Side Quests — optional quests shown in green, each with their own steps. (Pin one side quest below the active quest by clickin on them in the quest book).

Completed — an archive of everything that has been finished.

A boss bar shows the current objective (the active quest's current step) at a glance.

The book rewrites itself automatically whenever anything changes.

Feedback on progress: finishing a step plays a soft confirmation sound; finishing a whole quest plays the challenge-complete jingle and announces it in chat, then moves the quest to the Completed archive.

 

Commands (Examples):

Viewing:

# Show the clickable command list
/function quests:help

# Print all quests with their ids, titles and progress
/function quests:list

# Hide the quest book in hotbar
/function quests:hide_book

# Configure quest book hotbar slot (N = slot 1-9)
/function quests:set_slot {slot:N}

 

Creating Quests:

# Add a MAIN quest (appears as the active quest)
/function quests:add_main {id:"build_house",title:"Build a House",subs:["Gather wood","Place blocks","Add a door"]}

# Add a SIDE quest
/function quests:add_side {id:"fishing",title:"Go Fishing",subs:["Catch 5 fish","Cook them"]}

 

Progressing Quests:

# Advance the current step of the active MAIN quest
/function quests:complete {id:"build_house"}

# Advance the current step of a SIDE quest
/function quests:complete {id:"fishing"}

# Set a MAIN quest to an exact number of completed steps (no sound)
/function quests:setprog {id:"build_house",prog:2}

# Set a SIDE quest's progress
/function quests:setprog {id:"fishing",prog:1}

 

Managing Quests:

# Reset a MAIN quest to 0 (or pull it back from "Completed")
/function quests:reset {id:"build_house"}

# Reset a SIDE quest
/function quests:reset {id:"fishing"}

# Reorder a MAIN quest (pos 0 = make it the active quest)
/function quests:reorder {id:"build_house",pos:0}

# Reorder a SIDE quest
/function quests:reorder {id:"fishing",pos:1}

# Permanently remove a MAIN quest
/function quests:remove {id:"build_house"}

# Permanently remove a SIDE quest
/function quests:remove {id:"fishing"}

 

Gating world actions to a quest:

# Fires only when "build_house" is the active main quest, on step index 1
execute if data storage quests:data {ActiveId:"build_house",ActiveProg:1} run function quests:complete {id:"build_house"}

# Fires only when the active main quest is "build_house" (any step)
execute if data storage quests:data {ActiveId:"build_house"} run function quests:complete {id:"build_house"}

# Fires only when side quest "fishing" is on step 0
execute if data storage quests:data Side[{Id:"fishing",Prog:0}] run function quests:complete {id:"fishing"}

 

Remove the built-in examples:

/function quests:remove {id:"example_main"}
/function quests:remove {id:"example_side"}

 

 

Compatibility

100% vanilla — no mods, no resource pack required.

Built for Minecraft 1.26.3 (data pack format 121).

Server-side: works in single-player and on multiplayer servers. Only the world owner / an operator (or cheats enabled) needs permission to run the management commands.

KEY NOTE FOR NON-DEV's:

An index ALWAYS starts at 0, meaning prog:0 is the first sub-quest, prog:1 is the second etc.

Dynamic Quests Team

profile avatar
  • 2
    Projects
  • 11
    Downloads

I make stuff that I use myself. I just publish them as well in case it is useful to others :)

More from Stormzee