
Run a live story for a server of LegendQuest characters. One player is the Storyteller — the Dungeon Master — and gets the tools to stage a session: drift unseen through a scene, look in on any player, spawn and dress a cast, take over a creature and speak as it, place a building, narrate, and hand out the spoils.
An expansion for LegendQuest ReForged, not a standalone mod. An NPC here is a LegendQuest character sheet; a reward is LegendQuest XP; a party is a LegendQuest party.
Built for Minecraft 1.21.11, 26.1.2 and 26.2. Each download names the version it is for, and refuses to load on the wrong one rather than misbehaving quietly.
| LegendQuest | StoryTeller | |
|---|---|---|
| Server | required | required |
| The Storyteller | optional | optional |
| Everybody else | nothing | nothing |
That is a hard constraint on the design, not a nice-to-have. Every effect the table perceives arrives through something a vanilla client already understands — real entities, chat, titles, the action bar, sounds. Your players see the whole scene from an unmodded client. Nobody has to install a modpack to be in your story.
It also means the Storyteller can run a session from a vanilla client. Even the buttons work — see below.
/st possess takes over the creature in your sights, and /st say <words>
gives it your voice to anyone close enough to hear. Say /st possess again and
it is itself, exactly as it was — nothing is destroyed, nothing is rebuilt, a
released goblin is still a goblin.
With the StoryTeller mod on your client, you are it. Your own controls, your own mouse, your own jump: the creature goes where you go, invisible from inside and standing where your body would be when you look at yourself from behind. The room sees only the creature. It works on a cast NPC just as well as a wild animal, human bodies included.
On a vanilla client that would fill the screen with the inside of a cow, so
/st possess leads the creature instead — it walks where you walk, bound by
its own legs. You are not asked which client you are on; the mod works it out
and tells you which one you got.
/st possess eyes does the opposite trade: the camera binds to the creature and
you see what it sees while it carries on living its own life. On a vanilla
client you cannot have eyes and control at once — that is Minecraft's limit
rather than a shortcut, and the mod says so plainly instead of pretending.
You are hidden automatically while you wear a body (with Standards installed), and given back to the world when you let go — unless you had hidden yourself first, in which case you stay hidden and are told why.
/st move sends what you have locked to where you are looking, and /st
swing makes it take a swing — a blacksmith striking an anvil, a guard warning
somebody off. Both need a lock rather than your crosshair, deliberately: when you
are pointing at the place you want it to walk to, the crosshair is on the
destination, not on the creature.
A creature sent somewhere keeps doing what it was doing, at the new spot — a guard walked across a courtyard guards there from then on, instead of strolling home a few seconds later. And each order says what will actually happen: whether it will guard or patrol where it lands, whether it is still following somebody and will head back, that a slime cannot be walked anywhere at all, and that a creature somebody is wearing goes where its driver goes. An order it cannot carry out is refused out loud rather than accepted and quietly dropped.
/st lock makes the creature in your sights the target until you say it again.
Possess, speak, dress, direct and save all mean that one afterwards, wherever you
happen to be looking.
Pointing at a thing is the right default — no names, no ids, no selectors — but
it wants your head still, and walking a possessed cow across a room means looking
where it should go, which is not at it. A locked shopkeeper can even hold a whole
conversation through /st say without being possessed at all, so it keeps its
own behaviour while you speak for it.
It never fails quietly: if the creature dies, unloads or leaves the world, the lock ends and says so, rather than silently pointing your next command at whatever happened to be under the crosshair.
/st cast spawn <entity> [name] — any mob, named or not./st cast citizen [race] [class] — a named villager with a LegendQuest race
and class rolled by weighted frequency, or pinned to the ones you want./st cast behave guard | patrol | follow <player> | flee | none — a movement
habit added alongside a creature's own instincts, so a guard still fights
back and still flinches from fire./st cast save | use | list — keep a cast member as a preset, stored with the
world./st cast equip <slot> <item> · /st cast worn — dress an NPC, with the item
written exactly as /give takes it, so a named sword or a tipped arrow works.
(Needs Cast, below.)/st struct ghost <structure> shows a building where it would stand, centred
on where you are looking, before anything is built. With the StoryTeller mod
on your client it is drawn in the world as a translucent ghost: scroll turns
it, Shift+scroll or Page Up/Down raise and lower it, the arrow keys shift it to
sit right on uneven ground, left-click locks it in place so you can walk round
it, right-click builds it and Esc puts it away. On a vanilla client you get its
outline in particles only you can see, with its front edge in gold, steered by
a row of chat buttons./st struct place <structure> [at <x y z>] [rotate cw90|180|ccw90] — any
structure any loaded datapack declares: over 1,200 of them in vanilla alone,
village houses, temples, ruins and fortress pieces. It is exactly what the
ghost sends, so the two never disagree about where a building lands.withair or withjigsaw to keep
either./st struct whole ghost <structure> · /st struct whole place <structure>
— a whole generated structure, the way world generation assembles it: a
village with its streets and farms, a bastion, an outpost, an ancient city, a
monument, a fortress, a stronghold, a mansion. The ghost shows the assembly
before anything is built, and what you see is what lands — the layout is
pinned, so placing it does not quietly deal a different village. [Reroll]
deals another one. Every structure draws, whether it is stamped from saved
templates or built in code, because it is asked to build itself somewhere
nothing is kept and the ghost shows what it laid down./st struct library ghost <name> · /st struct library place <name> [at <x y
z>] [rotate ...] — the same for CityWorld's schematic library, when it is
installed./st undo · /st scene clear — take back the last thing you placed or
spawned, or everything from this session. Every placement snapshots the
ground first, so a building comes back off cleanly, without beds breaking or
chests spilling on the way./st reward <player> xp | levels | sp | karma | money <n> [reason]/st reward <player> reputation <track> <n> [reason] — standing with a
faction or a town, which is not the same thing as karma: karma is LegendQuest's
moral axis and drives your titles, reputation is standing on a named track, so
a character can be loved in one place and hated in the next./st reward <player> item <item> [count] — hand over the actual thing, from
the item registry, so modded loot works as well as vanilla./st reward party <player> … — the whole party in one action, because a GM
awarding four people one at a time will award three./st effect <player> <effect> <seconds> [level] [hidden], and the party and
clear forms.hidden suppresses the swirling particles — for a condition the story imposes
rather than a potion someone drank.
These are not a reimplementation of vanilla /effect and /xp. They are the
same capabilities reached through the Storyteller's own permission instead of
operator, so a GM can lay a curse without also being handed /stop, /ban and
every block on the server.
/st who — the roster: race, class, level, karma, health, mana, party and
where everyone is standing, with health coloured because it is the one number
you have to react to mid-scene./st goto <player> · /st next — look in on someone, or cycle the table./st drift — leave your body and move through the scene unseen; say it again
to come back, with dimension, position, facing and game mode all restored./st summon [player] — bring the whole party to where you stand, in a ring,
facing what you are facing. Everyone is told who brought them, and anyone
offline is reported to you instead of silently left behind./st narrate [radius <n>| party <player>] <text> · /st title <text> ·
/st whisper <player> <text> — a god-voice, a title card, an omen meant for
one person.With Standards installed, the Storyteller's most-used tools appear as buttons — a drawn bar for anyone running the Standards client, and clickable chat buttons for anyone who is not. A vanilla Storyteller gets working buttons.
They report state rather than just availability: Possess lights up while you are wearing something and names it, Lock lights up naming what it holds. A Storyteller who can see "you are wearing a cow" notices a possession that has quietly ended, instead of finding out three commands later.
And keys, for the tools you aim. Install StoryTeller on the Storyteller's own client and seven keybinds appear — possess, lock, move, swing, drift, next and summon — so you can take over a creature, or send it somewhere, while you are still tracking it with the mouse. They arrive unbound, and the game tells you once that they are there.
Two nodes, through NeoForge's permission API, LuckPerms-compatible — the same
scheme LegendQuest uses, so a server already granting legendquest.* needs no
new tooling.
| Node | Grants |
|---|---|
storyteller.storyteller |
/st at all |
storyteller.reward |
handing out XP, levels, skill points, karma, reputation and money |
Both default to false, operators included. An op is someone who can fix the server, which is not the same as someone who should be able to silently possess a player's rival mid-session. They are split for the same reason: "can hand out levels and money" and "can drift through walls unseen" are different amounts of trust, and you should be able to grant one without the other.
LegendQuest ReForged is a hard dependency, matching Minecraft version for Minecraft version.
| Mod | Adds |
|---|---|
| Standards | the buttons, money rewards, reputation rewards, and hiding you while you wear a body |
| Cast | NPC bodies — human and mob — to possess, dress and speak through; making a person swing needs 1.1.0 or newer |
| CityWorld | its schematic library (.schematic, .schem, .litematic, .nbt) as a second pool for /st struct; ghosts and turning need 5.8.0 or newer |
Every one of these degrades to a plain "not available on this server" rather than breaking. Standards being installed and the server having an economy are asked as two separate questions, because they are two separate things.
Where a version is named it is enforced, deliberately: a Cast older than 1.1.0 stops StoryTeller loading, with a message saying which mod to update. That reads harsher than degrading quietly, and it is the kinder failure — the alternative is a server that starts cleanly and then throws, mid-scene, the first time a Storyteller makes somebody swing.
mods/
folder — both must be for the same Minecraft version.storyteller.storyteller to whoever is running the story. Nothing works
until you do, deliberately.Pick the download matching your server:
| File | Minecraft | NeoForge |
|---|---|---|
storyteller-<version>+mc1.21.11.jar |
1.21.11 | any 21.11 build |
storyteller-<version>+mc26.1.2.jar |
26.1.2 | any 26.1 build |
storyteller-<version>+mc26.2.jar |
26.2 | any 26.2 build |
Any build within the series will do — updating NeoForge does not mean waiting for a StoryTeller release that changes nothing else.
There is no Storyteller screen yet — no roster panel, spawn palette or saved
reward presets. What you run a session with today is the commands, the
Standards
buttons (a drawn bar, or clickable chat buttons on a vanilla client) and the
keybinds. All three send the same /st commands, so none of them can do
something the others cannot, and a screen built later will work the same way.
StoryTeller runs a story live; it does not author one. Written questlines — givers, stages, choices, consequences the world remembers — are Chronicler's job, and the two sit happily on one server: prepare the plot in Chronicler, improvise around it with StoryTeller.
Two limits worth knowing before a real session, stated here rather than discovered mid-scene:
behave may not hold on a brain-driven creature — villagers, piglins,
wardens and seventeen others run on a different AI system that our instruction
competes with rather than replaces. It applies the behaviour and tells you it
may not hold, rather than claiming a success it has not earned.MIT licensed and developed in the open at GitHub. Bug reports and suggestions are welcome on the issue tracker.