Description

LegendQuest StoryTeller
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.
Only the server needs it. Your players install nothing.
| 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.
Be a creature and speak as it
/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.
Lock on, then look wherever you like
/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.
Cast a scene
/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/givetakes it, so a named sword or a tipped arrow works. (Needs Cast, below.)
Dress the set
/st struct place <template> [rotate cw90|180|ccw90]— any structure any loaded datapack declares: over 1,200 of them in vanilla alone, villages, temples, ruins and fortress pieces./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 can be taken back off cleanly.
Reward the table
/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.
See the table, and speak to it
/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.
Buttons, without asking anyone to install anything
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 five keybinds appear — possess, lock, drift, next and summon — so you can take over a creature while you are still tracking it with the mouse. They arrive unbound, and the game tells you once that they are there.
Permissions
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.
Required: LegendQuest
LegendQuest ReForged is a hard dependency, matching Minecraft version for Minecraft version.
Optional, and each one adds something specific
| 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 |
| CityWorld | its schematic library (.schematic, .schem, .litematic, .nbt) as a second pool for /st struct |
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.
Installing
- Put the LegendQuest jar and the StoryTeller jar in your server's
mods/folder — both must be for the same Minecraft version. - Start the server.
- Grant
storyteller.storytellerto 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.
Honest about what it does not do yet
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:
behavemay 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.- Undo restores blocks, not container contents. A chest a structure overwrote comes back as an empty chest of the right kind. Fine for dressing empty ground; do not place over someone's base and rely on taking it back.
Source, issues, licence
MIT licensed and developed in the open at GitHub. Bug reports and suggestions are welcome on the issue tracker.




