package com.halestormxv.mysterium.init; import com.halestormxv.mysterium.MysteriumMain; import com.halestormxv.mysterium.recipes.LunarForgeRecipe; import com.halestormxv.mysterium.recipes.LunarForgeRecipeSerializer; import com.halestormxv.mysterium.recipes.ILunarForgeRecipe; import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.IRecipeSerializer; import net.minecraft.item.crafting.IRecipeType; import net.minecraft.util.ResourceLocation; import net.minecraft.util.registry.Registry; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; public class RecipeSerializerInit { //Declarations public static final IRecipeSerializer LUNAR_FORGE_RECIPE_SERIALIZER = new LunarForgeRecipeSerializer(LunarForgeRecipe::new, 300); public static final IRecipeType LUNAR_FORGE_TYPE = registerType(ILunarForgeRecipe.RECIPE_TYPE_ID); //Deferred Creation public static final DeferredRegister> RECIPE_SERIALIZERS = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, MysteriumMain.MOD_ID); //The Recipe Objects public static final RegistryObject> LUNAR_FORGE_SERIALIZER = RECIPE_SERIALIZERS.register("lunarforge", () -> LUNAR_FORGE_RECIPE_SERIALIZER); //Private Methods to make it Work private static class RecipeType> implements IRecipeType { @Override public String toString() { return Registry.RECIPE_TYPE.getKey(this).toString(); } } private static T registerType(ResourceLocation recipeTypeId) { return (T) Registry.register(Registry.RECIPE_TYPE, recipeTypeId, new RecipeType<>()); } }