Skip to content

Data Generation

FoundryEngine automatically creates asset and data files (models, recipes, loot tables, etc.) from your builders. This runs during Minecraft's startup phases.

How it works

BundleDataGenerator
    ├── runAll() — runs for all loaded bundles
    └── run(Bundle) — runs for a single bundle

EngineDataGenerator
    ├── addProvider(DataProvider) — add a data provider
    └── run() — execute all providers

Generated output goes to <gameDir>/FoundryEngine/temp/instances/<hash>/bundles/.

What gets generated

Server-side

ProviderGenerates
EngineAdvancementProviderAdvancement JSONs
EngineLootTableProviderLoot table JSONs
EngineRecipePrioritiesProviderRecipe priorities
EngineBlockTagsProviderBlock tag JSONs
EngineItemTagsProviderItem tag JSONs

Client-side

ProviderGenerates
EngineLanguageProvideren_us.json language file
EngineModelProviderBlock/item model JSONs
EngineParticleDescriptionProviderParticle description JSONs
EngineSoundDefinitionsProvidersounds.json
EngineEquipmentAssetProviderEquipment asset data

Per-builder toggle

Each builder has generateData(boolean) to control auto-generation:

groovy
BlockBuilder.create(id("custom_block"))
    .generateData(false)

Default is true for all builders.

Custom providers

groovy
BundleEvents.dataGen { event ->
    event.addProvider(myDataProvider)
}

DynamicPackRepository

Generated data is served to the game as a virtual resource/data pack, so assets are immediately available without restarting.

Next

FoundryEngine is a work-in-progress. Documentation may change.