Search in sources :

Example 1 with NotCondition

use of net.minecraftforge.common.crafting.conditions.NotCondition in project TinkersConstruct by SlimeKnights.

the class SmelteryRecipeProvider method addAlloyRecipes.

private void addAlloyRecipes(Consumer<FinishedRecipe> consumer) {
    String folder = "smeltery/alloys/";
    // alloy recipes are in terms of ingots
    // tier 3
    // slimesteel: 1 iron + 1 skyslime + 1 seared brick = 2
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenSlimesteel.get(), FluidValues.INGOT * 2).addInput(TinkerFluids.moltenIron.getForgeTag(), FluidValues.INGOT).addInput(TinkerFluids.skySlime.getLocalTag(), FluidValues.SLIMEBALL).addInput(TinkerFluids.searedStone.getLocalTag(), FluidValues.BRICK).save(consumer, prefix(TinkerFluids.moltenSlimesteel, folder));
    // amethyst bronze: 1 copper + 1 amethyst = 1
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenAmethystBronze.get(), FluidValues.INGOT).addInput(TinkerFluids.moltenCopper.getForgeTag(), FluidValues.INGOT).addInput(TinkerFluids.moltenAmethyst.getLocalTag(), FluidValues.GEM).save(consumer, prefix(TinkerFluids.moltenAmethystBronze, folder));
    // rose gold: 3 copper + 1 gold = 4
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenRoseGold.get(), FluidValues.INGOT * 4).addInput(TinkerFluids.moltenCopper.getForgeTag(), FluidValues.INGOT * 3).addInput(TinkerFluids.moltenGold.getForgeTag(), FluidValues.INGOT).save(consumer, prefix(TinkerFluids.moltenRoseGold, folder));
    // pig iron: 1 iron + 1 blood + 1 clay = 2
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenPigIron.get(), FluidValues.INGOT * 2).addInput(TinkerFluids.moltenIron.getForgeTag(), FluidValues.INGOT).addInput(TinkerFluids.blood.getLocalTag(), FluidValues.SLIMEBALL).addInput(TinkerFluids.moltenClay.getLocalTag(), FluidValues.BRICK).save(consumer, prefix(TinkerFluids.moltenPigIron, folder));
    // obsidian: 1 water + 1 lava = 2
    // note this is not a progression break, as the same tier lets you combine glass and copper for same mining level
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenObsidian.get(), FluidValues.GLASS_BLOCK / 10).addInput(Fluids.WATER, FluidAttributes.BUCKET_VOLUME / 20).addInput(Fluids.LAVA, FluidAttributes.BUCKET_VOLUME / 10).save(consumer, prefix(TinkerFluids.moltenObsidian, folder));
    // tier 4
    // queens slime: 1 cobalt + 1 gold + 1 magma cream = 2
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenQueensSlime.get(), FluidValues.INGOT * 2).addInput(TinkerFluids.moltenCobalt.getForgeTag(), FluidValues.INGOT).addInput(TinkerFluids.moltenGold.getForgeTag(), FluidValues.INGOT).addInput(TinkerFluids.magma.getForgeTag(), FluidValues.SLIMEBALL).save(consumer, prefix(TinkerFluids.moltenQueensSlime, folder));
    // manyullyn: 3 cobalt + 1 debris = 3
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenManyullyn.get(), FluidValues.INGOT * 4).addInput(TinkerFluids.moltenCobalt.getForgeTag(), FluidValues.INGOT * 3).addInput(TinkerFluids.moltenDebris.getLocalTag(), FluidValues.INGOT).save(consumer, prefix(TinkerFluids.moltenManyullyn, folder));
    // heptazion: 2 copper + 1 cobalt + 1/4 obsidian = 2
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenHepatizon.get(), FluidValues.INGOT * 2).addInput(TinkerFluids.moltenCopper.getForgeTag(), FluidValues.INGOT * 2).addInput(TinkerFluids.moltenCobalt.getForgeTag(), FluidValues.INGOT).addInput(TinkerFluids.moltenQuartz.getLocalTag(), FluidValues.GEM * 4).save(consumer, prefix(TinkerFluids.moltenHepatizon, folder));
    // netherrite: 4 debris + 4 gold = 1 (why is this so dense vanilla?)
    ConditionalRecipe.builder().addCondition(ConfigEnabledCondition.CHEAPER_NETHERITE_ALLOY).addRecipe(AlloyRecipeBuilder.alloy(TinkerFluids.moltenNetherite.get(), FluidValues.NUGGET).addInput(TinkerFluids.moltenDebris.getLocalTag(), FluidValues.NUGGET * 4).addInput(TinkerFluids.moltenGold.getForgeTag(), FluidValues.NUGGET * 2)::save).addCondition(// fallback
    TrueCondition.INSTANCE).addRecipe(AlloyRecipeBuilder.alloy(TinkerFluids.moltenNetherite.get(), FluidValues.NUGGET).addInput(TinkerFluids.moltenDebris.getLocalTag(), FluidValues.NUGGET * 4).addInput(TinkerFluids.moltenGold.getForgeTag(), FluidValues.NUGGET * 4)::save).build(consumer, prefix(TinkerFluids.moltenNetherite, folder));
    // tier 3 compat
    Consumer<FinishedRecipe> wrapped;
    // bronze
    wrapped = withCondition(consumer, tagCondition("ingots/bronze"), tagCondition("ingots/tin"));
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenBronze.get(), FluidValues.INGOT * 4).addInput(TinkerFluids.moltenCopper.getForgeTag(), FluidValues.INGOT * 3).addInput(TinkerFluids.moltenTin.getForgeTag(), FluidValues.INGOT).save(wrapped, prefix(TinkerFluids.moltenBronze, folder));
    // brass
    wrapped = withCondition(consumer, tagCondition("ingots/brass"), tagCondition("ingots/zinc"));
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenBrass.get(), FluidValues.INGOT * 2).addInput(TinkerFluids.moltenCopper.getForgeTag(), FluidValues.INGOT).addInput(TinkerFluids.moltenZinc.getForgeTag(), FluidValues.INGOT).save(wrapped, prefix(TinkerFluids.moltenBrass, folder));
    // electrum
    wrapped = withCondition(consumer, tagCondition("ingots/electrum"), tagCondition("ingots/silver"));
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenElectrum.get(), FluidValues.INGOT * 2).addInput(TinkerFluids.moltenGold.getForgeTag(), FluidValues.INGOT).addInput(TinkerFluids.moltenSilver.getForgeTag(), FluidValues.INGOT).save(wrapped, prefix(TinkerFluids.moltenElectrum, folder));
    // invar
    wrapped = withCondition(consumer, tagCondition("ingots/invar"), tagCondition("ingots/nickel"));
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenInvar.get(), FluidValues.INGOT * 3).addInput(TinkerFluids.moltenIron.getForgeTag(), FluidValues.INGOT * 2).addInput(TinkerFluids.moltenNickel.getForgeTag(), FluidValues.INGOT).save(wrapped, prefix(TinkerFluids.moltenInvar, folder));
    // constantan
    wrapped = withCondition(consumer, tagCondition("ingots/constantan"), tagCondition("ingots/nickel"));
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenConstantan.get(), FluidValues.INGOT * 2).addInput(TinkerFluids.moltenCopper.getForgeTag(), FluidValues.INGOT).addInput(TinkerFluids.moltenNickel.getForgeTag(), FluidValues.INGOT).save(wrapped, prefix(TinkerFluids.moltenConstantan, folder));
    // pewter
    wrapped = withCondition(consumer, tagCondition("ingots/pewter"), tagCondition("ingots/lead"));
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenPewter.get(), FluidValues.INGOT * 2).addInput(TinkerFluids.moltenIron.getForgeTag(), FluidValues.INGOT).addInput(TinkerFluids.moltenLead.getForgeTag(), FluidValues.INGOT).save(wrapped, prefix(TinkerFluids.moltenPewter, folder));
    // thermal alloys
    Function<String, ICondition> fluidTagLoaded = name -> new NotCondition(new FluidTagEmptyCondition("forge", name));
    // enderium
    wrapped = withCondition(consumer, tagCondition("ingots/enderium"), tagCondition("ingots/lead"));
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenEnderium.get(), FluidValues.INGOT * 2).addInput(TinkerFluids.moltenLead.getForgeTag(), FluidValues.INGOT * 3).addInput(TinkerFluids.moltenDiamond.getLocalTag(), FluidValues.GEM).addInput(TinkerFluids.moltenEnder.getForgeTag(), FluidValues.SLIMEBALL * 2).save(wrapped, prefix(TinkerFluids.moltenEnderium, folder));
    // lumium
    wrapped = withCondition(consumer, tagCondition("ingots/lumium"), tagCondition("ingots/tin"), tagCondition("ingots/silver"), fluidTagLoaded.apply("glowstone"));
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenLumium.get(), FluidValues.INGOT * 4).addInput(TinkerFluids.moltenTin.getForgeTag(), FluidValues.INGOT * 3).addInput(TinkerFluids.moltenSilver.getForgeTag(), FluidValues.INGOT).addInput(FluidIngredient.of(FluidTags.bind("forge:glowstone"), FluidValues.SLIMEBALL * 2)).save(wrapped, prefix(TinkerFluids.moltenLumium, folder));
    // signalum
    wrapped = withCondition(consumer, tagCondition("ingots/signalum"), tagCondition("ingots/copper"), tagCondition("ingots/silver"), fluidTagLoaded.apply("redstone"));
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenSignalum.get(), FluidValues.INGOT * 4).addInput(TinkerFluids.moltenCopper.getForgeTag(), FluidValues.INGOT * 3).addInput(TinkerFluids.moltenSilver.getForgeTag(), FluidValues.INGOT).addInput(FluidIngredient.of(FluidTags.bind("forge:redstone"), 400)).save(wrapped, prefix(TinkerFluids.moltenSignalum, folder));
    // refined obsidian, note glowstone is done as a composite
    wrapped = withCondition(consumer, tagCondition("ingots/refined_obsidian"), tagCondition("ingots/osmium"));
    AlloyRecipeBuilder.alloy(TinkerFluids.moltenRefinedObsidian.get(), FluidValues.INGOT).addInput(TinkerFluids.moltenObsidian.getLocalTag(), FluidValues.GLASS_PANE).addInput(TinkerFluids.moltenDiamond.getLocalTag(), FluidValues.GEM).addInput(TinkerFluids.moltenOsmium.getForgeTag(), FluidValues.INGOT).save(wrapped, prefix(TinkerFluids.moltenRefinedObsidian, folder));
}
Also used : ResourceLocation(net.minecraft.resources.ResourceLocation) EntityTypeTags(net.minecraft.tags.EntityTypeTags) Tags(net.minecraftforge.common.Tags) Items(net.minecraft.world.item.Items) SingleItemRecipeBuilder(net.minecraft.data.recipes.SingleItemRecipeBuilder) ModLoadedCondition(net.minecraftforge.common.crafting.conditions.ModLoadedCondition) ForgeMod(net.minecraftforge.common.ForgeMod) ItemNameIngredient(slimeknights.mantle.recipe.data.ItemNameIngredient) ICondition(net.minecraftforge.common.crafting.conditions.ICondition) GeodeItemObject(slimeknights.tconstruct.common.registration.GeodeItemObject) TinkerHeadType(slimeknights.tconstruct.world.TinkerHeadType) TinkerWorld(slimeknights.tconstruct.world.TinkerWorld) FluidAttributes(net.minecraftforge.fluids.FluidAttributes) MoldingRecipeBuilder(slimeknights.tconstruct.library.recipe.molding.MoldingRecipeBuilder) TinkerGadgets(slimeknights.tconstruct.gadgets.TinkerGadgets) EntityMeltingRecipeBuilder(slimeknights.tconstruct.library.recipe.entitymelting.EntityMeltingRecipeBuilder) ISmelteryRecipeHelper(slimeknights.tconstruct.library.data.recipe.ISmelteryRecipeHelper) OreRateType(slimeknights.tconstruct.library.recipe.melting.IMeltingContainer.OreRateType) ItemCastingRecipeBuilder(slimeknights.tconstruct.library.recipe.casting.ItemCastingRecipeBuilder) TankType(slimeknights.tconstruct.smeltery.block.component.SearedTankBlock.TankType) ItemTags(net.minecraft.tags.ItemTags) ICommonRecipeHelper(slimeknights.tconstruct.library.data.recipe.ICommonRecipeHelper) SlimeType(slimeknights.tconstruct.shared.block.SlimeType) ItemNameOutput(slimeknights.mantle.recipe.data.ItemNameOutput) TinkerTags(slimeknights.tconstruct.common.TinkerTags) Blocks(net.minecraft.world.level.block.Blocks) ConfigEnabledCondition(slimeknights.tconstruct.common.json.ConfigEnabledCondition) FluidValues(slimeknights.tconstruct.library.recipe.FluidValues) FluidStack(net.minecraftforge.fluids.FluidStack) ItemStack(net.minecraft.world.item.ItemStack) SimpleCookingRecipeBuilder(net.minecraft.data.recipes.SimpleCookingRecipeBuilder) IngredientIntersection(slimeknights.mantle.recipe.ingredient.IngredientIntersection) ShapedRecipeBuilder(net.minecraft.data.recipes.ShapedRecipeBuilder) EntityType(net.minecraft.world.entity.EntityType) ContainerFillingRecipeBuilder(slimeknights.tconstruct.library.recipe.casting.container.ContainerFillingRecipeBuilder) MeltingRecipeBuilder(slimeknights.tconstruct.library.recipe.melting.MeltingRecipeBuilder) TinkerModifiers(slimeknights.tconstruct.tools.TinkerModifiers) Function(java.util.function.Function) Supplier(java.util.function.Supplier) Ingredient(net.minecraft.world.item.crafting.Ingredient) CompoundIngredient(slimeknights.mantle.recipe.data.CompoundIngredient) FluidIngredient(slimeknights.mantle.recipe.ingredient.FluidIngredient) ItemLike(net.minecraft.world.level.ItemLike) ShapelessRecipeBuilder(net.minecraft.data.recipes.ShapelessRecipeBuilder) FluidTagEmptyCondition(slimeknights.mantle.recipe.helper.FluidTagEmptyCondition) BiConsumer(java.util.function.BiConsumer) Fluid(net.minecraft.world.level.material.Fluid) ConditionalRecipe(net.minecraftforge.common.crafting.ConditionalRecipe) Fluids(net.minecraft.world.level.material.Fluids) TinkerMaterials(slimeknights.tconstruct.shared.TinkerMaterials) DataGenerator(net.minecraft.data.DataGenerator) TinkerCommons(slimeknights.tconstruct.shared.TinkerCommons) IngredientDifference(slimeknights.mantle.recipe.ingredient.IngredientDifference) ConsumerWrapperBuilder(slimeknights.mantle.recipe.data.ConsumerWrapperBuilder) IMeltingRecipe(slimeknights.tconstruct.library.recipe.melting.IMeltingRecipe) TinkerFluids(slimeknights.tconstruct.fluids.TinkerFluids) FluidTags(net.minecraft.tags.FluidTags) FinishedRecipe(net.minecraft.data.recipes.FinishedRecipe) EntityIngredient(slimeknights.mantle.recipe.ingredient.EntityIngredient) Consumer(java.util.function.Consumer) TinkerSmeltery(slimeknights.tconstruct.smeltery.TinkerSmeltery) BaseRecipeProvider(slimeknights.tconstruct.common.data.BaseRecipeProvider) BudSize(slimeknights.tconstruct.common.registration.GeodeItemObject.BudSize) NBTIngredient(slimeknights.mantle.recipe.data.NBTIngredient) FluidObject(slimeknights.mantle.registration.object.FluidObject) NotCondition(net.minecraftforge.common.crafting.conditions.NotCondition) TrueCondition(net.minecraftforge.common.crafting.conditions.TrueCondition) NBTNameIngredient(slimeknights.mantle.recipe.data.NBTNameIngredient) AlloyRecipeBuilder(slimeknights.tconstruct.library.recipe.alloying.AlloyRecipeBuilder) Block(net.minecraft.world.level.block.Block) ItemOutput(slimeknights.mantle.recipe.helper.ItemOutput) MeltingFuelBuilder(slimeknights.tconstruct.library.recipe.fuel.MeltingFuelBuilder) FinishedRecipe(net.minecraft.data.recipes.FinishedRecipe) NotCondition(net.minecraftforge.common.crafting.conditions.NotCondition) FluidTagEmptyCondition(slimeknights.mantle.recipe.helper.FluidTagEmptyCondition) ICondition(net.minecraftforge.common.crafting.conditions.ICondition)

