
Immersive Dialogs
Turn any entity into a talking NPC! Works for both vanilla and custom mobs!
- 3
- October 30, 2026

Immersive Dialogs
Turn any entity into a talking NPC! Works for both vanilla and custom mobs!
- 3
- October 30, 2026
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.
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.
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"}
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.
Turn any entity into a talking NPC! Works for both vanilla and custom mobs!
Turn any entity into a talking NPC! Works for both vanilla and custom mobs!