Define a block in Python.
Get the whole datapack.
StewBeet is a Beet framework for Minecraft datapacks. Describe your content once. Models, recipes, loot tables, translations and an in-game manual are all built from it on every compile.
MIT licensed ยท Python 3.14+ ยท no account needed
v3.6.5
released 13 days ago
23
public projects built with it
50
GitHub stars
Why this exists
One custom block, written by hand, is at least eight files across two packs in four formats. Miss one and nothing errors. The block just quietly never drops.
By hand
- function/place.mcfunctionplacement
- function/destroy.mcfunctiondestruction
- loot_table/block.jsondrops
- recipe/block.jsonvanilla recipe
- function/calls/crafter.mcfunctionNBT recipe
- items/block.jsonitem definition
- models/item/block.jsonmodel
- lang/en_us.jsontranslation key
With StewBeet
- definitions/blocks.py
The other eight are derived from it on every build, so they cannot drift apart.
A definition is a name, some values and a list of recipes. If you can read datapack JSON, you can read one.
Your datapack documents itself
Every item you define gets a manual page: its recipe drawn from the ingredients you declared, its description, and clickable navigation between categories. Players craft the book in-game and it is already up to date.
- Recipes rendered from your definitions, not screenshotted by hand
- New item today, new manual page on the next build
- Custom pages, hooks and button layouts when you need them
What you stop writing
Six things StewBeet generates from definitions you already wrote.
23 public projects are built with StewBeet
Two of them at scale, with the source you can read.

A large progression pack: custom ore tiers, blocks, paintings and a full in-game manual.
774
.mcfunction
1,331
.json
971
textures
StewBeet did not get here alone
Behind the magic is a whole family of open-source tools, made by people who love datapacks as much as you do.
The pipeline. One build for the datapack and the resource pack.
The compiler. Type-checked commands, and real Python inside a function.
The renderer. Every item and block drawn to an image, in pure Python.
The conventions. Crafter, Custom Blocks and Weld, wired up for you.
The toolbox. Call a module in a function and the build fetches it.
Pulled in automatically: each one is downloaded and version-checked only when a function of yours references it.
From nothing to a built pack in four commands
Prefer uv? Every template ships a pyproject.toml, so uvx stewbeet init then uv run stewbeet build covers all four steps, Python included.
Start from a template
Three starting points. The Basic template is the one to pick if you are unsure.
Which one?
Take the Basic template. It wires up every plugin with commented configuration and no example content, so you add only what your project needs.
Define a block. Build the pack.
The Basic template wires up every plugin with commented configuration and no example content to delete.
MIT licensed ยท Python 3.14+ ยท no account needed