Example 2 with NotCondition

use of net.minecraftforge.common.crafting.conditions.NotCondition in project Materialis by RCXcrafter.

the class MaterialisRecipes method buildShapelessRecipes.

public void buildShapelessRecipes(Consumer<IFinishedRecipe> consumer) {
    for (IngotWithBlockNNugget material : MaterialisResources.materialList) {
        blockIngotNuggetCompression(consumer, material.name, material.BLOCK_ITEM.get(), material.INGOT.get(), material.NUGGET.get());
    }
    String castingFolder = "smeltery/casting/metal/";
    String meltingFolder = "smeltery/melting/metal/";
    String alloyFolder = "smeltery/alloys/";
    String materialFolder = "tools/materials/";
    String compositeFolder = "tools/parts/composite/";
    String modifierFolder = "tools/modifiers/";
    String salvageFolder = "tools/modifiers/salvage/";
    String slotlessFolder = "tools/modifiers/slotless/";
    String spillFolder = "tools/spilling/";
    String toolFolder = "tools/building/";
    String partFolder = "tools/parts/";
    String castFolder = "smeltery/casts/";
    String armorFolder = "armor/building/";
    String armorRepairFolder = "armor/repair/";
    metalCasting(consumer, MaterialisResources.FAIRY_FLUID.OBJECT, MaterialisResources.FAIRY_INGOT.BLOCK.get(), MaterialisResources.FAIRY_INGOT.INGOT.get(), MaterialisResources.FAIRY_INGOT.NUGGET.get(), castingFolder, "fairy");
    metalMelting(consumer, MaterialisResources.FAIRY_FLUID.FLUID.get(), "fairy", false, meltingFolder, false);
    // metalCasting(consumer, MaterialisResources.RED_AURUM_FLUID.FLUID, MaterialisResources.RED_AURUM_INGOT.BLOCK.get(), MaterialisResources.RED_AURUM_INGOT.INGOT.get(), MaterialisResources.RED_AURUM_INGOT.NUGGET.get(), metalFolder, "red_aurum");
    // metalMelting(consumer, MaterialisResources.RED_AURUM_FLUID.FLUID.get(), "red_aurum", false, metalFolder, false);
    // metalCasting(consumer, MaterialisResources.DRULLOY_FLUID.FLUID, MaterialisResources.DRULLOY_INGOT.BLOCK.get(), MaterialisResources.DRULLOY_INGOT.INGOT.get(), MaterialisResources.DRULLOY_INGOT.NUGGET.get(), metalFolder, "drulloy");
    // metalMelting(consumer, MaterialisResources.DRULLOY_FLUID.FLUID.get(), "drulloy", false, metalFolder, false);
    // metalCasting(consumer, MaterialisResources.POKEFENNIUM_FLUID.FLUID, MaterialisResources.POKEFENNIUM_INGOT.BLOCK.get(), MaterialisResources.POKEFENNIUM_INGOT.INGOT.get(), MaterialisResources.POKEFENNIUM_INGOT.NUGGET.get(), metalFolder, "pokefennium");
    // metalMelting(consumer, MaterialisResources.POKEFENNIUM_FLUID.FLUID.get(), "pokefennium", false, metalFolder, false);
    // metalCasting(consumer, MaterialisResources.ALUMITE_FLUID.FLUID, MaterialisResources.ALUMITE_INGOT.BLOCK.get(), MaterialisResources.ALUMITE_INGOT.INGOT.get(), MaterialisResources.ALUMITE_INGOT.NUGGET.get(), metalFolder, "alumite");
    // metalMelting(consumer, MaterialisResources.ALUMITE_FLUID.FLUID.get(), "alumite", false, metalFolder, false);
    AlloyRecipeBuilder.alloy(MaterialisResources.FAIRY_FLUID.FLUID.get(), FluidValues.INGOT).addInput(TinkerFluids.moltenGold.get(), FluidValues.INGOT).addInput(TinkerFluids.liquidSoul.get(), FluidValues.GLASS_BLOCK).addInput(Fluids.MILK, 1000).build(consumer, prefix(MaterialisResources.FAIRY_FLUID.FLUID, alloyFolder));
    // wrench stuff
    partRecipes(consumer, MaterialisResources.WRENCH_HEAD, MaterialisResources.WRENCH_HEAD_CAST, 2, partFolder, castFolder);
    toolBuilding(consumer, MaterialisResources.WRENCH, toolFolder);
    toolBuilding(consumer, MaterialisResources.BATTLEWRENCH, toolFolder);
    // create stuff
    metalTagCasting(consumer, MaterialisResources.REFINED_RADIANCE_FLUID.OBJECT, "refined_radiance", castingFolder, false);
    metalMelting(consumer, MaterialisResources.REFINED_RADIANCE_FLUID.FLUID.get(), "refined_radiance", false, meltingFolder, true);
    metalTagCasting(consumer, MaterialisResources.SHADOW_STEEL_FLUID.OBJECT, "shadow_steel", castingFolder, false);
    metalMelting(consumer, MaterialisResources.SHADOW_STEEL_FLUID.FLUID.get(), "shadow_steel", false, meltingFolder, true);
    SpillingRecipeBuilder.forFluid(MaterialisResources.REFINED_RADIANCE_FLUID.FLUID.get(), FluidValues.NUGGET).addEffect(new EffectSpillingEffect(Effects.GLOWING, 800, 1)).build(withCondition(consumer, new ModLoadedCondition("create")), prefix(MaterialisResources.REFINED_RADIANCE_FLUID.FLUID, spillFolder));
    // eidolon stuff
    metalTagCasting(consumer, MaterialisResources.ARCANE_GOLD_FLUID.OBJECT, "arcane_gold", castingFolder, false);
    metalMelting(consumer, MaterialisResources.ARCANE_GOLD_FLUID.FLUID.get(), "arcane_gold", false, meltingFolder, true);
    castCreation(withCondition(consumer, tagConditionDomain("forge", "inlays")), MaterialisItemTags.INLAYS, MaterialisResources.INLAY_CAST, castFolder);
    tagCasting(consumer, TinkerFluids.moltenPewter, FluidValues.INGOT * 2, MaterialisResources.INLAY_CAST, "inlays/pewter", castingFolder + "pewter_inlay", true);
    tagCasting(consumer, MaterialisResources.ARCANE_GOLD_FLUID.OBJECT, FluidValues.INGOT * 2, MaterialisResources.INLAY_CAST, "inlays/arcane_gold", castingFolder + "arcane_gold_inlay", true);
    MeltingRecipeBuilder.melting(Ingredient.of(MaterialisItemTags.PEWTER_INLAY), TinkerFluids.moltenPewter.get(), FluidValues.INGOT * 2, 1.5f).build(withCondition(consumer, tagConditionDomain("forge", "inlays/pewter")), modResource(meltingFolder + "pewter_inlay"));
    MeltingRecipeBuilder.melting(Ingredient.of(MaterialisItemTags.ARCANE_GOLD_INLAY), MaterialisResources.ARCANE_GOLD_FLUID.FLUID.get(), FluidValues.INGOT * 2, 1.5f).build(withCondition(consumer, tagConditionDomain("forge", "inlays/arcane_gold")), modResource(meltingFolder + "arcane_gold_inlay"));
    MeltingRecipeBuilder.melting(ItemNameIngredient.from(new ResourceLocation("eidolon", "pewter_blend")), TinkerFluids.moltenPewter.get(), FluidValues.INGOT, 1.0f).build(withCondition(consumer, new ModLoadedCondition("eidolon")), modResource(meltingFolder + "pewter_blend"));
    // aquaculture stuff
    metalTagCasting(consumer, MaterialisResources.NEPTUNIUM_FLUID.OBJECT, "neptunium", castingFolder, false);
    metalMelting(consumer, MaterialisResources.NEPTUNIUM_FLUID.FLUID.get(), "neptunium", false, meltingFolder, true);
    toolMelting(withCondition(consumer, new ModLoadedCondition("aquaculture")), new NameFluid("neptunium", MaterialisResources.NEPTUNIUM_FLUID.FLUID.get()), new ToolValue("aquaculture:neptunium_axe", 3), new ToolValue("aquaculture:neptunium_hoe", 2), new ToolValue("aquaculture:neptunium_pickaxe", 3), new ToolValue("aquaculture:neptunium_shovel", 1), new ToolValue("aquaculture:neptunium_sword", 2), new ToolValue("aquaculture:neptunium_bow", 3), new ToolValue("aquaculture:neptunium_fishing_rod", 2), new ToolValue("aquaculture:neptunium_fillet_knife", 2), new ToolValue("aquaculture:neptunium_helmet", 5), new ToolValue("aquaculture:neptunium_chestplate", 8), new ToolValue("aquaculture:neptunium_leggings", 7), new ToolValue("aquaculture:neptunium_boots", 4));
    multipleToolMelting(withCondition(consumer, new ModLoadedCondition("aquaculture")), "aquaculture", new NameFluid[] { new NameFluid("iron", TinkerFluids.moltenIron.get()), new NameFluid("gold", TinkerFluids.moltenGold.get()), new NameFluid("diamond", TinkerFluids.moltenDiamond.get()) }, new ToolValue("_fishing_rod", 2), new ToolValue("_fillet_knife", 2));
    // mystical world stuff
    metalTagCasting(consumer, MaterialisResources.QUICKSILVER_FLUID.OBJECT, "quicksilver", castingFolder, false);
    metalMelting(consumer, MaterialisResources.QUICKSILVER_FLUID.FLUID.get(), "quicksilver", true, meltingFolder, true, MaterialisByproduct.ZINC, MaterialisByproduct.TIN);
    multipleToolMelting(withCondition(consumer, new ModLoadedCondition("mysticalworld")), "mysticalworld", new NameFluid[] { new NameFluid("copper", TinkerFluids.moltenCopper.get()), new NameFluid("lead", TinkerFluids.moltenLead.get()), new NameFluid("quicksilver", MaterialisResources.QUICKSILVER_FLUID.FLUID.get()), new NameFluid("silver", TinkerFluids.moltenSilver.get()), new NameFluid("tin", TinkerFluids.moltenTin.get()) }, new ToolValue("_axe", 3), new ToolValue("_hoe", 2), new ToolValue("_pickaxe", 3), new ToolValue("_shovel", 1), new ToolValue("_sword", 2), new ToolValue("_knife", 1), new ToolValue("_spear", 2), new ToolValue("_helmet", 5), new ToolValue("_chestplate", 8), new ToolValue("_leggings", 7), new ToolValue("_boots", 4));
    multipleToolMelting(withCondition(consumer, new ModLoadedCondition("mysticalworld")), "mysticalworld", new NameFluid[] { new NameFluid("iron", TinkerFluids.moltenIron.get()), new NameFluid("gold", TinkerFluids.moltenGold.get()), new NameFluid("diamond", TinkerFluids.moltenDiamond.get()) }, new ToolValue("_knife", 1), new ToolValue("_spear", 2));
    // astral sorcery stuff
    metalTagCasting(consumer, MaterialisResources.STARMETAL_FLUID.OBJECT, "starmetal", castingFolder, false);
    // the ore recipe is defined manually
    metalMelting(consumer, MaterialisResources.STARMETAL_FLUID.FLUID.get(), "starmetal", false, meltingFolder, true);
    SpillingRecipeBuilder.forFluid(MaterialisFluidTags.LIQUID_STARLIGHT, 50).addEffect(new EffectSpillingEffect(Effects.NIGHT_VISION, 100, 1)).build(withCondition(consumer, new ModLoadedCondition("astralsorcery")), new ResourceLocation(Materialis.modID, spillFolder + "liquid_starlight"));
    // industrial foregoing stuff
    metalTagCasting(consumer, MaterialisResources.PINK_SLIME_FLUID.OBJECT, "pink_slime", castingFolder, false);
    metalMelting(consumer, MaterialisResources.PINK_SLIME_FLUID.FLUID.get(), "pink_slime", false, meltingFolder, true);
    Consumer<IFinishedRecipe> industrialForegoingLoaded = withCondition(consumer, new ModLoadedCondition("industrialforegoing"));
    AlloyRecipeBuilder.alloy(MaterialisResources.PINK_SLIME_FLUID.FLUID.get(), FluidValues.INGOT).addInput(TinkerFluids.moltenGold.get(), FluidValues.INGOT * 2).addInput(TinkerFluids.moltenIron.get(), FluidValues.INGOT * 2).addInput(MaterialisFluidTags.LIQUID_PINK_SLIME, 1000).build(industrialForegoingLoaded, prefix(MaterialisResources.PINK_SLIME_FLUID.FLUID, alloyFolder));
    CookingRecipeBuilder.blasting(Ingredient.of(MaterialisItemTags.PINK_SLIME), MaterialisResources.PINK_SLIME_CRYSTAL.get(), 1.0f, 400).unlockedBy("has_item", has(MaterialisItemTags.PINK_SLIME)).save(industrialForegoingLoaded, new ResourceLocation(Materialis.modID, "pink_slime_crystal_blasting"));
    // undergarden stuff
    metalTagCasting(consumer, MaterialisResources.CLOGGRUM_FLUID.OBJECT, "cloggrum", castingFolder, false);
    metalMelting(consumer, MaterialisResources.CLOGGRUM_FLUID.FLUID.get(), "cloggrum", true, meltingFolder, true, MaterialisByproduct.FROSTSTEEL);
    metalTagCasting(consumer, MaterialisResources.FROSTSTEEL_FLUID.OBJECT, "froststeel", castingFolder, false);
    metalMelting(consumer, MaterialisResources.FROSTSTEEL_FLUID.FLUID.get(), "froststeel", true, meltingFolder, true, MaterialisByproduct.REGALIUM);
    metalTagCasting(consumer, MaterialisResources.UTHERIUM_FLUID.OBJECT, "utherium", castingFolder, false);
    metalMelting(consumer, MaterialisResources.UTHERIUM_FLUID.FLUID.get(), "utherium", false, meltingFolder, true);
    oreMelting(consumer, MaterialisResources.UTHERIUM_FLUID.FLUID.get(), FluidValues.NUGGET, "ores/utherium", 1.5f, meltingFolder + "utherium/ore", true);
    metalTagCasting(consumer, MaterialisResources.FORGOTTEN_FLUID.OBJECT, "forgotten_metal", castingFolder, false);
    metalMelting(consumer, MaterialisResources.FORGOTTEN_FLUID.FLUID.get(), "forgotten_metal", false, meltingFolder, true);
    metalTagCasting(consumer, MaterialisResources.REGALIUM_FLUID.OBJECT, "regalium", castingFolder, false);
    metalMelting(consumer, MaterialisResources.REGALIUM_FLUID.FLUID.get(), "regalium", true, meltingFolder, true, MaterialisByproduct.CLOGGRUM);
    MeltingRecipeBuilder.melting(ItemNameIngredient.from(new ResourceLocation("undergarden", "utheric_shard")), MaterialisResources.UTHERIUM_FLUID.FLUID.get(), FluidValues.NUGGET / 4, 1.0f).build(withCondition(consumer, new ModLoadedCondition("undergarden")), modResource(meltingFolder + "utheric_shard"));
    EntityMeltingRecipeBuilder.melting(EntityIngredient.of(CleansingModifier.rotspawnTag), new FluidStack(MaterialisResources.UTHERIUM_FLUID.FLUID.get(), FluidValues.NUGGET / 8)).build(withCondition(consumer, new ModLoadedCondition("undergarden")));
    SpillingRecipeBuilder.forFluid(MaterialisFluidTags.VIRULENT_MIX, 50).addEffect(new EffectSpillingEffect(Effects.POISON, 50, 1)).build(withCondition(consumer, new ModLoadedCondition("undergarden")), new ResourceLocation(Materialis.modID, spillFolder + "virulent_mix"));
    multipleToolMelting(withCondition(consumer, new ModLoadedCondition("undergarden")), "undergarden", new NameFluid[] { new NameFluid("cloggrum", MaterialisResources.CLOGGRUM_FLUID.FLUID.get()), new NameFluid("froststeel", MaterialisResources.FROSTSTEEL_FLUID.FLUID.get()), new NameFluid("utheric", MaterialisResources.UTHERIUM_FLUID.FLUID.get()) }, new ToolValue("_axe", 3), new ToolValue("_hoe", 2), new ToolValue("_pickaxe", 3), new ToolValue("_shovel", 1), new ToolValue("_sword", 2), new ToolValue("_helmet", 5), new ToolValue("_chestplate", 8), new ToolValue("_leggings", 7), new ToolValue("_boots", 4));
    toolMelting(withCondition(consumer, new ModLoadedCondition("undergarden")), new NameFluid("forgotten_metal", MaterialisResources.CLOGGRUM_FLUID.FLUID.get(), new FluidStack(MaterialisResources.FORGOTTEN_FLUID.FLUID.get(), FluidValues.INGOT), true), new ToolValue("undergarden:forgotten_axe", 3), new ToolValue("undergarden:forgotten_hoe", 2), new ToolValue("undergarden:forgotten_pickaxe", 3), new ToolValue("undergarden:forgotten_shovel", 1), new ToolValue("undergarden:forgotten_sword", 2), new ToolValue("undergarden:forgotten_battleaxe", 3));
    toolMelting(withCondition(consumer, new ModLoadedCondition("undergarden")), new NameFluid("cloggrum", MaterialisResources.CLOGGRUM_FLUID.FLUID.get()), new ToolValue("undergarden:cloggrum_shield", 6), new ToolValue("undergarden:cloggrum_battleaxe", 3));
    // mekanism stuff
    // metalTagCasting(consumer, TinkerFluids.moltenRefinedObsidian, "refined_obsidian", castingFolder, false);
    // metalMelting(consumer, TinkerFluids.moltenRefinedObsidian.get(), "refined_obsidian", false, false, meltingFolder, true);
    // metalTagCasting(consumer, TinkerFluids.moltenRefinedGlowstone, "refined_glowstone", castingFolder, false);
    // metalMelting(consumer, TinkerFluids.moltenRefinedGlowstone.get(), "refined_glowstone", false, meltingFolder, true);
    multipleToolMelting(withCondition(consumer, new ModLoadedCondition("mekanismtools")), "mekanismtools", new NameFluid[] { new NameFluid("bronze", TinkerFluids.moltenBronze.get()), new NameFluid("osmium", TinkerFluids.moltenOsmium.get()), new NameFluid("refined_glowstone", TinkerFluids.moltenRefinedGlowstone.get()), new NameFluid("refined_obsidian", TinkerFluids.moltenRefinedObsidian.get()), new NameFluid("steel", TinkerFluids.moltenSteel.get()) }, new ToolValue("_pickaxe", 3), new ToolValue("_axe", 3), new ToolValue("_shovel", 1), new ToolValue("_hoe", 2), new ToolValue("_sword", 2), new ToolValue("_paxel", 7), new ToolValue("_helmet", 5), new ToolValue("_chestplate", 8), new ToolValue("_leggings", 7), new ToolValue("_boots", 4));
    multipleToolMelting(withCondition(consumer, new ModLoadedCondition("mekanismtools")), "mekanismtools", new NameFluid[] { new NameFluid("bronze", TinkerFluids.moltenBronze.get(), new FluidStack(TinkerFluids.moltenIron.get(), FluidValues.INGOT), false), new NameFluid("osmium", TinkerFluids.moltenOsmium.get(), new FluidStack(TinkerFluids.moltenIron.get(), FluidValues.INGOT), false), new NameFluid("refined_glowstone", TinkerFluids.moltenRefinedGlowstone.get(), new FluidStack(TinkerFluids.moltenIron.get(), FluidValues.INGOT), false), new NameFluid("refined_obsidian", TinkerFluids.moltenRefinedObsidian.get(), new FluidStack(TinkerFluids.moltenIron.get(), FluidValues.INGOT), false), new NameFluid("steel", TinkerFluids.moltenSteel.get(), new FluidStack(TinkerFluids.moltenIron.get(), FluidValues.INGOT), false) }, new ToolValue("_shield", 6));
    multipleToolMelting(withCondition(consumer, new ModLoadedCondition("mekanismtools")), "mekanismtools", new NameFluid[] { new NameFluid("iron", TinkerFluids.moltenIron.get()), new NameFluid("gold", TinkerFluids.moltenGold.get()), new NameFluid("diamond", TinkerFluids.moltenDiamond.get()), new NameFluid("netherite", TinkerFluids.moltenDiamond.get(), new FluidStack(TinkerFluids.moltenNetherite.get(), FluidValues.INGOT), true) }, new ToolValue("_paxel", 7));
    // psi stuff
    Consumer<IFinishedRecipe> psiLoaded = withCondition(consumer, new ModLoadedCondition("psi"));
    ShapedRecipeBuilder.shaped(MaterialisResources.PSIMETAL_EXOSUIT.get(ArmorSlotType.HELMET)).pattern("gpg").pattern("b b").define('p', getTag("forge", "ingots/psimetal")).define('g', getTag("forge", "gems/psigem")).define('b', getTag("forge", "ingots/silicon_bronze")).unlockedBy("has_item", has(getTag("forge", "gems/psigem"))).save(psiLoaded, modResource(armorFolder + "exosuit_helmet"));
    ShapedRecipeBuilder.shaped(MaterialisResources.PSIMETAL_EXOSUIT.get(ArmorSlotType.CHESTPLATE)).pattern("p p").pattern("gpg").pattern("bpb").define('p', getTag("forge", "ingots/psimetal")).define('g', getTag("forge", "gems/psigem")).define('b', getTag("forge", "ingots/silicon_bronze")).unlockedBy("has_item", has(getTag("forge", "gems/psigem"))).save(psiLoaded, modResource(armorFolder + "exosuit_chestplate"));
    ShapedRecipeBuilder.shaped(MaterialisResources.PSIMETAL_EXOSUIT.get(ArmorSlotType.LEGGINGS)).pattern("pgp").pattern("b b").pattern("p p").define('p', getTag("forge", "ingots/psimetal")).define('g', getTag("forge", "gems/psigem")).define('b', getTag("forge", "ingots/silicon_bronze")).unlockedBy("has_item", has(getTag("forge", "gems/psigem"))).save(psiLoaded, modResource(armorFolder + "exosuit_leggings"));
    ShapedRecipeBuilder.shaped(MaterialisResources.PSIMETAL_EXOSUIT.get(ArmorSlotType.BOOTS)).pattern("g g").pattern("b b").define('g', getTag("forge", "gems/psigem")).define('b', getTag("forge", "ingots/silicon_bronze")).unlockedBy("has_item", has(getTag("forge", "gems/psigem"))).save(psiLoaded, modResource(armorFolder + "exosuit_boots"));
    SpecializedRepairRecipeBuilder.repair(Ingredient.of(MaterialisResources.PSIMETAL_EXOSUIT.values().stream().map(ItemStack::new)), MaterialisMaterials.psimetal).buildRepairKit(psiLoaded, modResource(armorRepairFolder + "exosuit_repair_kit")).build(psiLoaded, modResource(armorRepairFolder + "exosuit_station"));
    metalTagCasting(consumer, MaterialisResources.PSIMETAL_FLUID.OBJECT, "psimetal", castingFolder, false);
    metalMelting(consumer, MaterialisResources.PSIMETAL_FLUID.FLUID.get(), "psimetal", false, meltingFolder, true);
    metalTagCasting(consumer, MaterialisResources.EBONY_PSIMETAL_FLUID.OBJECT, "ebony_psimetal", castingFolder, false);
    metalMelting(consumer, MaterialisResources.EBONY_PSIMETAL_FLUID.FLUID.get(), "ebony_psimetal", false, meltingFolder, true);
    metalTagCasting(consumer, MaterialisResources.IVORY_PSIMETAL_FLUID.OBJECT, "ivory_psimetal", castingFolder, false);
    metalMelting(consumer, MaterialisResources.IVORY_PSIMETAL_FLUID.FLUID.get(), "ivory_psimetal", false, meltingFolder, true);
    toolMelting(withCondition(consumer, new AndCondition(new ModLoadedCondition("psi"), new NotCondition(new ModLoadedCondition("magipsi")))), new NameFluid("psimetal", MaterialisResources.PSIMETAL_FLUID.FLUID.get(), new FluidStack(TinkerFluids.moltenIron.get(), FluidValues.INGOT * 2), false), new ToolValue("psi:psimetal_axe", 2), new ToolValue("psi:psimetal_pickaxe", 2), new ToolValue("psi:psimetal_shovel", 1));
    toolMelting(withCondition(consumer, new AndCondition(new ModLoadedCondition("psi"), new NotCondition(new ModLoadedCondition("magipsi")))), new NameFluid("psimetal", MaterialisResources.PSIMETAL_FLUID.FLUID.get(), new FluidStack(TinkerFluids.moltenIron.get(), FluidValues.INGOT), false), new ToolValue("psi:psimetal_sword", 1));
    toolMelting(withCondition(consumer, new ModLoadedCondition("magipsi")), new NameFluid("psimetal_magical", MaterialisResources.PSIMETAL_FLUID.FLUID.get(), new FluidStack(TinkerFluids.moltenGold.get(), FluidValues.INGOT), false), new ToolValue("psi:psimetal_axe", 2), new ToolValue("psi:psimetal_pickaxe", 2), new ToolValue("psi:psimetal_shovel", 1), new ToolValue("psi:psimetal_sword", 1));
    toolMelting(psiLoaded, new NameFluid("psimetal", MaterialisResources.PSIMETAL_FLUID.FLUID.get()), new ToolValue("psi:psimetal_exosuit_helmet", 3), new ToolValue("psi:psimetal_exosuit_chestplate", 6), new ToolValue("psi:psimetal_exosuit_leggings", 5), new ToolValue("psi:psimetal_exosuit_boots", 2));
    // occultism stuff
    metalTagCasting(consumer, MaterialisResources.IESNIUM_FLUID.OBJECT, "iesnium", castingFolder, false);
    metalMelting(consumer, MaterialisResources.IESNIUM_FLUID.FLUID.get(), "iesnium", true, meltingFolder, true, MaterialisByproduct.SILVER);
    toolMelting(withCondition(consumer, new ModLoadedCondition("occultism")), new NameFluid("iesnium", MaterialisResources.IESNIUM_FLUID.FLUID.get()), new ToolValue("occultism:iesnium_pickaxe", 3));
    // botania stuff
    metalTagCasting(consumer, MaterialisResources.MANASTEEL_FLUID.OBJECT, "manasteel", castingFolder, false);
    metalMelting(consumer, MaterialisResources.MANASTEEL_FLUID.FLUID.get(), "manasteel", false, meltingFolder, true);
    metalTagCasting(consumer, MaterialisResources.ELEMENTIUM_FLUID.OBJECT, "elementium", castingFolder, false);
    metalMelting(consumer, MaterialisResources.ELEMENTIUM_FLUID.FLUID.get(), "elementium", false, meltingFolder, true);
    metalTagCasting(consumer, MaterialisResources.TERRASTEEL_FLUID.OBJECT, "terrasteel", castingFolder, false);
    metalMelting(consumer, MaterialisResources.TERRASTEEL_FLUID.FLUID.get(), "terrasteel", false, meltingFolder, true);
    multipleToolMelting(withCondition(consumer, new ModLoadedCondition("botania")), "botania", new NameFluid[] { new NameFluid("manasteel", MaterialisResources.MANASTEEL_FLUID.FLUID.get()), new NameFluid("elementium", MaterialisResources.ELEMENTIUM_FLUID.FLUID.get()) }, // new ToolValue("_pickaxe", 3), //botania is inconsistent with these names >:(
    new ToolValue("_axe", 3), new ToolValue("_shovel", 1), new ToolValue("_hoe", 2), new ToolValue("_sword", 2), new ToolValue("_shears", 2), new ToolValue("_helmet", 5), new ToolValue("_chestplate", 8), new ToolValue("_leggings", 7), new ToolValue("_boots", 4));
    toolMelting(withCondition(consumer, new ModLoadedCondition("botania")), new NameFluid("manasteel", MaterialisResources.MANASTEEL_FLUID.FLUID.get()), new ToolValue("botania:manasteel_pick", 3));
    toolMelting(withCondition(consumer, new ModLoadedCondition("botania")), new NameFluid("elementium", MaterialisResources.ELEMENTIUM_FLUID.FLUID.get()), new ToolValue("botania:elementium_pickaxe", 3));
    toolMelting(withCondition(consumer, new ModLoadedCondition("botania")), new NameFluid("terrasteel", MaterialisResources.MANASTEEL_FLUID.FLUID.get(), new FluidStack(MaterialisResources.TERRASTEEL_FLUID.FLUID.get(), FluidValues.INGOT * 3), true), new ToolValue("botania:terrasteel_helmet", 5), new ToolValue("botania:terrasteel_chestplate", 8), new ToolValue("botania:terrasteel_leggings", 7), new ToolValue("botania:terrasteel_boots", 4));
    toolMelting(withCondition(consumer, new ModLoadedCondition("botania")), new NameFluid("terrasteel", MaterialisResources.TERRASTEEL_FLUID.FLUID.get()), new ToolValue("botania:terra_pick", 4), new ToolValue("botania:terra_axe", 4), new ToolValue("botania:terra_sword", 2));
    // mythicbotany stuff
    metalTagCasting(consumer, MaterialisResources.ALFSTEEL_FLUID.OBJECT, "alfsteel", castingFolder, false);
    metalMelting(consumer, MaterialisResources.ALFSTEEL_FLUID.FLUID.get(), "alfsteel", false, meltingFolder, true);
    MeltingRecipeBuilder.melting(ItemNameIngredient.from(new ResourceLocation("mythicbotany", "alfsteel_armor_upgrade")), MaterialisResources.ALFSTEEL_FLUID.FLUID.get(), FluidValues.INGOT * 2, 1.0f).build(withCondition(consumer, new ModLoadedCondition("mythicbotany")), modResource(meltingFolder + "alfsteel_double_ingot"));
    toolMelting(withCondition(consumer, new ModLoadedCondition("mythicbotany")), new NameFluid("alfsteel", MaterialisResources.TERRASTEEL_FLUID.FLUID.get(), new FluidStack(MaterialisResources.ALFSTEEL_FLUID.FLUID.get(), FluidValues.INGOT * 2), true), new ToolValue("mythicbotany:alfsteel_helmet", 3), new ToolValue("mythicbotany:alfsteel_chestplate", 3), new ToolValue("mythicbotany:alfsteel_leggings", 3), new ToolValue("mythicbotany:alfsteel_boots", 3));
    toolMelting(withCondition(consumer, new ModLoadedCondition("mythicbotany")), new NameFluid("alfsteel", MaterialisResources.TERRASTEEL_FLUID.FLUID.get(), new FluidStack(MaterialisResources.ALFSTEEL_FLUID.FLUID.get(), FluidValues.INGOT), true), new ToolValue("mythicbotany:alfsteel_pick", 4), new ToolValue("mythicbotany:alfsteel_axe", 4), new ToolValue("mythicbotany:alfsteel_sword", 2));
    // draconic evolution stuff
    metalTagCasting(consumer, MaterialisResources.DRACONIUM_FLUID.OBJECT, "draconium", castingFolder, false);
    metalMelting(consumer, MaterialisResources.DRACONIUM_FLUID.FLUID.get(), "draconium", true, meltingFolder, true, MaterialisByproduct.PLATINUM, MaterialisByproduct.COBALT);
    metalTagCasting(consumer, MaterialisResources.AWAKENED_DRACONIUM_FLUID.OBJECT, "draconium_awakened", castingFolder, false);
    metalMelting(consumer, MaterialisResources.AWAKENED_DRACONIUM_FLUID.FLUID.get(), "draconium_awakened", false, meltingFolder, true);
    // redstone arsenal stuff
    metalTagCasting(consumer, MaterialisResources.FLUX_INFUSED_FLUID.OBJECT, "flux_infused", castingFolder, false);
    metalMelting(consumer, MaterialisResources.FLUX_INFUSED_FLUID.FLUID.get(), "flux_infused", false, meltingFolder, true);
    // materials
    metalMaterialRecipe(consumer, MaterialisMaterials.fairy, materialFolder, "fairy", false);
    metalMaterialRecipe(consumer, MaterialisMaterials.brass, materialFolder, "brass", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.aluminum, materialFolder, "aluminum", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.nickel, materialFolder, "nickel", true);
    // metalMaterialRecipe(consumer, MaterialisMaterials.platinum, materialFolder, "platinum", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.uranium, materialFolder, "uranium", true);
    // metalMaterialRecipe(consumer, MaterialisMaterials.tungsten, materialFolder, "tungsten", true);
    // metalMaterialRecipe(consumer, MaterialisMaterials.invar, materialFolder, "invar", true);
    materialRecipe(withCondition(consumer, new ModLoadedCondition("create")), MaterialisMaterials.roseQuartz, ItemNameIngredient.from(new ResourceLocation("create", "rose_quartz"), new ResourceLocation("create", "polished_rose_quartz")), 1, 1, materialFolder + "rose_quartz");
    metalMaterialRecipe(consumer, MaterialisMaterials.refinedRadiance, materialFolder, "refined_radiance", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.shadowSteel, materialFolder, "shadow_steel", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.pewter, materialFolder, "pewter", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.arcaneGold, materialFolder, "arcane_gold", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.neptunium, materialFolder, "neptunium", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.quicksilver, materialFolder, "quicksilver", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.starmetal, materialFolder, "starmetal", true);
    materialRecipe(withCondition(consumer, tagCondition("plastic")), MaterialisMaterials.plastic, Ingredient.of(ItemTags.bind("forge:plastic")), 1, 1, materialFolder + "plastic");
    metalMaterialRecipe(consumer, MaterialisMaterials.pinkSlime, materialFolder, "pink_slime", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.cloggrum, materialFolder, "cloggrum", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.froststeel, materialFolder, "froststeel", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.utherium, materialFolder, "utherium", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.forgottenMetal, materialFolder, "forgotten_metal", true);
    // metalMaterialRecipe(consumer, MaterialisMaterials.osmium, materialFolder, "osmium", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.refinedObsidian, materialFolder, "refined_obsidian", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.refinedGlowstone, materialFolder, "refined_glowstone", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.psimetal, materialFolder, "psimetal", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.ebonyPsimetal, materialFolder, "ebony_psimetal", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.ivoryPsimetal, materialFolder, "ivory_psimetal", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.iesnium, materialFolder, "iesnium", true);
    materialRecipe(withCondition(consumer, new ModLoadedCondition("botania")), MaterialisMaterials.livingwood, ItemNameIngredient.from(new ResourceLocation("botania", "livingwood")), 1, 1, materialFolder + "livingwood");
    materialRecipe(withCondition(consumer, new ModLoadedCondition("botania")), MaterialisMaterials.livingwood, ItemNameIngredient.from(new ResourceLocation("botania", "livingwood_twig")), 2, 1, materialFolder + "livingwood_twig");
    materialRecipe(withCondition(consumer, new ModLoadedCondition("botania")), MaterialisMaterials.dreamwood, ItemNameIngredient.from(new ResourceLocation("botania", "dreamwood")), 1, 1, materialFolder + "dreamwood");
    materialRecipe(withCondition(consumer, new ModLoadedCondition("botania")), MaterialisMaterials.dreamwood, ItemNameIngredient.from(new ResourceLocation("botania", "dreamwood_twig")), 2, 1, materialFolder + "dreamwood_twig");
    metalMaterialRecipe(consumer, MaterialisMaterials.manasteel, materialFolder, "manasteel", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.elementium, materialFolder, "elementium", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.terrasteel, materialFolder, "terrasteel", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.alfsteel, materialFolder, "alfsteel", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.draconium, materialFolder, "draconium", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.awakenedDraconium, materialFolder, "draconium_awakened", true);
    metalMaterialRecipe(consumer, MaterialisMaterials.fluxInfused, materialFolder, "flux_infused", true);
    // material casting
    materialMeltingCasting(consumer, MaterialisMaterials.fairy, MaterialisResources.FAIRY_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.brass, TinkerFluids.moltenBrass, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.aluminum, TinkerFluids.moltenAluminum, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.nickel, TinkerFluids.moltenNickel, materialFolder);
    // materialMeltingCasting(consumer, MaterialisMaterials.platinum, TinkerFluids.moltenPlatinum, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.uranium, TinkerFluids.moltenUranium, materialFolder);
    // materialMeltingCasting(consumer, MaterialisMaterials.tungsten, TinkerFluids.moltenTungsten, materialFolder);
    // materialMeltingCasting(consumer, MaterialisMaterials.invar, TinkerFluids.moltenInvar, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.refinedRadiance, MaterialisResources.REFINED_RADIANCE_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.shadowSteel, MaterialisResources.SHADOW_STEEL_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.pewter, TinkerFluids.moltenPewter, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.arcaneGold, MaterialisResources.ARCANE_GOLD_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.neptunium, MaterialisResources.NEPTUNIUM_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.quicksilver, MaterialisResources.QUICKSILVER_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.starmetal, MaterialisResources.STARMETAL_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.pinkSlime, MaterialisResources.PINK_SLIME_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.cloggrum, MaterialisResources.CLOGGRUM_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.froststeel, MaterialisResources.FROSTSTEEL_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.utherium, MaterialisResources.UTHERIUM_FLUID.OBJECT, materialFolder);
    materialComposite(withCondition(consumer, new AndCondition(tagCondition("ingots/cloggrum"), tagCondition("ingots/forgotten_metal"))), MaterialisMaterials.cloggrum, MaterialisMaterials.forgottenMetal, MaterialisResources.FORGOTTEN_FLUID.OBJECT, FluidValues.NUGGET * 3, false, compositeFolder);
    MaterialMeltingRecipeBuilder.material(MaterialisMaterials.forgottenMetal, new FluidStack(MaterialisResources.FORGOTTEN_FLUID.FLUID.get(), FluidValues.NUGGET * 3)).build(withCondition(consumer, new AndCondition(tagCondition("ingots/cloggrum"), tagCondition("ingots/forgotten_metal"))), modResource(materialFolder + "melting/forgotten_metal"));
    // materialMeltingCasting(consumer, MaterialisMaterials.osmium, TinkerFluids.moltenOsmium, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.refinedObsidian, TinkerFluids.moltenRefinedObsidian, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.refinedGlowstone, TinkerFluids.moltenRefinedGlowstone, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.psimetal, MaterialisResources.PSIMETAL_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.ebonyPsimetal, MaterialisResources.EBONY_PSIMETAL_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.ivoryPsimetal, MaterialisResources.IVORY_PSIMETAL_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.iesnium, MaterialisResources.IESNIUM_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.manasteel, MaterialisResources.MANASTEEL_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.elementium, MaterialisResources.ELEMENTIUM_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.terrasteel, MaterialisResources.TERRASTEEL_FLUID.OBJECT, materialFolder);
    materialComposite(withCondition(consumer, new ModLoadedCondition("mythicbotany")), MaterialisMaterials.terrasteel, MaterialisMaterials.alfsteel, MaterialisResources.ALFSTEEL_FLUID.OBJECT, FluidValues.NUGGET * 3, false, compositeFolder);
    MaterialMeltingRecipeBuilder.material(MaterialisMaterials.alfsteel, new FluidStack(MaterialisResources.ALFSTEEL_FLUID.FLUID.get(), FluidValues.NUGGET * 3)).build(withCondition(consumer, new ModLoadedCondition("mythicbotany")), modResource(materialFolder + "melting/alfsteel"));
    materialMeltingCasting(consumer, MaterialisMaterials.draconium, MaterialisResources.DRACONIUM_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.awakenedDraconium, MaterialisResources.AWAKENED_DRACONIUM_FLUID.OBJECT, materialFolder);
    materialMeltingCasting(consumer, MaterialisMaterials.fluxInfused, MaterialisResources.FLUX_INFUSED_FLUID.OBJECT, materialFolder);
    // modifiers
    ModifierRecipeBuilder.modifier(MaterialisModifiers.reapingModifier.get()).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("eidolon", "tattered_cloth")))).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("eidolon", "unholy_symbol")))).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("eidolon", "tattered_cloth")))).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("eidolon", "soul_shard")))).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("eidolon", "soul_shard")))).addSalvage(RandomItem.range(ItemNameOutput.fromName(new ResourceLocation("eidolon", "soul_shard"), 2), 0)).addSalvage(RandomItem.range(ItemNameOutput.fromName(new ResourceLocation("eidolon", "tattered_cloth"), 2), 0)).setTools(TinkerTags.Items.MELEE).setMaxLevel(1).setSlots(SlotType.ABILITY, 1).setGroup("materialis:eidolon").includeUnarmed().buildSalvage(consumer, prefix(MaterialisModifiers.reapingModifier, salvageFolder)).build(withCondition(consumer, new ModLoadedCondition("eidolon")), prefix(MaterialisModifiers.reapingModifier, modifierFolder));
    OverslimeModifierRecipeBuilder.modifier(MaterialisResources.PINK_SLIME_CRYSTAL.get(), 70).build(withCondition(consumer, new ModLoadedCondition("industrialforegoing")), prefix(TinkerModifiers.overslime, modifierFolder));
    SwappableModifierRecipeBuilder.modifier(MaterialisModifiers.runedModifier.get(), "rune").addInput(getTag("quark", "runes")).addSalvage(RandomItem.chance(ItemNameOutput.fromName(new ResourceLocation("quark", "blank_rune")), 0.5f)).setTools(TinkerTags.Items.MODIFIABLE).setRequirements(ModifierMatch.entry(TinkerModifiers.shiny.get())).setRequirementsError("recipe.materialis.modifier.runed_requirements").setGroup("materialis:quark").buildSalvage(consumer, prefix(MaterialisModifiers.runedModifier, salvageFolder)).build(ConsumerWrapperBuilder.wrap(MaterialisResources.runeModifierSerializer.get()).addCondition(new ModLoadedCondition("quark")).build(consumer), prefix(MaterialisModifiers.runedModifier, modifierFolder));
    Ingredient interactableWithDurability = new IngredientIntersection(Ingredient.of(TinkerTags.Items.DURABILITY), Ingredient.of(TinkerTags.Items.INTERACTABLE));
    ModifierRecipeBuilder.modifier(MaterialisModifiers.wrenchingModifier.get()).setTools(new IngredientWithout(interactableWithDurability, Ingredient.of(MaterialisItemTags.WRENCHING))).addInput(SizedIngredient.of(MaterialIngredient.fromItem(MaterialisResources.WRENCH_HEAD.get()))).addInput(TinkerTags.Items.INGOTS_NETHERITE_SCRAP).addInput(SizedIngredient.of(MaterialIngredient.fromItem(TinkerToolParts.toolBinding.get()))).addSalvage(Items.NETHERITE_SCRAP, 0.35f).setMaxLevel(1).setSlots(SlotType.ABILITY, 1).buildSalvage(consumer, prefix(MaterialisModifiers.wrenchingModifier, salvageFolder)).build(consumer, prefix(MaterialisModifiers.wrenchingModifier, modifierFolder));
    ModifierRecipeBuilder.modifier(MaterialisModifiers.galvanizedModifier.get()).setTools(MaterialisItemTags.GALVANIZABLE).addInput(Items.PHANTOM_MEMBRANE).addInput(Tags.Items.INGOTS_IRON).addSalvage(Items.IRON_INGOT, 0.7f).addSalvage(Items.PHANTOM_MEMBRANE, 0.3f).setSlots(SlotType.UPGRADE, 2).buildSalvage(consumer, prefix(MaterialisModifiers.galvanizedModifier, salvageFolder)).build(consumer, prefix(MaterialisModifiers.galvanizedModifier, modifierFolder));
    ModifierMatch wrenching = ModifierMatch.list(1, ModifierMatch.entry(MaterialisModifiers.wrenchingModifier.get()), ModifierMatch.entry(MaterialisModifiers.wrenchingModifierHidden.get()));
    ModifierRecipeBuilder.modifier(MaterialisModifiers.thermalWrenchingModifier.get()).setTools(interactableWithDurability).addInput(getTag("forge", "gears/nickel")).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("thermal", "wrench")))).addInput(getTag("forge", "gears/nickel")).addSalvage(getTag("forge", "gears/nickel"), 0, 2).setRequirements(wrenching).setRequirementsError("recipe.materialis.modifier.thermal_wrenching_requirements").setMaxLevel(1).setSlots(SlotType.UPGRADE, 1).setGroup("materialis:thermal").buildSalvage(consumer, prefix(MaterialisModifiers.thermalWrenchingModifier, salvageFolder)).build(withCondition(consumer, new ModLoadedCondition("thermal")), prefix(MaterialisModifiers.thermalWrenchingModifier, modifierFolder));
    ModifierRecipeBuilder.modifier(MaterialisModifiers.createWrenchingModifier.get()).setTools(interactableWithDurability).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("create", "cogwheel")))).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("create", "wrench")))).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("create", "cogwheel")))).addSalvage(RandomItem.range(ItemNameOutput.fromName(new ResourceLocation("create", "cogwheel"), 2), 0)).addSalvage(RandomItem.chance(ItemNameOutput.fromName(new ResourceLocation("create", "wrench")), 0.9f)).setRequirements(wrenching).setRequirementsError("recipe.materialis.modifier.create_wrenching_requirements").setMaxLevel(1).setSlots(SlotType.UPGRADE, 1).setGroup("materialis:create").buildSalvage(consumer, prefix(MaterialisModifiers.createWrenchingModifier, salvageFolder)).build(withCondition(consumer, new ModLoadedCondition("create")), prefix(MaterialisModifiers.createWrenchingModifier, modifierFolder));
    ModifierRecipeBuilder.modifier(MaterialisModifiers.immersiveWrenchingModifier.get()).setTools(interactableWithDurability).addInput(getTag("forge", "plates/copper")).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("immersiveengineering", "hammer")))).addInput(getTag("forge", "plates/copper")).addSalvage(getTag("forge", "plates/copper"), 0, 2).setRequirements(wrenching).setRequirementsError("recipe.materialis.modifier.immersive_wrenching_requirements").setMaxLevel(1).setSlots(SlotType.UPGRADE, 1).setGroup("materialis:immersiveengineering").buildSalvage(consumer, prefix(MaterialisModifiers.immersiveWrenchingModifier, salvageFolder)).build(withCondition(consumer, new ModLoadedCondition("immersiveengineering")), prefix(MaterialisModifiers.immersiveWrenchingModifier, modifierFolder));
    ModifierRecipeBuilder.modifier(MaterialisModifiers.pipeWrenchingModifier.get()).setTools(interactableWithDurability).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("prettypipes", "pipe")))).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("prettypipes", "wrench")))).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("prettypipes", "pipe")))).addSalvage(RandomItem.range(ItemNameOutput.fromName(new ResourceLocation("prettypipes", "pipe"), 2), 0)).addSalvage(RandomItem.chance(ItemNameOutput.fromName(new ResourceLocation("prettypipes", "wrench")), 0.9f)).setRequirements(wrenching).setRequirementsError("recipe.materialis.modifier.pipe_wrenching_requirements").setMaxLevel(1).setSlots(SlotType.UPGRADE, 1).setGroup("materialis:prettypipes").buildSalvage(consumer, prefix(MaterialisModifiers.pipeWrenchingModifier, salvageFolder)).build(withCondition(consumer, new ModLoadedCondition("prettypipes")), prefix(MaterialisModifiers.pipeWrenchingModifier, modifierFolder));
    ModifierRecipeBuilder.modifier(MaterialisModifiers.psionizingRadiationModifier.get()).addInput(getTag("forge", "ingots/psimetal")).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("psi", "cad_socket_basic")))).addInput(getTag("forge", "ingots/psimetal")).addInput(getTag("forge", "gems/psigem")).addInput(getTag("forge", "gems/psigem")).addSalvage(RandomItem.range(ItemNameOutput.fromName(new ResourceLocation("psi", "psimetal"), 2), 0)).addSalvage(RandomItem.range(ItemNameOutput.fromName(new ResourceLocation("psi", "psigem"), 2), 0)).addSalvage(RandomItem.chance(ItemNameOutput.fromName(new ResourceLocation("psi", "cad_socket_basic")), 0.5f)).setTools(TinkerTags.Items.HELD).setSlots(SlotType.ABILITY, 1).setGroup("materialis:psi").buildSalvage(consumer, prefix(MaterialisModifiers.psionizingRadiationModifier, salvageFolder)).build(psiLoaded, prefix(MaterialisModifiers.psionizingRadiationModifier, modifierFolder));
    ModifierRecipeBuilder.modifier(MaterialisModifiers.spellCastingModifier.get()).addInput(getTag("forge", "ingots/ebony_psimetal")).addInput(getTag("forge", "gems/psigem")).addInput(getTag("forge", "ingots/ivory_psimetal")).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("psi", "cad_battery_ultradense")))).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("psi", "cad_assembly_psimetal")))).addSalvage(RandomItem.chance(ItemNameOutput.fromName(new ResourceLocation("psi", "ebony_psimetal")), 0.4f)).addSalvage(RandomItem.chance(ItemNameOutput.fromName(new ResourceLocation("psi", "ivory_psimetal")), 0.4f)).addSalvage(RandomItem.chance(ItemNameOutput.fromName(new ResourceLocation("psi", "psigem")), 0.2f)).addSalvage(RandomItem.chance(ItemNameOutput.fromName(new ResourceLocation("psi", "cad_battery_ultradense")), 0.3f)).addSalvage(RandomItem.chance(ItemNameOutput.fromName(new ResourceLocation("psi", "cad_assembly_psimetal")), 0.6f)).setRequirements(ModifierMatch.list(1, ModifierMatch.entry(MaterialisModifiers.psionizingRadiationModifier.get()), ModifierMatch.entry(MaterialisModifiers.lesserPsionizingRadiationModifier.get()))).setRequirementsError("recipe.materialis.modifier.casting_requirements").setTools(TinkerTags.Items.HELD).setSlots(SlotType.ABILITY, 1).setGroup("materialis:psi").buildSalvage(consumer, prefix(MaterialisModifiers.spellCastingModifier, salvageFolder)).build(psiLoaded, prefix(MaterialisModifiers.spellCastingModifier, modifierFolder));
    ModifierRecipeBuilder.modifier(MaterialisModifiers.spellSocketModifier.get()).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("psi", "cad_socket_basic")))).addSalvage(RandomItem.chance(ItemNameOutput.fromName(new ResourceLocation("psi", "cad_socket_basic")), 0.4f)).setTools(TinkerTags.Items.MODIFIABLE).setMaxLevel(5).setSlots(SlotType.UPGRADE, 1).setGroup("materialis:psi").buildSalvage(consumer, prefix(MaterialisModifiers.spellSocketModifier, salvageFolder)).build(psiLoaded, prefix(MaterialisModifiers.spellSocketModifier, modifierFolder));
    SwappableModifierRecipeBuilder.modifier(MaterialisModifiers.colorizedModifier.get(), "colorizer").addInput(getTag("psi", "colorizers")).addSalvage(RandomItem.chance(ItemNameOutput.fromName(new ResourceLocation("psi", "psidust")), 0.3f)).addSalvage(Items.IRON_INGOT, 0.7f).setTools(TinkerTags.Items.MODIFIABLE).setGroup("materialis:psi").buildSalvage(consumer, prefix(MaterialisModifiers.colorizedModifier, salvageFolder)).build(ConsumerWrapperBuilder.wrap(MaterialisResources.colorizerModifierSerializer.get()).addCondition(new ModLoadedCondition("psi")).build(consumer), prefix(MaterialisModifiers.colorizedModifier, modifierFolder));
    ICondition capacitorIsUseful = new OrCondition(new ModLoadedCondition("draconicevolution"), new ModLoadedCondition("redstone_arsenal"));
    ModifierRecipeBuilder.modifier(MaterialisModifiers.capacitorModifier.get()).addInput(getTag("forge", "ingots/lead")).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("thermal", "rf_coil")))).addInput(getTag("forge", "ingots/lead")).addSalvage(getTag("forge", "dusts/redstone"), 0, 1).setTools(TinkerTags.Items.MODIFIABLE).setMaxLevel(5).setSlots(SlotType.UPGRADE, 1).setGroup("materialis:flux").buildSalvage(consumer, prefix(MaterialisModifiers.capacitorModifier, salvageFolder)).build(withCondition(consumer, new AndCondition(capacitorIsUseful, new ModLoadedCondition("thermal"))), prefix(MaterialisModifiers.capacitorModifier, modifierFolder + "thermal_"));
    ModifierRecipeBuilder.modifier(MaterialisModifiers.capacitorModifier.get()).addInput(getTag("forge", "ingots/lead")).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("immersiveengineering", "wirecoil_copper")))).addInput(getTag("forge", "dusts/redstone")).setTools(TinkerTags.Items.MODIFIABLE).setMaxLevel(5).setSlots(SlotType.UPGRADE, 1).setGroup("materialis:flux").build(withCondition(consumer, new AndCondition(capacitorIsUseful, new ModLoadedCondition("immersiveengineering"))), prefix(MaterialisModifiers.capacitorModifier, modifierFolder + "immersiveengineering_"));
    ModifierRecipeBuilder.modifier(MaterialisModifiers.capacitorModifier.get()).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("mekanism", "alloy_infused")))).addInput(getTag("forge", "ingots/gold")).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("mekanism", "alloy_infused")))).setTools(TinkerTags.Items.MODIFIABLE).setMaxLevel(5).setSlots(SlotType.UPGRADE, 1).setGroup("materialis:flux").build(withCondition(consumer, new AndCondition(capacitorIsUseful, new ModLoadedCondition("mekanism"))), prefix(MaterialisModifiers.capacitorModifier, modifierFolder + "mekanism_"));
    ModifierRecipeBuilder.modifier(MaterialisModifiers.capacitorModifier.get()).addInput(getTag("forge", "dusts/redstone")).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("draconicevolution", "draconium_core")))).addInput(getTag("forge", "dusts/redstone")).setTools(TinkerTags.Items.MODIFIABLE).setMaxLevel(5).setSlots(SlotType.UPGRADE, 1).setGroup("materialis:flux").build(withCondition(consumer, capacitorIsUseful), prefix(MaterialisModifiers.capacitorModifier, modifierFolder + "draconicevolution_"));
    SwappableModifierRecipeBuilder.modifier(MaterialisModifiers.psionizingRadiationModifierSensor.get(), "sensor").setTools(MaterialisItemTags.SENSOR_SLOTTABLE).addInput(MaterialisItemTags.SENSOR).addSalvage(getTag("forge", "ingots/psimetal"), 0, 2).setSlots(MaterialisResources.SENSOR_SLOT, 1).buildSalvage(psiLoaded, prefix(MaterialisModifiers.psionizingRadiationModifierSensor, salvageFolder)).build(ConsumerWrapperBuilder.wrap(MaterialisResources.sensorModifierSerializer.get()).addCondition(new ModLoadedCondition("psi")).build(consumer), prefix(MaterialisModifiers.psionizingRadiationModifierSensor, modifierFolder));
    ModifierRecipeBuilder.modifier(MaterialisModifiers.engineersGogglesModifier.get()).setTools(TinkerTags.Items.HELMETS).addInput(SizedIngredient.of(ItemNameIngredient.from(new ResourceLocation("create", "goggles")))).addSalvage(RandomItem.chance(ItemNameOutput.fromName(new ResourceLocation("create", "goggles")), 0.9f)).setMaxLevel(1).setSlots(SlotType.UPGRADE, 1).setGroup("materialis:create").buildSalvage(consumer, prefix(MaterialisModifiers.engineersGogglesModifier, salvageFolder)).build(withCondition(consumer, new ModLoadedCondition("create")), prefix(MaterialisModifiers.engineersGogglesModifier, modifierFolder));
    // texture recipes
    Ingredient exosuit = Ingredient.of(MaterialisResources.PSIMETAL_EXOSUIT.values().stream().map(ItemStack::new));
    List<Item> armorItems = new ArrayList<Item>();
    armorItems.addAll(TinkerTools.plateArmor.values());
    armorItems.addAll(MaterialisResources.PSIMETAL_EXOSUIT.values());
    Ingredient armor = Ingredient.of(armorItems.stream().map(ItemStack::new));
    plateTexture(psiLoaded, exosuit, MaterialIds.iron, false, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.copper, false, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.slimesteel, false, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.roseGold, false, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.pigIron, false, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.manyullyn, false, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.hepatizon, false, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.netherite, false, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.osmium, true, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.tungsten, true, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.platinum, true, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.silver, true, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.lead, true, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.aluminum, true, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.nickel, true, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.tin, true, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.zinc, true, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.uranium, true, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.steel, true, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.bronze, true, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.constantan, true, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.invar, true, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.electrum, true, slotlessFolder);
    plateTexture(psiLoaded, exosuit, MaterialIds.brass, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.fairy, false, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.refinedRadiance, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.shadowSteel, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.pewter, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.arcaneGold, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.neptunium, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.quicksilver, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.starmetal, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.pinkSlime, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.cloggrum, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.froststeel, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.utherium, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.regalium, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.forgottenMetal, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.refinedObsidian, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.refinedGlowstone, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.psimetal, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.ebonyPsimetal, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.ivoryPsimetal, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.iesnium, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.manasteel, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.elementium, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.terrasteel, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.alfsteel, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.draconium, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.awakenedDraconium, true, slotlessFolder);
    plateTexture(consumer, armor, MaterialisMaterials.fluxInfused, true, slotlessFolder);
    Ingredient slimesuit = Ingredient.of(TinkerTools.slimesuit.values().stream().map(ItemStack::new));
    SwappableModifierRecipeBuilder.modifier(TinkerModifiers.embellishment.get(), MaterialisMaterials.pinkSlimeball.toString()).setTools(slimesuit).addInput(Ingredient.of(MaterialisItemTags.PINK_SLIME)).addInput(Ingredient.of(MaterialisItemTags.PINK_SLIME)).addInput(Ingredient.of(MaterialisItemTags.PINK_SLIME)).addInput(Ingredient.of(MaterialisItemTags.PINK_SLIME)).addInput(Ingredient.of(MaterialisItemTags.PINK_SLIME)).build(industrialForegoingLoaded, wrap(TinkerModifiers.embellishment, slotlessFolder, "_pink_slimeball"));
}
Also used : IngredientIntersection(slimeknights.mantle.recipe.ingredient.IngredientIntersection) IngredientWithout(slimeknights.mantle.recipe.ingredient.IngredientWithout) ModifierMatch(slimeknights.tconstruct.library.recipe.modifiers.ModifierMatch) NotCondition(net.minecraftforge.common.crafting.conditions.NotCondition) FluidStack(net.minecraftforge.fluids.FluidStack) ArrayList(java.util.ArrayList) AndCondition(net.minecraftforge.common.crafting.conditions.AndCondition) Item(net.minecraft.item.Item) RandomItem(slimeknights.tconstruct.library.recipe.RandomItem) EffectSpillingEffect(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.EffectSpillingEffect) IngotWithBlockNNugget(com.rcx.materialis.MaterialisResources.IngotWithBlockNNugget) ModLoadedCondition(net.minecraftforge.common.crafting.conditions.ModLoadedCondition) EntityIngredient(slimeknights.mantle.recipe.EntityIngredient) ItemNameIngredient(slimeknights.mantle.recipe.data.ItemNameIngredient) MaterialIngredient(slimeknights.tconstruct.library.recipe.ingredient.MaterialIngredient) SizedIngredient(slimeknights.mantle.recipe.SizedIngredient) Ingredient(net.minecraft.item.crafting.Ingredient) ResourceLocation(net.minecraft.util.ResourceLocation) IFinishedRecipe(net.minecraft.data.IFinishedRecipe) OrCondition(net.minecraftforge.common.crafting.conditions.OrCondition) ItemStack(net.minecraft.item.ItemStack) ICondition(net.minecraftforge.common.crafting.conditions.ICondition)

