Guiding players through Theatria, one Trailstones lesson at a time.
ZaraSprite is an in-game tutorial assistant for the public Minecraft server Theatria.
Its core mission is to teach—delivering small, interactive lessons (called Trailstones) while also handling everyday questions about ranks, commands, the economy, and more.
A modular multi-agent system keeps ZaraSprite responsive, knowledgeable, and able to move around the world to demonstrate concepts live.
| Layer | What it Does |
|---|---|
| Agents | Independent workers—each owns one piece of ZaraSprite’s behavior. |
| Shared Utilities | Cross-cutting helpers (database, logging, config). |
| SQLite + Event Bus | Lightweight persistence and internal messaging. |
| Minecraft Runtime Hooks | Paper 1.20+ events for chat, DMs, player actions, and movement. |
Agents exchange tasks via a small in-memory event bus or by writing rows to SQLite tables.
This keeps concerns separate yet lets every part of ZaraSprite “see” new data quickly.
| Feature | Details |
|---|---|
| Goal | Teach one focused skill (e.g., “Buy an item from a shop”). |
| Structure | Ordered steps → checkpoints → completion flag. |
| Triggers | Player asks, reaches a tag-matched event such as achieving a certain rank or completing an accomplishment, or ZaraSprite recommends it. |
| Interactivity | Pauses for in-world actions or chat responses. |
| Adaptation | Checks player verbosity preference. Stores progress for resuming later. |
Example Trailstones
chestshop-buy– Buy from a player shopchestshop-sell– Sell to a player shopchestshop-create– Create a chest shop of your ownshrine-quests– Explain daily Shrine queststour-smittiville– Get a guided tour of Smittivilleserver-sell– Sell items in your inventory to the server
| # | Agent | Core Responsibility |
|---|---|---|
| 1 | 📨 InputHandlerAgent | Listens for DMs & mentions → writes to inbound_messages. |
| 2 | 💬 SessionManagerAgent | Opens/closes sessions, manages expirations & escalations, notifies players. |
| 3 | 🧭 IntentAgent | Classifies each message (tutorial request, question, TP, etc.) and routes tasks. |
| 4 | 🎭 PersonalityAgent | Wraps raw GPT text in ZaraSprite’s warm, concise voice. |
| 5 | 🧍 MovementManagerAgent | Teleports, follows, queues movement, tracks “busy” state. |
| 6 | 💡 ResponseEngineAgent | Builds GPT prompts, checks wiki facts, reviews & filters final output. |
| 6.1 | > Sub-agent: SafetyAgent | Scans messages for risky or prohibited requests |
| 7 | 📚 WikiLookupAgent | Searches the Theatria Wiki; returns snippets or links. |
| 8 | 🗺️ GuidanceAgent (Trailstones) | Launches, pauses, resumes tutorial modules; suggests next Trailstones. |
| 9 | 🥰 MemoryManagerAgent | Stores long-term player prefs (verbosity, completed lessons, past questions). |
| 10 | ⏰ SchedulerAgent | Runs timed jobs—queue updates, session timeouts, periodic nudges. |
| 11 | 📢 CommunicatorAgent | Sends all outbound /tell messages, queue notices, and tutorial steps. |
| 12 | 🎲 IdeaSuggesterAgent | Pulls and prioritizes player activity ideas based on mood, rank, or seasonal events. |
| Domain | ZaraSprite Must… | Example Follow-ups |
|---|---|---|
| Ranks | Identify player’s rank & perks; outline upgrade steps. | “Want a breakdown of costs for your next rank?” |
| Commands | Provide syntax, examples, cooldowns. | “Would /sethome help here?” |
| Economy | Explain how to make and spend Denarii. | “Shrine quests and player jobs are great ways to earn Denarii.” |
| Utility | Purpose |
|---|---|
DatabaseManager |
Single SQLite interface for agents. |
Logger |
Static logging (aligns with FileLogger conventions). |
ConfigManager |
Loads timeouts, endpoint URLs, personality toggles. |
EventBus |
In-memory publish/subscribe for fast task hand-off. |
Player: “ZaraSprite, explain player shops to SirMonkeyBoy.”
- InputHandlerAgent logs message →
inbound_messages. - SessionManagerAgent starts or updates session.
- IntentAgent routes as a
tutorial-request. - GuidanceAgent locates
shop-tourTrailstones lesson. - MovementManagerAgent queues TP to
/warp market. - CommunicatorAgent tells player: “Meet me at /warp market and we’ll start!”
- MemoryManagerAgent checks player verbosity preference.
- GuidanceAgent walks through tutorial steps.
- On finish: MemoryManagerAgent logs progress, CommunicatorAgent suggests next Trailstones.
Player: “ZaraSprite how do I earn Denarii?”
- InputHandlerAgent writes to DB.
- SessionManagerAgent manages session, notifies IntentAgent.
- IntentAgent classifies as
economy-question. - ResponseEngineAgent queries wiki via WikiLookupAgent, builds GPT prompt.
- PersonalityAgent applies friendly tone to reply.
- CommunicatorAgent responds:
“Shrine quests and player jobs are great ways to earn Denarii! Want to try one?” - If player accepts, GuidanceAgent launches corresponding Trailstones.
- MemoryManagerAgent logs which ideas or tutorials were offered or completed.
Player: “ZaraSprite, I’m bored. What could I do?”
- InputHandlerAgent logs message.
- SessionManagerAgent manages session state.
- IntentAgent flags as
boredom-request. - IdeaSuggesterAgent queries
fun_suggestionstable.- Filters by active status, player rank, tags.
- Sorts by weight or seasonal/priority flags.
- CommunicatorAgent replies:
“How about visiting the Ice Dragon? There's a bounty posted right now. Type /warp icelair to check it out!” - Optional: includes Trailstones link or clickable action.
| Field | Description |
|---|---|
id |
Unique idea ID |
title |
Activity title (e.g. “Slay the Ice Dragon”) |
player_text |
How ZaraSprite describes it (1–2 chat lines) |
trailstone_id |
Optional ID to launch tutorial |
wiki_url |
Optional link to more info |
tags |
e.g. combat, market, seasonal, chill |
weight |
Ranking score for how often to suggest |
expires_at |
Optional expiry (for events, contests, etc.) |
min_rank |
Optional rank gating |
Alternate table name ideas:
fun_suggestions,boredom_fixes,spark_list,quick_quests,momentum_board.
- Plugin Metrics – analyze usage of Trailstones and interactions.
- EmotionAgent – adjust tone for urgency, celebration, or confusion.
- EconomyAgent – polls ChestDB listings and summarizes price trends.
- McMMOAgent – explains skills, XP levels, and ability progressions.
- IdeaSuggesterAgent – improves boredom-busting responses via DB-backed curation.
Follow the project’s naming & static utility guidelines:
- Class names match module (e.g.,
Chathook.java) - All logging via
FileLogger.logInfo(...)static calls - Keep each class < 200 lines; break out utilities when needed
Happy learning and pathfinding with ZaraSprite 🧡