Jun 21, 2025

Vibe-coding Minecraft mods

and the lessons learned

If you aren't familiar with the extent of the Minecraft modding scene, it's big. There are mods with more thought put into them than many AAA games.

The best example is Create:

Note that trains (and windmills and assembly lines) are not built into Minecraft.

So I was pretty lost when I started playing for the first time in a long time.

Table of Contents

The Problem

As some friends and I started playing the Divine Journey 2 modpack, I was overwhelmed by the number of modded blocks and items.

To give you a taste, there are 54 "generators" from 16 mods:

Coal Generator
Leaf-Eating Generator
Oil Generator
Armor Generator
Chaotic Armor Generator
Generator
Particle Generator
Combustion Generator
Ender Generator
Enhanced Combustion Generator
Frank'n'Zombie Generator
Simple Sterling Generator
Simple Stirling Generator (Decoration)
Stirling Generator (decorative)
Stirling Generator
Zombie Generator
Culinary Generator
Death Generator
Disenchantmenet Generator
Ender Generator
Explosive Generator
Frosty Generator
Furnace Generator
Halitosis Generator
Heated Redstone Generator
Magmatic Generator
Netherstar Generator
Overclocked Generator
Pink Generator
Potion Generator
Rainbow Generator (bottom half)
Rainbow Generator (top half)
Rainbow Generator
Slimey Generator
Survival Generator
Turbine Creative Steam Generator (legacy)
Coal Generator
Geothermal Generator
Generator Block
Thermelectric Generator
Biofuel Generator
Petrified Fuel Generator
Pitiful Fuel Generator
Protein
Generator
Electrostatic Generator
RF Lightning Generator
Coal Generator
Endergenic Generator
Phased Field Generator
Vis Generator
Impetus Generator
Stability Field Generator
Vis Regenerator
I built this UI with v0 and extracted the images from a screenshot using o4-mini with toolcalling.

Finding them around our base was a pain. My friends knew where everything was, and would be telling me things like "put coal in the hopper that feeds the Coke Oven into the Blast Furnace by the biodiesel setup"

There's one obvious solution:

The Solution: more mods

I ended up creating two mods with a mix of OpenAI Codex (the cli), Claude Code, and Cursor to help me out:

  • TileFinder (GitHub, CurseForge): Search, filter, and easily locate TileEntities (fancy/complex blocks) from all mods
  • Unnamed Project Management mod: a multiplayer mod project management mod

I suffered no harm wrote no Java in the making of this project. More information on the models/coding experience is below; you can collapse the details if you aren't interested in the mods.

TileFinder

Click to toggle

You can bind a keybind to open a UI to filter and search for specific blocks in your vicinity:

Screenshot of the TileFinder UI grouped by mod
Blocks within 32 blocks from me grouped by their mod
When you select an item, a (fully configurable) path is drawn to it.TileFinder

Unnamed Project Management mod

Click to toggle

My friends and I have a lot of tasks to do in this modpack (it has a big quest system with progression), and keeping track of the items we need or the subtasks necessary got annoying. At one point, my friend semi-jokingly suggested using something like Jira. That's when you know its bad. In their defense, they didn't know about Linear yet.

I assumed this mod would be more difficult due to multiplayer support, I wanted full realtime sync. Yet again, nothing to worry about. Adding support was almost a perfect one-shot. o3 missed (or did not know it had to) @annotate a function that was supposed to be client-side only; it fixed the issue on its own after running a build. I recall the error message not mentioning _how_ to fix the issue, but thankfully the LLM knew the proper annotation.

Below you can see a video of two clients in sync:

There are also slash commands you can use instead of interacting with the GUI.

Learnings for vibecoding

  • o3 is a great agentic model. It's price reduction makes it cheaper than Sonnet 4.
  • Sonnet did a good job when I tried it too. But I felt like it generally did a worse job using tools to e.g. explore the code base. The exception is when inside Claude Code, Sonnet did great work.
  • Write rules files when you see common mistakes. I noticed all models kept grepping the codebase and getting back a lot of built/unnecessary files, which unnecesarily takes up context. Adding rules files (files automatically injected into the context) lets you address these issues.
  • OpenAI Codex as a CLI is good-not-great. I didn't try their web offering, which is probably better, but I'm not sure you can setup an entire environment for it to have a real agentic feedback loop.
  • I could have made every mod in its entirety with any of the tools I tried. But perhaps obviously Cursor + o3 was by far the most effective combo for me as a developer.

Learnings for developing

  • Errors need to suggest fixes.
    • If there is no one clear fix, they can suggest multiple solutions, or explain in plain-text why the issue occurred. They should do that second part anyways
  • More (AI) tooling is needed around targeting specific package versions.
    • Minecraft is tricky because it has many versions with many breaking changes, and the LLMs are trained across all the versions. I think one reason I had a lot of success is I was targeting a fairly old version of Minecraft known for its mods (1.12.2).
    • I've had this same issue at work with npm packages and libraries. Tools/MCPs like Context7 can help substantially with this.

Both mods (total) cost me about $8 in usage.


Thanks for reading! If you want to see future content, you can follow me on Twitter or subscribe to my RSS feed.