Проблема с кодом для автосоздания файлов крафта

Версия Minecraft
1.21.1
API
Forge
У меня существует файл ModRecipeProvider, который подключен к DataGen'у соответственно и при попытке запуска данного кода выдается одинаковые рецепты. подскажите где мне исправить код, чтобы такого не происходило, все рецепты там важны. (Поясню заранее за последние строки, они нужны для того, что сгенерированные файлы попадали в нужную папку.)
ModRecipeProvider:
package net.nobodygames.myfirstmod.datagen;

import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput;
import net.minecraft.world.item.crafting.AbstractCookingRecipe;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.item.crafting.RecipeSerializer;
import net.minecraft.world.level.ItemLike;
import net.minecraftforge.common.crafting.conditions.IConditionBuilder;
import net.nobodygames.myfirstmod.MyFirstMod;
import net.nobodygames.myfirstmod.block.Modblocks;
import net.nobodygames.myfirstmod.item.Moditems;
import net.minecraft.world.item.crafting.*;
import net.minecraft.data.recipes.RecipeCategory;
import net.minecraft.data.recipes.RecipeOutput;
import net.minecraft.data.recipes.RecipeProvider;
import net.minecraft.data.recipes.SimpleCookingRecipeBuilder;

import java.util.List;
import java.util.concurrent.CompletableFuture;

public class ModRecipeProvider extends RecipeProvider implements IConditionBuilder {

    public ModRecipeProvider(PackOutput pOutput, CompletableFuture<HolderLookup.Provider> pRegistries) {
        super(pOutput, pRegistries);
    }

    @Override
    protected void buildRecipes(RecipeOutput pRecipeOutput) {
        List<ItemLike> ARVIOLITE_SMELTABLES = List.of(Moditems.RAW_ARVIOLITE.get(), Modblocks.ARVIOLITE_ORE.get(), Modblocks.ARVIOLITE_DEEPSLATE_ORE.get());
        List<ItemLike> VERDANITE_SMELTABLES = List.of(Moditems.RAW_VERDANITE.get(), Modblocks.VERDANITE_ORE.get(), Modblocks.VERDANITE_DEEPSLATE_ORE.get());

        nineBlockStorageRecipesRecipesWithCustomUnpacking(
                pRecipeOutput, RecipeCategory.MISC, Moditems.ARVIOLITE_INGOT.get(), RecipeCategory.MISC,
                Modblocks.ARVIOLITE_BLOCK.get(), "arviolite_ingot_from_arviolite_block", "arviolite_ingot");
        nineBlockStorageRecipesRecipesWithCustomUnpacking(
                pRecipeOutput, RecipeCategory.MISC, Moditems.ARVIOLITE_NUGGET.get(), RecipeCategory.MISC,
                Moditems.ARVIOLITE_INGOT.get(), "arviolite_nugget_from_ingot_block", "arviolite_nugget");
        nineBlockStorageRecipesRecipesWithCustomUnpacking(
                pRecipeOutput, RecipeCategory.MISC, Moditems.RAW_ARVIOLITE.get(), RecipeCategory.MISC,
                Modblocks.RAW_ARVIOLITE_BLOCK.get(), "raw_arviolite_ingot_from_raw_arviolite_block", "raw_arviolite");
        nineBlockStorageRecipesRecipesWithCustomUnpacking(
                pRecipeOutput, RecipeCategory.MISC, Moditems.VERDANITE_INGOT.get(), RecipeCategory.MISC,
                Modblocks.VERDANITE_BLOCK.get(), "verdanite_ingot_from_verdanite_block", "verdanite_ingot");
        nineBlockStorageRecipesRecipesWithCustomUnpacking(
                pRecipeOutput, RecipeCategory.MISC, Moditems.VERDANITE_NUGGET.get(), RecipeCategory.MISC,
                Moditems.VERDANITE_INGOT.get(), "verdanite_nugget_from_verdanite_ingot", "verdanite_nugget");
        nineBlockStorageRecipesRecipesWithCustomUnpacking(
                pRecipeOutput, RecipeCategory.MISC, Moditems.RAW_VERDANITE.get(), RecipeCategory.MISC,
                Modblocks.RAW_VERDANITE_BLOCK.get(), "raw_verdanite_ingot_from_raw_verdanite_block", "raw_verdanite");

        nineBlockStorageRecipesWithCustomPacking(
                pRecipeOutput, RecipeCategory.MISC, Moditems.ARVIOLITE_INGOT.get(), RecipeCategory.MISC,
                Modblocks.ARVIOLITE_BLOCK.get(), "arviolite_block_from_arviolite_ingot", "arviolite_block");
        nineBlockStorageRecipesWithCustomPacking(
                pRecipeOutput, RecipeCategory.MISC, Moditems.ARVIOLITE_NUGGET.get(), RecipeCategory.MISC,
                Moditems.ARVIOLITE_INGOT.get(), "arviolite_ingot_from_arviollite_nuggets", "arviolite_ingot");
        nineBlockStorageRecipesWithCustomPacking(
                pRecipeOutput, RecipeCategory.MISC, Moditems.RAW_ARVIOLITE.get(), RecipeCategory.MISC,
                Modblocks.RAW_ARVIOLITE_BLOCK.get(), "raw_arviolite_block_from_raw_arviolite", "raw_arviolite_block");
        nineBlockStorageRecipesWithCustomPacking(
                pRecipeOutput, RecipeCategory.MISC, Moditems.VERDANITE_INGOT.get(), RecipeCategory.MISC,
                Modblocks.VERDANITE_BLOCK.get(), "verdanite_block_from_verdanite_ingot", "verdanite_block");
        nineBlockStorageRecipesWithCustomPacking(
                pRecipeOutput, RecipeCategory.MISC, Moditems.VERDANITE_NUGGET.get(), RecipeCategory.MISC,
                Moditems.VERDANITE_INGOT.get(), "verdanite_ingot_from_verdanite_nuggets", "verdanite_ingot");
        nineBlockStorageRecipesWithCustomPacking(
                pRecipeOutput, RecipeCategory.MISC, Moditems.RAW_VERDANITE.get(), RecipeCategory.MISC,
                Modblocks.RAW_VERDANITE_BLOCK.get(), "raw_verdanite_block_from_raw_verdanite", "raw_verdanite_block");



        //ShapedRecipeBuilder.shaped(RecipeCategory.MISC, Modblocks.RAW_VERDANITE_BLOCK.get())
        //        .pattern("AAA")
        //       .pattern("AAA")
        //        .pattern("AAA")
        //        .define('A', Moditems.RAW_VERDANITE.get())
        //        .unlockedBy(getHasName(Moditems.RAW_VERDANITE.get()), has(Moditems.RAW_VERDANITE.get())).save(pRecipeOutput)
        //;


        //ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, Moditems.ARVIOLITE_INGOT.get(), 9)
        //        .requires(Modblocks.ARVIOLITE_BLOCK.get())
        //        .unlockedBy(getHasName(Modblocks.ARVIOLITE_BLOCK.get()), has(Modblocks.ARVIOLITE_BLOCK.get())).save(pRecipeOutput)
        //;


        oreSmelting(pRecipeOutput, ARVIOLITE_SMELTABLES, RecipeCategory.MISC, Moditems.ARVIOLITE_INGOT.get(), 0.25f, 200, "arviolite_ingot");
        oreBlasting(pRecipeOutput, ARVIOLITE_SMELTABLES, RecipeCategory.MISC, Moditems.ARVIOLITE_INGOT.get(), 0.25f, 100, "arviolite_ingot");
        oreSmelting(pRecipeOutput, VERDANITE_SMELTABLES, RecipeCategory.MISC, Moditems.VERDANITE_INGOT.get(), 0.25f, 200, "verdanite_ingot");
        oreBlasting(pRecipeOutput, VERDANITE_SMELTABLES, RecipeCategory.MISC, Moditems.VERDANITE_INGOT.get(), 0.25f, 100, "verdanite_ingot");
    }