Example 3 with NotCondition

use of net.minecraftforge.common.crafting.conditions.NotCondition in project TinkersConstruct by SlimeKnights.

the class ModifierRecipeProvider method addSpillingRecipes.

private void addSpillingRecipes(Consumer<FinishedRecipe> consumer) {
    String folder = "tools/spilling/";
    // vanilla
    SpillingRecipeBuilder.forFluid(Fluids.WATER, FluidAttributes.BUCKET_VOLUME / 20).addEffect(new DamageSpillingEffect(LivingEntityPredicate.WATER_SENSITIVE, DamageType.PIERCING, 2f)).addEffect(ExtinguishSpillingEffect.INSTANCE).save(consumer, modResource(folder + "water"));
    SpillingRecipeBuilder.forFluid(Fluids.LAVA, FluidAttributes.BUCKET_VOLUME / 20).addEffect(new DamageSpillingEffect(LivingEntityPredicate.NOT_FIRE_IMMUNE, DamageType.FIRE, 2f)).addEffect(new SetFireSpillingEffect(10)).save(consumer, modResource(folder + "lava"));
    SpillingRecipeBuilder.forFluid(Tags.Fluids.MILK, FluidAttributes.BUCKET_VOLUME / 10).addEffect(new CureEffectsSpillingEffect(new ItemStack(Items.MILK_BUCKET))).addEffect(StrongBonesModifier.SPILLING_EFFECT).save(consumer, modResource(folder + "milk"));
    // blaze - more damage, less fire
    SpillingRecipeBuilder.forFluid(TinkerFluids.blazingBlood.getLocalTag(), FluidAttributes.BUCKET_VOLUME / 20).addEffect(new DamageSpillingEffect(LivingEntityPredicate.NOT_FIRE_IMMUNE, DamageType.FIRE, 3f)).addEffect(new SetFireSpillingEffect(5)).save(consumer, prefix(TinkerFluids.blazingBlood, folder));
    // slime
    int slimeballPiece = FluidValues.SLIMEBALL / 5;
    // earth - lucky
    SpillingRecipeBuilder.forFluid(TinkerFluids.earthSlime.getForgeTag(), slimeballPiece).addEffect(new EffectSpillingEffect(MobEffects.LUCK, 15, 1)).addEffect(new EffectSpillingEffect(MobEffects.MOVEMENT_SLOWDOWN, 15, 1)).save(consumer, prefix(TinkerFluids.earthSlime, folder));
    // sky - jump boost
    SpillingRecipeBuilder.forFluid(TinkerFluids.skySlime.getLocalTag(), slimeballPiece).addEffect(new EffectSpillingEffect(MobEffects.JUMP, 20, 1)).addEffect(new EffectSpillingEffect(MobEffects.MOVEMENT_SLOWDOWN, 15, 1)).save(consumer, prefix(TinkerFluids.skySlime, folder));
    // ender - levitation
    SpillingRecipeBuilder.forFluid(TinkerFluids.enderSlime.getLocalTag(), slimeballPiece).addEffect(new EffectSpillingEffect(MobEffects.LEVITATION, 5, 1)).addEffect(new EffectSpillingEffect(MobEffects.MOVEMENT_SLOWDOWN, 15, 1)).save(consumer, prefix(TinkerFluids.enderSlime, folder));
    // slimelike
    // blood - food
    SpillingRecipeBuilder.forFluid(TinkerFluids.blood.getLocalTag(), slimeballPiece).addEffect(new RestoreHungerSpillingEffect(1, 0.2f)).addEffect(new EffectSpillingEffect(MobEffects.DIG_SLOWDOWN, 10, 1)).save(consumer, prefix(TinkerFluids.blood, folder));
    // venom - poison
    SpillingRecipeBuilder.forFluid(TinkerFluids.venom.getLocalTag(), slimeballPiece).addEffect(new EffectSpillingEffect(MobEffects.POISON, 25, 1)).save(consumer, prefix(TinkerFluids.venom, folder));
    // magma - fire resistance
    SpillingRecipeBuilder.forFluid(TinkerFluids.magma.getForgeTag(), slimeballPiece).addEffect(new EffectSpillingEffect(MobEffects.FIRE_RESISTANCE, 25, 1)).save(consumer, prefix(TinkerFluids.magma, folder));
    // soul - slowness and blindness
    SpillingRecipeBuilder.forFluid(TinkerFluids.liquidSoul.getLocalTag(), slimeballPiece).addEffect(new EffectSpillingEffect(MobEffects.MOVEMENT_SLOWDOWN, 25, 2)).addEffect(new EffectSpillingEffect(MobEffects.BLINDNESS, 5, 1)).save(consumer, prefix(TinkerFluids.liquidSoul, folder));
    // ender - teleporting
    SpillingRecipeBuilder.forFluid(TinkerFluids.moltenEnder.getForgeTag(), FluidAttributes.BUCKET_VOLUME / 20).addEffect(new DamageSpillingEffect(DamageType.MAGIC, 1f)).addEffect(TeleportSpillingEffect.INSTANCE).save(consumer, prefix(TinkerFluids.moltenEnder, folder));
    // multi-recipes
    SpillingRecipeBuilder.forFluid(TinkerTags.Fluids.GLASS_SPILLING, FluidAttributes.BUCKET_VOLUME / 10).addEffect(new DamageSpillingEffect(LivingEntityPredicate.NOT_FIRE_IMMUNE, DamageType.FIRE, 1f)).addEffect(new SetFireSpillingEffect(3)).save(consumer, modResource(folder + "glass"));
    SpillingRecipeBuilder.forFluid(TinkerTags.Fluids.CLAY_SPILLING, FluidAttributes.BUCKET_VOLUME / 20).addEffect(new DamageSpillingEffect(LivingEntityPredicate.NOT_FIRE_IMMUNE, DamageType.FIRE, 1.5f)).addEffect(new SetFireSpillingEffect(3)).save(consumer, modResource(folder + "clay"));
    SpillingRecipeBuilder.forFluid(TinkerTags.Fluids.CHEAP_METAL_SPILLING, FluidValues.NUGGET).addEffect(new DamageSpillingEffect(LivingEntityPredicate.NOT_FIRE_IMMUNE, DamageType.FIRE, 1.5f)).addEffect(new SetFireSpillingEffect(7)).save(consumer, modResource(folder + "metal_cheap"));
    SpillingRecipeBuilder.forFluid(TinkerTags.Fluids.AVERAGE_METAL_SPILLING, FluidValues.NUGGET).addEffect(new DamageSpillingEffect(LivingEntityPredicate.NOT_FIRE_IMMUNE, DamageType.FIRE, 2f)).addEffect(new SetFireSpillingEffect(7)).save(consumer, modResource(folder + "metal_average"));
    SpillingRecipeBuilder.forFluid(TinkerTags.Fluids.EXPENSIVE_METAL_SPILLING, FluidValues.NUGGET).addEffect(new DamageSpillingEffect(LivingEntityPredicate.NOT_FIRE_IMMUNE, DamageType.FIRE, 2.5f)).addEffect(new SetFireSpillingEffect(7)).save(consumer, modResource(folder + "metal_expensive"));
    // gold applies magic
    SpillingRecipeBuilder.forFluid(TinkerFluids.moltenGold.getForgeTag(), FluidValues.NUGGET).addEffect(new DamageSpillingEffect(DamageType.MAGIC, 2f)).addEffect(new SetFireSpillingEffect(3)).save(consumer, prefix(TinkerFluids.moltenGold, folder));
    // pig iron fills you up magic
    SpillingRecipeBuilder.forFluid(TinkerFluids.moltenPigIron.getLocalTag(), FluidValues.NUGGET).addEffect(new RestoreHungerSpillingEffect(2, 0.3f)).addEffect(new SetFireSpillingEffect(2)).save(consumer, prefix(TinkerFluids.moltenPigIron, folder));
    // uranium also does poison
    SpillingRecipeBuilder.forFluid(TinkerFluids.moltenUranium.getLocalTag(), FluidValues.NUGGET).addEffect(new DamageSpillingEffect(LivingEntityPredicate.NOT_FIRE_IMMUNE, DamageType.FIRE, 1.5f)).addEffect(new EffectSpillingEffect(MobEffects.POISON, 10, 1)).addEffect(new SetFireSpillingEffect(3)).save(consumer, prefix(TinkerFluids.moltenUranium, folder));
    // potion fluid compat
    ResourceLocation potionTag = new ResourceLocation("forge", "potion");
    // standard potion is 250 mb, but we want a smaller number. For the effects, we really want to divide into 4 pieces
    SpillingRecipeBuilder.forFluid(FluidIngredient.of(FluidTags.createOptional(potionTag), FluidAttributes.BUCKET_VOLUME / 8)).addEffect(new PotionFluidEffect(0.5f, TagPredicate.ANY)).save(withCondition(consumer, new NotCondition(new FluidTagEmptyCondition(potionTag))), modResource(folder + "potion_fluid"));
    // create has three types of bottles stored on their fluid, react to it to boost
    Function<String, TagPredicate> createBottle = value -> {
        CompoundTag compound = new CompoundTag();
        compound.putString("Bottle", value);
        return new TagPredicate(compound);
    };
    String create = "create";
    SpillingRecipeBuilder.forFluid(FluidNameIngredient.of(new ResourceLocation(create, "potion"), FluidAttributes.BUCKET_VOLUME / 8)).addEffect(new PotionFluidEffect(0.25f, createBottle.apply("REGULAR"))).addEffect(new PotionFluidEffect(0.5f, createBottle.apply("SPLASH"))).addEffect(new PotionFluidEffect(1f, createBottle.apply("LINGERING"))).save(withCondition(consumer, modLoaded(create)), modResource(folder + "create_potion_fluid"));
}
Also used : ResourceLocation(net.minecraft.resources.ResourceLocation) Tags(net.minecraftforge.common.Tags) Arrays(java.util.Arrays) Items(net.minecraft.world.item.Items) FluidNameIngredient(slimeknights.mantle.recipe.data.FluidNameIngredient) LivingEntityPredicate(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.DamageSpillingEffect.LivingEntityPredicate) Item(net.minecraft.world.item.Item) ItemNameIngredient(slimeknights.mantle.recipe.data.ItemNameIngredient) TinkerHeadType(slimeknights.tconstruct.world.TinkerHeadType) MaterialIds(slimeknights.tconstruct.tools.data.material.MaterialIds) TinkerWorld(slimeknights.tconstruct.world.TinkerWorld) FluidAttributes(net.minecraftforge.fluids.FluidAttributes) SlotType(slimeknights.tconstruct.library.tools.SlotType) SpillingRecipeBuilder(slimeknights.tconstruct.library.recipe.modifiers.spilling.SpillingRecipeBuilder) ArmorSlotType(slimeknights.tconstruct.tools.item.ArmorSlotType) TinkerGadgets(slimeknights.tconstruct.gadgets.TinkerGadgets) SwappableModifierRecipeBuilder(slimeknights.tconstruct.library.recipe.modifiers.adding.SwappableModifierRecipeBuilder) OverslimeModifierRecipeBuilder(slimeknights.tconstruct.library.recipe.modifiers.adding.OverslimeModifierRecipeBuilder) SizedIngredient(slimeknights.mantle.recipe.ingredient.SizedIngredient) CureEffectsSpillingEffect(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.CureEffectsSpillingEffect) ItemCastingRecipeBuilder(slimeknights.tconstruct.library.recipe.casting.ItemCastingRecipeBuilder) TeleportSpillingEffect(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.TeleportSpillingEffect) ItemTags(net.minecraft.tags.ItemTags) SlimeType(slimeknights.tconstruct.shared.block.SlimeType) ModifierRemovalRecipe(slimeknights.tconstruct.tools.recipe.ModifierRemovalRecipe) ItemNameOutput(slimeknights.mantle.recipe.data.ItemNameOutput) TinkerTags(slimeknights.tconstruct.common.TinkerTags) ModifierMatch(slimeknights.tconstruct.library.recipe.modifiers.ModifierMatch) TinkerTools(slimeknights.tconstruct.tools.TinkerTools) Blocks(net.minecraft.world.level.block.Blocks) ConfigEnabledCondition(slimeknights.tconstruct.common.json.ConfigEnabledCondition) MaterialIngredient(slimeknights.tconstruct.library.recipe.ingredient.MaterialIngredient) StrongBonesModifier(slimeknights.tconstruct.tools.modifiers.traits.skull.StrongBonesModifier) CompoundTag(net.minecraft.nbt.CompoundTag) ModifierRepairRecipeBuilder(slimeknights.tconstruct.library.recipe.tinkerstation.repairing.ModifierRepairRecipeBuilder) FluidValues(slimeknights.tconstruct.library.recipe.FluidValues) Modifier(slimeknights.tconstruct.library.modifiers.Modifier) ItemStack(net.minecraft.world.item.ItemStack) ModifierRecipeBuilder(slimeknights.tconstruct.library.recipe.modifiers.adding.ModifierRecipeBuilder) SpecialRecipeBuilder(net.minecraft.data.recipes.SpecialRecipeBuilder) IngredientIntersection(slimeknights.mantle.recipe.ingredient.IngredientIntersection) ShapedRecipeBuilder(net.minecraft.data.recipes.ShapedRecipeBuilder) EntityType(net.minecraft.world.entity.EntityType) RandomItem(slimeknights.tconstruct.library.recipe.RandomItem) SetFireSpillingEffect(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.SetFireSpillingEffect) TinkerModifiers(slimeknights.tconstruct.tools.TinkerModifiers) MobEffects(net.minecraft.world.effect.MobEffects) DamageType(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.DamageSpillingEffect.DamageType) Function(java.util.function.Function) Ingredient(net.minecraft.world.item.crafting.Ingredient) CompoundIngredient(slimeknights.mantle.recipe.data.CompoundIngredient) FluidIngredient(slimeknights.mantle.recipe.ingredient.FluidIngredient) EffectSpillingEffect(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.EffectSpillingEffect) ItemLike(net.minecraft.world.level.ItemLike) ShapelessRecipeBuilder(net.minecraft.data.recipes.ShapelessRecipeBuilder) TinkerToolParts(slimeknights.tconstruct.tools.TinkerToolParts) FluidTagEmptyCondition(slimeknights.mantle.recipe.helper.FluidTagEmptyCondition) PotionFluidEffect(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.PotionFluidEffect) ConditionalRecipe(net.minecraftforge.common.crafting.ConditionalRecipe) Fluids(net.minecraft.world.level.material.Fluids) TinkerMaterials(slimeknights.tconstruct.shared.TinkerMaterials) DataGenerator(net.minecraft.data.DataGenerator) TinkerCommons(slimeknights.tconstruct.shared.TinkerCommons) IngredientDifference(slimeknights.mantle.recipe.ingredient.IngredientDifference) ArmorDyeingRecipe(slimeknights.tconstruct.tools.recipe.ArmorDyeingRecipe) TinkerFluids(slimeknights.tconstruct.fluids.TinkerFluids) FluidTags(net.minecraft.tags.FluidTags) IncrementalModifierRecipeBuilder(slimeknights.tconstruct.library.recipe.modifiers.adding.IncrementalModifierRecipeBuilder) Tag(net.minecraft.tags.Tag) MaterialVariantId(slimeknights.tconstruct.library.materials.definition.MaterialVariantId) TagPredicate(slimeknights.tconstruct.library.recipe.TagPredicate) FinishedRecipe(net.minecraft.data.recipes.FinishedRecipe) EntityIngredient(slimeknights.mantle.recipe.ingredient.EntityIngredient) DamageSpillingEffect(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.DamageSpillingEffect) TConstruct(slimeknights.tconstruct.TConstruct) ExtinguishSpillingEffect(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.ExtinguishSpillingEffect) Consumer(java.util.function.Consumer) TinkerSmeltery(slimeknights.tconstruct.smeltery.TinkerSmeltery) SeveringRecipeBuilder(slimeknights.tconstruct.library.recipe.modifiers.severing.SeveringRecipeBuilder) RestoreHungerSpillingEffect(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.RestoreHungerSpillingEffect) BaseRecipeProvider(slimeknights.tconstruct.common.data.BaseRecipeProvider) MaterialId(slimeknights.tconstruct.library.materials.definition.MaterialId) FluidObject(slimeknights.mantle.registration.object.FluidObject) NotCondition(net.minecraftforge.common.crafting.conditions.NotCondition) TrueCondition(net.minecraftforge.common.crafting.conditions.TrueCondition) FrameType(slimeknights.tconstruct.gadgets.entity.FrameType) ItemOutput(slimeknights.mantle.recipe.helper.ItemOutput) DamageSpillingEffect(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.DamageSpillingEffect) NotCondition(net.minecraftforge.common.crafting.conditions.NotCondition) CureEffectsSpillingEffect(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.CureEffectsSpillingEffect) FluidTagEmptyCondition(slimeknights.mantle.recipe.helper.FluidTagEmptyCondition) TagPredicate(slimeknights.tconstruct.library.recipe.TagPredicate) EffectSpillingEffect(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.EffectSpillingEffect) SetFireSpillingEffect(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.SetFireSpillingEffect) PotionFluidEffect(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.PotionFluidEffect) RestoreHungerSpillingEffect(slimeknights.tconstruct.library.recipe.modifiers.spilling.effects.RestoreHungerSpillingEffect) ResourceLocation(net.minecraft.resources.ResourceLocation) ItemStack(net.minecraft.world.item.ItemStack) CompoundTag(net.minecraft.nbt.CompoundTag)

