filename:
neoforgedatagen/src/main/java/rearth/oritech/neoforgegen/datagen/RecipeGenerator.java
branch:
1.21
back to repo
package rearth.oritech.neoforgegen.datagen;
import static rearth.oritech.api.recipe.util.RecipeHelpers.of;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import appeng.api.ids.AEConstants;
import blusunrize.immersiveengineering.ImmersiveEngineering;
import com.buuz135.industrial.utils.Reference;
import com.enderio.core.EnderCore;
import com.simibubi.create.Create;
import cy.jdkdigital.productivemetalworks.ProductiveMetalworks;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import me.desht.pneumaticcraft.api.lib.Names;
import me.jddev0.ep.api.EPAPI;
import mekanism.common.Mekanism;
import mekanism.generators.common.MekanismGenerators;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput;
import net.minecraft.data.recipes.RecipeOutput;
import net.minecraft.data.recipes.RecipeProvider;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.material.Fluids;
import net.neoforged.neoforge.common.conditions.IConditionBuilder;
import net.neoforged.neoforge.common.conditions.WithConditions;
import owmii.powah.Powah;
import rearth.oritech.api.recipe.CentrifugeRecipeBuilder;
import rearth.oritech.api.recipe.CentrifugeFluidRecipeBuilder;
import rearth.oritech.init.ItemContent;
import rearth.oritech.init.TagContent;
import rearth.oritech.neoforgegen.datagen.compat.ActuallyAdditionsRecipeGenerator;
import rearth.oritech.neoforgegen.datagen.compat.AppliedEnergistics2RecipeGenerator;
import rearth.oritech.neoforgegen.datagen.compat.CreateRecipeGenerator;
import rearth.oritech.neoforgegen.datagen.compat.EnderIORecipeGenerator;
import rearth.oritech.neoforgegen.datagen.compat.EnergizedPowerRecipeGenerator;
import rearth.oritech.neoforgegen.datagen.compat.ImmersiveEngineeringRecipeGenerator;
import rearth.oritech.neoforgegen.datagen.compat.IndustrialForegoingRecipeGenerator;
import rearth.oritech.neoforgegen.datagen.compat.MekanismRecipeGenerator;
import rearth.oritech.neoforgegen.datagen.compat.MekanismGeneratorsRecipeGenerator;
import rearth.oritech.neoforgegen.datagen.compat.PneumaticcraftRecipeGenerator;
import rearth.oritech.neoforgegen.datagen.compat.PowahRecipeGenerator;
import rearth.oritech.neoforgegen.datagen.compat.ProductiveMetalworksRecipeGenerator;
public class RecipeGenerator extends RecipeProvider implements IConditionBuilder {
PackOutput packOutput;
CompletableFuture<HolderLookup.Provider> registries;
public RecipeGenerator(PackOutput output, CompletableFuture<HolderLookup.Provider> registries) {
super(output, registries);
this.packOutput = output;
this.registries = registries;
}
@Override
protected void buildRecipes(RecipeOutput exporter) {
ActuallyAdditionsRecipeGenerator.generateRecipes(exporter.withConditions(this.modLoaded(ActuallyAdditions.MODID)));
AppliedEnergistics2RecipeGenerator.generateRecipes(exporter.withConditions(this.modLoaded(AEConstants.MOD_ID)));
CreateRecipeGenerator.generateRecipes(packOutput, registries, exporter.withConditions(this.modLoaded(Create.ID)));
EnderIORecipeGenerator.generateRecipes(exporter.withConditions(this.modLoaded(EnderCore.MOD_ID)), this);
EnergizedPowerRecipeGenerator.generateRecipes(exporter.withConditions(this.modLoaded(EPAPI.MOD_ID)));
ImmersiveEngineeringRecipeGenerator.generateRecipes(exporter.withConditions(this.modLoaded(ImmersiveEngineering.MODID)));
IndustrialForegoingRecipeGenerator.generateRecipes(exporter.withConditions(this.modLoaded(Reference.MOD_ID)));
MekanismRecipeGenerator.generateRecipes(exporter.withConditions(this.modLoaded(Mekanism.MODID)));
MekanismGeneratorsRecipeGenerator.generateRecipes(exporter.withConditions(this.modLoaded(MekanismGenerators.MODID)));
PneumaticcraftRecipeGenerator.generateRecipes(exporter.withConditions(this.modLoaded(Names.MOD_ID)));
PowahRecipeGenerator.generateRecipes(exporter.withConditions(this.modLoaded(Powah.MOD_ID)));
ProductiveMetalworksRecipeGenerator.generateRecipes(exporter.withConditions(this.modLoaded(ProductiveMetalworks.MODID)));
// Uranium clumps don't exist in Oritech, but Oritech should still be able to do something with them if they're added by another mod (like Create).
// Also added in Fabric datagen with Fabric load conditions, but the Fabric versions should be excluded from the Neoforge build
CentrifugeRecipeBuilder.build().input(TagContent.URANIUM_CLUMPS).result(ItemContent.URANIUM_DUST, 2).result(ItemContent.SMALL_PLUTONIUM_DUST).timeMultiplier(0.5f).export(exporter.withConditions(this.not(this.tagEmpty(TagContent.URANIUM_CLUMPS))), "compat/clump/crushed_uranium");
CentrifugeRecipeBuilder.build().input(TagContent.URANIUM_CLUMPS).result(ItemContent.URANIUM_DUST, 3).fluidInput(Fluids.WATER).timeMultiplier(0.5f).export(exporter.withConditions(this.not(this.tagEmpty(TagContent.URANIUM_CLUMPS))), "compat/clumpwet/crushed_uranium");
}
}