A Kotlin-based Paper plugin that transforms Minecraft into a living, narrative-driven world through AI-integrated NPCs and voice synthesis.
Fully stable as a Human-in-the-loop (HITL) orchestration tool. It provides a robust narration engine and NPC framework managed by a human Game Master.
Note
This project is designed as the client-side implementation of a broader agentic simulation framework. The architecture is transitioning from a standalone monolith to a decoupled system, where this plugin handles environmental rendering and user interaction while a dedicated simulation engine governs autonomous AI behaviors and world-state logic.
Story is a production-ready Minecraft plugin that enables Dungeon Masters to create immersive narrative experiences with AI-powered NPCs. It allows facilitating D&D-style campaigns with persistent character memory, dynamic dialogue generation, and realistic voice synthesis.
- LLM-Powered Dialogues. NPCs generate contextually-aware responses using language models
- Voice Synthesis. Character-specific voices via ElevenLabs integration
- Persistent Memory. NPCs remember conversations, relationships, and story events
- Rich Character System. Complex personalities, backstories, relationships, and lore
- Location Awareness. NPCs understand their environment and react accordingly
- Multi-Player Support. Handle concurrent conversations across multiple players
- Character Schedules. NPCs follow daily routines and autonomous behaviors
- Plugin Ecosystem. Integrates with Citizens, MythicMobs, and other popular plugins
Roadmap: Evolving into a comprehensive simulation engine. The goal is to transition from manual GM scheduling to a fully autonomous architecture where AI agents manage their own schedules, behaviors, and world-state interactions with minimal human intervention.
- Minecraft 1.21.1
- Paper 1.21.1
- Java 21
- OpenRouter API key (for LLM integration)
- ElevenLabs API key (for voice synthesis) (optional)
- Citizens - NPC management
- MythicMobs (optional) - Advanced mob behaviors
- PlaceholderAPI (optional)
- DecentHolograms (optional)
- ItemsAdder (optional)
- RealisticSeasons (optional)
- ReviveMe (optional)
- TheNewEconomy (optional)
- SuperVanish (optional)
- BetterHealthBar (optional)
Click here to get started.
┌─────────────────────────────────────┐
│ Minecraft Server (Paper) │
│ ┌───────────────────────────────┐ │
│ │ Story Plugin (Kotlin) │ │
│ │ ┌─────────────────────────┐ │ │
│ │ │ Character System │ │ │
│ │ │ - Personalities │ │ │
│ │ │ - Relationships │ │ │
│ │ │ - Memories │ │ │
│ │ └─────────────────────────┘ │ │
│ │ ┌─────────────────────────┐ │ │
│ │ │ Lores & Locations │ │ │
│ │ │ - Keywords & Context │ │ │
│ │ └─────────────────────────┘ │ │
│ │ ┌─────────────────────────┐ │ │
│ │ │ LLM Integration │ │ │
│ │ │ (OpenRouter API) │ │ │
│ │ └─────────────────────────┘ │ │
│ │ ┌─────────────────────────┐ │ │
│ │ │ Voice Synthesis │ │ │
│ │ │ (ElevenLabs) │ │ │
│ │ └─────────────────────────┘ │ │
│ └───────────────────────────────┘ │
└─────────────────────────────────────┘
- Player Interaction: Player speaks in proximity to an NPC
- Context Building: System gathers character personality, recent memories, location data
- LLM Generation: OpenRouter API generates contextually-appropriate response
- Voice Synthesis: ElevenLabs converts text to character-specific voice
- Response Delivery: Audio and text delivered to players
- Memory Update: Conversation stored for future context
Working on semantic search capabilities using Python + vector databases:
- 13,000+ conversation embeddings from gameplay data
- Semantic memory retrieval (vs. simple recent + flagged)
- Improved context relevance for long-term character development
Model Context Protocol server for external LLM access to story data:
- Query character information programmatically
- Retrieve narrative context across sessions
- Enable advanced AI-assisted storytelling tools
Exploring autonomous NPC behaviors with sophisticated cognitive architecture:
- Environmental perception systems
- Goal-driven decision making
- Multi-step reasoning for complex interactions
- Reduced manual DM orchestration
Making minecraft solely a frontend layer, and the simulation layer is in a separate server. Using Redis Pub/Sub for communication.
Run D&D-style adventures with persistent NPC characters who remember player actions and develop relationships over time.
Create settlements with NPCs that have daily schedules, relationships, and goals - making the world feel alive even when not directly interacting.
Let NPCs drive emergent narratives based on player choices and actions, rather than following predetermined scripts.
Facilitate creative roleplay with AI-powered characters that stay in character and respond contextually.
- Issues: GitHub Issues
- Discord: Discord Server
Note: Story is under active development. Production features are stable, but experimental features are subject to change.
This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) License.
