Skip to main content

Generate data

Most registered content needs JSON files: recipes, block states, item models, loot tables. The engine generates them for you instead of writing them by hand.

What gets generated​

The data generator runs over everything you registered in BundleEvents.registry and writes the matching JSON:

ContentGenerated
Itemitem model + item JSON
Blockblock state, block model, loot table, item model
Reciperecipe JSON

Turn generation off per object when you want to hand-write the file instead:

def light = BlockBuilder.create(id("invisible_light"))
.noItem()
.properties { it.noCollision().strength(-1.0f, 3600000.0f) }
.generateData(false)

Run the generator​

The Generators added via the BundleEvents.dataGen are run when the game starts. Run the game once for them to be generated. No need to for a Gradle task.

Add your own providers​

A custom provider runs during the same pass:

import de.luckymcdev.foundryengine.event.common.BundleEvents

BundleEvents.dataGen { event ->
event.addProvider(new MyProvider(event.getLookup()))
}

MyProvider implements net.minecraft.data.DataProvider. The generated output lands in the same place as the built-in providers.