Example 4 with NotCondition

use of net.minecraftforge.common.crafting.conditions.NotCondition in project Materialis by RCXcrafter.

the class MaterialisMaterials method addMaterials.

@Override
protected void addMaterials() {
    addMaterial(fairy, 3, ORDER_NETHER + ORDER_COMPAT, false, 0xFF87BC);
    // general oredict materials
    addCompatMetalMaterial(brass, 3, ORDER_WEAPON + ORDER_COMPAT, 0xFFD359);
    addCompatMetalMaterial(aluminum, 2, ORDER_HARVEST + ORDER_COMPAT, 0xE6B7BF);
    addCompatMetalMaterial(nickel, 2, ORDER_HARVEST + ORDER_COMPAT, 0xF9EA98);
    // addCompatMetalMaterial(platinum, 3, ORDER_HARVEST + ORDER_COMPAT, 0xA1FFFF);
    this.addRedirect(platinum, new Redirect(new ResourceLocation(TConstruct.MOD_ID, "platinum"), null));
    addCompatMetalMaterial(uranium, 2, ORDER_HARVEST + ORDER_COMPAT, 0x42BE30);
    // addCompatMetalMaterial(osmium, 2, ORDER_WEAPON + ORDER_COMPAT, 0xCDE8FD);
    this.addRedirect(osmium, new Redirect(new ResourceLocation(TConstruct.MOD_ID, "osmium"), null));
    // addCompatMetalMaterial(tungsten, 3, ORDER_WEAPON + ORDER_COMPAT, 0xA7A88F);
    this.addRedirect(tungsten, new Redirect(new ResourceLocation(TConstruct.MOD_ID, "tungsten"), null));
    // addCompatMetalMaterial(invar, 3, ORDER_HARVEST + ORDER_COMPAT, 0xBAE6D5);
    this.addRedirect(invar, new Redirect(new ResourceLocation(TConstruct.MOD_ID, "invar"), null));
    // create materials
    addMaterial(roseQuartz, 3, ORDER_NETHER + ORDER_COMPAT, true, 0xFF8C80, false, new OrCondition(ConfigEnabledCondition.FORCE_INTEGRATION_MATERIALS, new ModLoadedCondition("create")));
    addCompatMetalMaterial(refinedRadiance, 4, ORDER_SPECIAL + ORDER_COMPAT, 0xFFFFFF);
    addCompatMetalMaterial(shadowSteel, 4, ORDER_SPECIAL + ORDER_COMPAT, 0x635D71);
    // eidolon materials
    addCompatMetalMaterial(pewter, 3, ORDER_HARVEST + ORDER_COMPAT, 0xA1A097);
    addCompatMetalMaterial(arcaneGold, 3, ORDER_WEAPON + ORDER_COMPAT, 0xFFC069);
    // aquaculture materials
    addCompatMetalMaterial(neptunium, 3, ORDER_GENERAL + ORDER_COMPAT, 0x17F1B6);
    // mystical world materials
    addCompatMetalMaterial(quicksilver, 2, ORDER_HARVEST + ORDER_COMPAT, 0xC6B69F);
    // astral sorcery materials
    addCompatMetalMaterial(starmetal, 3, ORDER_HARVEST + ORDER_COMPAT, 0x003CC9);
    // industrial foregoing materials
    addMaterial(plastic, 2, ORDER_HARVEST + ORDER_COMPAT, true, 0xD9D9D9, false, new OrCondition(ConfigEnabledCondition.FORCE_INTEGRATION_MATERIALS, new NotCondition(new TagEmptyCondition("forge:plastic"))));
    addCompatMetalMaterial(pinkSlime, 3, ORDER_GENERAL + ORDER_COMPAT, 0xFF9FEF);
    addMaterial(pinkSlimeball, 6, 9, true, 0xE27BE3);
    // undergarden materials
    addCompatMetalMaterial(cloggrum, 2, ORDER_HARVEST + ORDER_COMPAT, 0x9C8878);
    addCompatMetalMaterial(froststeel, 2, ORDER_WEAPON + ORDER_COMPAT, 0x95BDE3);
    addCompatMetalMaterial(utherium, 3, ORDER_WEAPON + ORDER_COMPAT, 0xEB515B);
    addCompatMetalMaterial(regalium, 6, 9, 0xEBBB71);
    addMaterial(forgottenMetal, 3, ORDER_GENERAL + ORDER_COMPAT, false, 0x6CD7AA, false, new OrCondition(ConfigEnabledCondition.FORCE_INTEGRATION_MATERIALS, new NotCondition(new TagEmptyCondition("forge:ingots/forgotten_metal"))));
    // mekanism materials
    addCompatMetalMaterial(refinedObsidian, 3, ORDER_HARVEST + ORDER_COMPAT, 0xB78FD2);
    addCompatMetalMaterial(refinedGlowstone, 3, ORDER_WEAPON + ORDER_COMPAT, 0xFFE55C);
    // psi materials
    addCompatMetalMaterial(psimetal, 2, ORDER_SPECIAL + ORDER_COMPAT, 0xB6A9E7);
    addCompatMetalMaterial(ebonyPsimetal, 3, ORDER_SPECIAL + ORDER_COMPAT, 0x3D3838);
    addCompatMetalMaterial(ivoryPsimetal, 3, ORDER_SPECIAL + ORDER_COMPAT, 0xF6F9ED);
    // occultism materials
    addCompatMetalMaterial(iesnium, 4, ORDER_HARVEST + ORDER_COMPAT, 0x8ADAE3);
    // botania materials
    addMaterial(livingwood, 1, ORDER_WEAPON + ORDER_COMPAT, true, 0x783519, false, new OrCondition(ConfigEnabledCondition.FORCE_INTEGRATION_MATERIALS, new ModLoadedCondition("botania")));
    addMaterial(dreamwood, 2, ORDER_HARVEST + ORDER_COMPAT, true, 0xC1CCCC, false, new OrCondition(ConfigEnabledCondition.FORCE_INTEGRATION_MATERIALS, new ModLoadedCondition("botania")));
    addCompatMetalMaterial(manasteel, 2, ORDER_HARVEST + ORDER_COMPAT, 0x3389FF);
    addCompatMetalMaterial(elementium, 3, ORDER_WEAPON + ORDER_COMPAT, 0xF15CAE);
    addCompatMetalMaterial(terrasteel, 4, ORDER_WEAPON + ORDER_COMPAT, 0x53F900);
    // mythicbotany materials
    addCompatMetalMaterial(alfsteel, 4, ORDER_WEAPON + ORDER_COMPAT, 0xFFC74E);
    // draconic evolution materials
    addCompatMetalMaterial(draconium, 4, ORDER_GENERAL + ORDER_COMPAT, 0x905EBE);
    addCompatMetalMaterial(awakenedDraconium, 4, ORDER_GENERAL + ORDER_COMPAT, 0xFF8800);
    // redstone arsenal materials
    addCompatMetalMaterial(fluxInfused, 3, ORDER_GENERAL + ORDER_COMPAT, 0xE68A29);
}
Also used : NotCondition(net.minecraftforge.common.crafting.conditions.NotCondition) ModLoadedCondition(net.minecraftforge.common.crafting.conditions.ModLoadedCondition) ResourceLocation(net.minecraft.util.ResourceLocation) Redirect(slimeknights.tconstruct.library.materials.json.MaterialJson.Redirect) OrCondition(net.minecraftforge.common.crafting.conditions.OrCondition) TagEmptyCondition(net.minecraftforge.common.crafting.conditions.TagEmptyCondition)

