Skip to content

Commit f54ea2f

Browse files
committed
feat(article): Expand Beet/StewBeet section in Datapack Generators article, add detailed examples, refine descriptions, clarify comparisons.
1 parent 6b677d2 commit f54ea2f

File tree

1 file changed

+35
-30
lines changed

1 file changed

+35
-30
lines changed

src/jsMain/resources/markdown/articles/DatapackGenerators.md

Lines changed: 35 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ title: Datapack Generators
44
description: A modern overview of datapack generators and why Kore stands out for ambitious projects.
55
keywords: minecraft, datapack, generators, kore, sandstone, beet, stewbeet
66
date-created: 2025-03-02
7-
date-modified: 2026-02-14
7+
date-modified: 2026-02-15
88
root: .layouts.ArticleLayout
99
routeOverride: /articles/datapack-generators/index
1010
---
@@ -127,34 +127,39 @@ LootTable("chests/ruby_cache", {
127127

128128
**When to choose it?** If your team is fully JavaScript/TypeScript and wants a native Node workflow. **When to prefer Kore?** When stability, completeness, and long-term maintenance matter most.
129129

130-
## Beet / StewBeet – Python Asset Pipeline
131-
132-
Beet is a **pack development kit**: an extensible Python pipeline that assembles datapack and resource pack. StewBeet builds on top with a “definitions to generation” approach, perfect for producing dozens of items, blocks, recipes, and language files without drowning in JSON.
133-
134-
### Example: a StewBeet block definition (YAML)
135-
136-
```yaml
137-
blocks:
138-
ruby_ore:
139-
type: custom_block
140-
material: stone
141-
hardness: 3.0
142-
textures:
143-
all: "block/ruby_ore"
144-
drops:
145-
- item: "stewbeet:ruby"
146-
min: 1
147-
max: 3
148-
fortune: true
149-
recipe:
150-
- " S "
151-
- "R R"
152-
- " S "
153-
key:
154-
S: minecraft:stone
155-
R: minecraft:redstone
156-
lang:
157-
en_us: "Ruby Ore"
130+
## Beet / StewBeet – Python Pack Pipeline and Automation
131+
132+
Beet is a **pack development kit**: a Python library and toolchain that unifies datapack and resource pack tooling into a single pipeline. It provides primitives to read, edit, and merge packs, and a plugin system to build custom workflows.
133+
134+
StewBeet is a **framework built on top of Beet** focused on automation for datapacks. It ships templates and a large set of generators so you can define content and let the framework produce the boilerplate.
135+
136+
Key StewBeet capabilities (from the project docs/README):
137+
138+
- Automatic resource pack file generation (models, textures, sounds) with the ability to override assets.
139+
- Versioned load and clock functions (tick/second/minute).
140+
- Loot tables for definitions and a generated `_give_all` helper.
141+
- Automatic interactive in-game manual and language file generation.
142+
- Function headers and vanilla-style recipe unlocking helpers.
143+
- Integrations with Smithed Custom Blocks/Crafter/Furnace NBT Recipes, Bookshelf, Smart Ore Generation, ItemIO, and Common Signals.
144+
- Merging packs with Smithed Weld and support for external library datapacks.
145+
146+
### Example: define a custom block (StewBeet)
147+
148+
```python
149+
# setup_definitions.py
150+
Block(
151+
id="super_stone",
152+
vanilla_block=VanillaBlock(id="minecraft:cobblestone", apply_facing=False),
153+
recipes=[
154+
# Examples of crafting recipes (shaped and shapeless), no need to specify result -> will default to the Item id
155+
CraftingShapedRecipe(category="blocks", shape=["XXX", "XXX", "XXX"], ingredients={"X": Ingr("minecraft:stone")}),
156+
CraftingShapelessRecipe(category="blocks", ingredients=9 * [Ingr("minecraft:deepslate")]),
157+
158+
# Example of recipe with vanilla result (not custom item)
159+
SmeltingRecipe(experience=0.1, cookingtime=200, category="blocks", ingredient=Ingr("super_stone"), result=Ingr("minecraft:diamond")),
160+
BlastingRecipe(experience=0.1, cookingtime=100, category="blocks", ingredient=Ingr("super_stone"), result=Ingr("minecraft:diamond")),
161+
],
162+
)
158163
```
159164

160165
### Example: Beet pipeline hook (Python)
@@ -169,7 +174,7 @@ def beet_default(ctx: Context):
169174
}
170175
```
171176

172-
**When to choose it?** Content-heavy projects, mass asset production, automation of models/loot/recipes. **Why it complements Kore:** Kore handles logic and systems, Beet/StewBeet handles assets. Together, they are extremely effective.
177+
**When to choose it?** Use Beet when you want a flexible Python pipeline to assemble packs and integrate generators. Choose StewBeet if you want a batteries-included automation layer for assets, loot, manuals, and integrations. **Why it complements Kore:** Kore can handle game logic in Kotlin while Beet/StewBeet can cover asset and pipeline automation.
173178

174179
## JMC – Compact Scripting Language
175180

0 commit comments

Comments
 (0)