Cursor for Minecraft
We built Cursor for Minecraft. Instead of AI that helps you write code, you get AI agents that actually play the game with you.
https://github.com/user-attachments/assets/23f0ccdd-7a7a-4d49-9dd9-215ebf67265a
Steve acts as an Agent, or a series of Agents if you choose to employ all of them. You describe what you want, and he understands the context and executes. Same concept here, except instead of code editing, you get embodied Steves that operate in your Minecraft world.
The interface is simple: press K to open a panel, type what you need. The agents handle the interpretation, planning, and execution. Say "mine some iron" and the agent reasons about where iron spawns, navigates to the appropriate depth, locates ore veins, and extracts the resources. Ask for a house and it considers the available materials, generates an appropriate structure, and builds it block by block.
What makes this interesting is the multi-agent coordination. When multiple Steves work on the same task, they don't just independently execute, they actively coordinate to avoid conflicts and optimize workload distribution. Tell three agents to build a castle and they'll automatically partition the structure, divide sections among themselves, and parallelize the construction.
The agents aren't following predefined scripts. They're operating off natural language instructions, which means:
You need:
Installation:
mods folderconfig/steve-common.toml.example to config/steve-common.tomlConfig example:
[openai]
apiKey = "your-api-key-here"
model = "gpt-3.5-turbo"
maxTokens = 1000
temperature = 0.7Then spawn a Steve with /steve spawn Bob and press K to start giving commands.
"mine 20 iron ore"
"build a house near me"
"help Alex with the tower"
"defend me from zombies"
"follow me"
"gather wood from that forest"
"make a cobblestone platform here"
"attack that creeper"The agents are pretty good at figuring out what you mean. You don't need to be super specific.
Each Steve runs an autonomous agent loop that processes natural language commands through an LLM, converts them into structured actions, and executes them using Minecraft's game mechanics. The system uses a direct action execution model optimized for real-time gameplay rather than a traditional ReAct framework.
Core execution flow:
LLM Integration (com.steve.ai.llm)
Action System (com.steve.ai.action)
Structure Generation (com.steve.ai.structure)
Multi-Agent Collaboration (com.steve.ai.action)
Memory & Context (com.steve.ai.memory)
Code Execution (com.steve.ai.execution)
Tick-Based Execution
Actions run incrementally across multiple game ticks rather than blocking. This prevents server freezes and maintains responsiveness. Each action's tick() method does minimal work per frame and tracks progress internally.
Direct Action Execution (Not Traditional ReAct) While inspired by ReAct, we use direct action execution for real-time gameplay. The LLM generates complete action sequences upfront rather than iterative observe-think-act cycles. This reduces API calls and latency, critical for game responsiveness.
Multi-Agent Coordination Collaborative builds use deterministic spatial partitioning. Structures are divided into rectangular sections based on agent count. Each Steve claims a section atomically, preventing conflicts. The manager is fully server-side using ConcurrentHashMap for thread safety.
Memory Management Context windows are managed by pruning old messages while keeping recent exchanges and critical world state. Each LLM call includes: conversation history (last 10 exchanges), current task details, Steve's position/inventory, and known world features.
Entity Registration Steves are custom EntityType registered via Forge's deferred registry system. They extend PathfinderMob for vanilla pathfinding integration and implement custom goals for AI behavior.
Event Hooks
GUI Implementation Custom overlay GUI activated with K key. Uses Minecraft's Screen class with custom rendering. Text input forwarded to TaskPlanner on submission.
Standard Gradle workflow:
git clone https://github.com/YuvDwi/Steve.git
cd Steve
./gradlew buildOutput JAR will be in build/libs/. To test in development:
./gradlew runClientProject Structure:
src/main/java/com/steve/ai/
├── entity/ # Steve entity, spawning, lifecycle
├── llm/ # LLM clients, prompt building, response parsing
├── action/ # Action classes and collaborative build manager
├── structure/ # Procedural generation and template loading
├── memory/ # Context management and world knowledge
├── execution/ # JavaScript code execution engine
├── client/ # GUI overlay
└── command/ # Minecraft commands (/steve spawn, etc)We welcome contributions! Here's how to get started:
logs/latest.logFork and clone
git clone https://github.com/YourUsername/Steve.git
cd SteveCreate feature branch
git checkout -b feature/your-feature-nameMake changes
./gradlew build && ./gradlew runClientSubmit PR
Adding New Actions:
BaseAction in com.steve.ai.action.actionstick(), isComplete(), onCancel()PromptBuilder.java to inform LLM about new actionEdit config/steve-common.toml:
[llm]
provider = "groq" # Options: openai, groq, gemini
[openai]
apiKey = "sk-..."
model = "gpt-3.5-turbo"
maxTokens = 1000
temperature = 0.7
[groq]
apiKey = "gsk_..."
model = "llama3-70b-8192"
maxTokens = 1000
[gemini]
apiKey = "AI..."
model = "gemini-1.5-flash"
maxTokens = 1000Performance Tips:
The agents are only as smart as the LLM. GPT-3.5 works but makes occasional weird decisions. GPT-4 is noticeably better at multi-step planning.
No crafting yet. Agents can mine and place blocks but can't craft tools. We're working on it.
Actions are synchronous. If a Steve is mining, it can't do anything else until done. Planning to add proper async execution.
Memory resets on restart. Right now context only persists during a play session. We're adding persistent memory with a vector DB.
Planned features:
Goal is to make this actually useful for survival gameplay, not just a tech demo.
We wanted to see if the Cursor model could work outside of coding. Turns out it translates pretty well. Same principles: deep environment integration, clear action primitives, persistent context.
Minecraft is actually a good testbed for agent research. Complex enough to be interesting, constrained enough that agents can actually succeed.
Plus it's just fun watching AIs build castles while you explore.
MIT
Found a bug? Open an issue: https://github.com/YuvDwi/Steve/issues
No open issues yet, or sync has not completed.