Okay, here is the full class
package com.alexisotter.star_valley.datagen;
import com.alexisotter.star_valley.StarValley;
import com.alexisotter.star_valley.block.ModBlocks;
import com.alexisotter.star_valley.item.custom.ModItems;
import net.minecraft.data.PackOutput;
import net.minecraft.data.recipes.*;
import net.minecraft.world.item.Items;
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 java.util.List;
import java.util.function.Consumer;
public class ModRecipeProvider extends RecipeProvider implements IConditionBuilder {
private static final List<ItemLike> STEEL_SMELTABLE = List.of(ModItems.STEEL_ALLOY_POWDER.get(), ModBlocks.DEEPSLATE_STEEL_ORE.get());
public ModRecipeProvider(PackOutput pOutput) {
super(pOutput);
}
@Override
protected void buildRecipes(Consumer<FinishedRecipe> pWriter) {
oreSmelting(pWriter, STEEL_SMELTABLE, RecipeCategory.MISC, ModItems.STEEL_INGOT.get(), 0.35f, 300, "steel");
oreBlasting(pWriter, STEEL_SMELTABLE, RecipeCategory.MISC, ModItems.STEEL_INGOT.get(), 0.35f, 150, "steel");
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.STEEL_ALLOY_POWDER.get())
.pattern("CCC")
.pattern("III")
.pattern("III")
.define("I", Items.IRON_INGOT)
.define("C", Items.COAL)
.unlockedBy(getHasName(Items.IRON_INGOT), has(Items.IRON_INGOT))
.save(pWriter);
}
protected static void oreSmelting(Consumer<FinishedRecipe> pFinishedRecipeConsumer, List<ItemLike> pIngredients, RecipeCategory pCategory,
ItemLike pResult, float pExperience, int pCookingTIme, String pGroup) {
oreCooking(pFinishedRecipeConsumer, RecipeSerializer.SMELTING_RECIPE, pIngredients, pCategory,
pResult, pExperience, pCookingTIme, pGroup, "_from_smelting");
}
protected static void oreBlasting(Consumer<FinishedRecipe> pFinishedRecipeConsumer, List<ItemLike> pIngredients, RecipeCategory pCategory,
ItemLike pResult, float pExperience, int pCookingTime, String pGroup) {
oreCooking(pFinishedRecipeConsumer, RecipeSerializer.BLASTING_RECIPE, pIngredients, pCategory,
pResult, pExperience, pCookingTime, pGroup, "_from_blasting");
}
protected static void oreCooking(Consumer<FinishedRecipe> pFinishedRecipeConsumer, RecipeSerializer<? extends AbstractCookingRecipe> pCookingSerializer,
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).group(pGroup).unlockedBy(getHasName(itemlike), has(itemlike)).save(pFinishedRecipeConsumer,
StarValley.MOD_ID + ":" + (pResult) + pRecipeName + "_" + getItemName(itemlike));
}
}
}
here is what the log outputs in IntelliJ:
C:\Users\Alexis
\Modding\forge-1.20.1-47.2.0-star_valley\src\main\java\com\alexisotter\star_valley\datagen\ModRecipeProvider.java:34: error: no suitable method found for define(String,Item)
.define("I", Items.IRON_INGOT)
^
method ShapedRecipeBuilder.define(Character,TagKey<Item>) is not applicable
(argument mismatch; String cannot be converted to Character)
method ShapedRecipeBuilder.define(Character,ItemLike) is not applicable
(argument mismatch; String cannot be converted to Character)
method ShapedRecipeBuilder.define(Character,Ingredient) is not applicable
(argument mismatch; String cannot be converted to Character)