Skip to main content

Overview

The MrpgDatagen class provides the main entry point for data generation in More RPG Library. It implements DataGeneratorEntrypoint and registers various data providers for generating items, spells, tags, models, and translations. This class is located in net.more_rpg_classes.datagen.MrpgDatagen.

Class Structure

public class MrpgDatagen implements DataGeneratorEntrypoint

Main Entry Point

onInitializeDataGenerator

Initializes the data generator and registers all data providers.
@Override
public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) {
    FabricDataGenerator.Pack pack = fabricDataGenerator.createPack();
    pack.addProvider(ItemTagGenerator::new);
    pack.addProvider(SpellGen::new);
    pack.addProvider(SpellTagGenerator::new);
}

Nested Provider Classes

ItemTagGenerator

Generates item tags for RPG Series integration and loot tier categorization.
public static class ItemTagGenerator extends RPGSeriesDataGen.ItemTagGenerator
output
FabricDataOutput
Data output handler
registriesFuture
CompletableFuture<RegistryWrapper.WrapperLookup>
Future registry wrapper lookup

configure Method

Configures item tags with loot tier assignments.
@Override
protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) {
    var tierTag = RPGSeriesItemTags.LootTiers.get(5, RPGSeriesItemTags.LootCategory.ARMORS);
    SmithingIngredients.ENTRIES.forEach(entry -> {
        var tag = getOrCreateTagBuilder(tierTag);
        tag.addOptional(entry.id());
    });
}
This example assigns tier 5 armor loot tags to smithing ingredients.

LangGenerator

Generates language files with translations for items and classes.
public static class LangGenerator extends FabricLanguageProvider
dataOutput
FabricDataOutput
Data output handler
registryLookup
CompletableFuture<RegistryWrapper.WrapperLookup>
Future registry wrapper lookup

generateTranslations Method

Generates translations for items and class-specific text.
@Override
public void generateTranslations(RegistryWrapper.WrapperLookup wrapperLookup, TranslationBuilder translationBuilder) {
    SmithingIngredients.ENTRIES.forEach(entry -> {
        translationBuilder.add(entry.id().toTranslationKey("item"), entry.translations().itemName());
        translationBuilder.add(entry.appliesToTranslationKey(), entry.appliesToClassesTranslation());
    });
}

ModelProvider

Generates item and block models for data generation.
public static class ModelProvider extends FabricModelProvider
output
FabricDataOutput
Data output handler

generateItemModels Method

Generates item models using the GENERATED model type.
@Override
public void generateItemModels(ItemModelGenerator itemModelGenerator) {
    SmithingIngredients.ENTRIES.forEach(entry -> {
        itemModelGenerator.register(entry.item().get(), Models.GENERATED);
    });
}
Block state models are not generated by default (empty implementation).

SpellGen

Generates spell data files for Spell Engine integration.
public static class SpellGen extends SpellGenerator
dataOutput
FabricDataOutput
Data output handler
registryLookup
CompletableFuture<RegistryWrapper.WrapperLookup>
Future registry wrapper lookup

generateSpells Method

Registers all spell entries from MrpgLibSpells.
@Override
public void generateSpells(Builder builder) {
    for (var entry: MrpgLibSpells.entries) {
        builder.add(entry.id(), entry.spell());
    }
}

SpellTagGenerator

Generates spell tags for Arsenal integration and categorization.
public static class SpellTagGenerator extends FabricTagProvider<Spell>
output
FabricDataOutput
Data output handler
registriesFuture
CompletableFuture<RegistryWrapper.WrapperLookup>
Future registry wrapper lookup

configure Method

Configures spell tags based on spell categories.
@Override
protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) {
    MrpgLibSpells.entries.forEach(entry -> {
        for (var category: entry.categories()) {
            var tagKey = TagKey.of(SpellRegistry.KEY, Identifier.of("arsenal", category.toString().toLowerCase()));
            var tag = getOrCreateTagBuilder(tagKey);
            tag.addOptional(entry.id());
        }
    });
}

Usage Example

public class MyModDatagen implements DataGeneratorEntrypoint {
    @Override
    public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) {
        FabricDataGenerator.Pack pack = fabricDataGenerator.createPack();
        
        // Add standard providers
        pack.addProvider(MyModDatagen.ItemTagGenerator::new);
        pack.addProvider(MyModDatagen.SpellGen::new);
        pack.addProvider(MyModDatagen.ModelProvider::new);
    }
}

Smithing Recipes

Generate smithing transform recipes

Advancement Helpers

Create Spell Engine advancements