package dev.zxq5 import dev.zxq5.items.ModItems import dev.zxq5.items.template.GenericItemSet import net.fabricmc.api.ModInitializer import net.fabricmc.fabric.api.datagen.v1.FabricPackOutput import net.fabricmc.fabric.api.datagen.v1.provider.FabricLanguageProvider import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagsProvider import net.minecraft.core.HolderLookup import net.minecraft.core.registries.BuiltInRegistries import net.minecraft.core.registries.Registries import net.minecraft.data.recipes.RecipeOutput import net.minecraft.data.recipes.RecipeProvider import net.minecraft.resources.ResourceKey import org.slf4j.LoggerFactory import java.util.concurrent.CompletableFuture object Fantasysmp : ModInitializer { const val MOD_ID = "fantasysmp" private val logger = LoggerFactory.getLogger("fantasysmp") override fun onInitialize() { logger.info("Hello Fabric world!") ModItems.onLoad(); } } class ModRecipeProvider( output: FabricPackOutput, registriesFuture: CompletableFuture ) : FabricRecipeProvider(output, registriesFuture) { override fun createRecipeProvider( registries: HolderLookup.Provider, exporter: RecipeOutput ): RecipeProvider { return object : RecipeProvider(registries, exporter) { override fun buildRecipes() { GenericItemSet.all.forEach { it.generateRecipes(registries, exporter) } } } } override fun getName(): String = "Fantasysmp Recipes" } class ModItemTagProvider(output: FabricPackOutput, registriesFuture: CompletableFuture) : FabricTagsProvider.ItemTagsProvider(output, registriesFuture) { override fun addTags(provider: HolderLookup.Provider) { GenericItemSet.all.forEach { it.generateItemTags(provider).forEach { (item, keys) -> keys.forEach { key -> builder(key) .add(ResourceKey.create(Registries.ITEM, BuiltInRegistries.ITEM.getKey(item))) } } } } } class ModLanguageProvider( output: FabricPackOutput, registriesFuture: CompletableFuture) : FabricLanguageProvider(output, registriesFuture) { override fun generateTranslations( registryLookup: HolderLookup.Provider, translationBuilder: TranslationBuilder ) { GenericItemSet.all.forEach { it.generateTranslations(translationBuilder) } } }