Aggregations

NotCondition (net.minecraftforge.common.crafting.conditions.NotCondition)4 ModLoadedCondition (net.minecraftforge.common.crafting.conditions.ModLoadedCondition)3 ItemNameIngredient (slimeknights.mantle.recipe.data.ItemNameIngredient)3 Consumer (java.util.function.Consumer)2 Function (java.util.function.Function)2 DataGenerator (net.minecraft.data.DataGenerator)2 FinishedRecipe (net.minecraft.data.recipes.FinishedRecipe)2 ShapedRecipeBuilder (net.minecraft.data.recipes.ShapedRecipeBuilder)2 ShapelessRecipeBuilder (net.minecraft.data.recipes.ShapelessRecipeBuilder)2 ResourceLocation (net.minecraft.resources.ResourceLocation)2 FluidTags (net.minecraft.tags.FluidTags)2 ItemTags (net.minecraft.tags.ItemTags)2 ResourceLocation (net.minecraft.util.ResourceLocation)2 EntityType (net.minecraft.world.entity.EntityType)2 ItemStack (net.minecraft.world.item.ItemStack)2 Items (net.minecraft.world.item.Items)2 Ingredient (net.minecraft.world.item.crafting.Ingredient)2 ItemLike (net.minecraft.world.level.ItemLike)2 Blocks (net.minecraft.world.level.block.Blocks)2 Fluids (net.minecraft.world.level.material.Fluids)2