    protected static void oreSmelting(RecipeOutput recipeOutput, List<ItemLike> pIngredients, RecipeCategory pCategory, ItemLike pResult,
                                      float pExperience, int pCookingTIme, String pGroup) {
        oreCooking(recipeOutput, RecipeSerializer.SMELTING_RECIPE, SmeltingRecipe::new, pIngredients, pCategory, pResult,
                pExperience, pCookingTIme, pGroup, "_from_smelting");
    }

    protected static void oreBlasting(RecipeOutput recipeOutput, List<ItemLike> pIngredients, RecipeCategory pCategory, ItemLike pResult,
                                      float pExperience, int pCookingTime, String pGroup) {
        oreCooking(recipeOutput, RecipeSerializer.BLASTING_RECIPE, BlastingRecipe::new, pIngredients, pCategory, pResult,
                pExperience, pCookingTime, pGroup, "_from_blasting");
    }

    protected static <T extends AbstractCookingRecipe> void oreCooking(RecipeOutput recipeOutput, RecipeSerializer<T> pCookingSerializer, AbstractCookingRecipe.Factory<T> factory,
                                                                       List<ItemLike> pIngredients, RecipeCategory pCategory, ItemLike pResult, float pExperience, int pCookingTime, String pGroup, String pRecipeName) {
        for(ItemLike itemlike : pIngredients) {
            SimpleCookingRecipeBuilder.generic(Ingredient.of(itemlike), pCategory, pResult, pExperience, pCookingTime, pCookingSerializer, factory).group(pGroup).unlockedBy(getHasName(itemlike), has(itemlike))
                    .save(recipeOutput, MyFirstMod.MOD_ID + ":" + getItemName(pResult) + pRecipeName + "_" + getItemName(itemlike));
        }
    }
}
 
Краш-лог
-
Краш-лог:
-
Последнее редактирование:
Назад
Сверху