Search in sources :

Example 16 with FinishedRecipe

use of net.minecraft.data.recipes.FinishedRecipe 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 17 with FinishedRecipe

use of net.minecraft.data.recipes.FinishedRecipe in project Botania by VazkiiMods.

the class RecipeProvider method registerTools.

private void registerTools(Consumer<FinishedRecipe> consumer) {
    ShapelessRecipeBuilder.shapeless(ModItems.lexicon).requires(ItemTags.SAPLINGS).requires(Items.BOOK).unlockedBy("has_item", conditionsFromTag(ItemTags.SAPLINGS)).unlockedBy("has_alt_item", conditionsFromItem(Items.BOOK)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.twigWand).define('P', ModTags.Items.PETALS).define('S', ModItems.livingwoodTwig).pattern(" PS").pattern(" SP").pattern("S  ").group("botania:twig_wand").unlockedBy("has_item", conditionsFromTag(ModTags.Items.PETALS)).save(WrapperResult.ofType(TwigWandRecipe.SERIALIZER, consumer));
    ShapedRecipeBuilder.shaped(ModItems.manaTablet).define('P', AccessorIngredient.callFromValues(Stream.of(new Ingredient.ItemValue(new ItemStack(ModItems.manaPearl)), new Ingredient.TagValue(ModTags.Items.GEMS_MANA_DIAMOND)))).define('S', ModBlocks.livingrock).pattern("SSS").pattern("SPS").pattern("SSS").unlockedBy("has_item", conditionsFromTag(ModTags.Items.GEMS_MANA_DIAMOND)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.cacophonium).define('N', Items.NOTE_BLOCK).define('G', Items.COPPER_INGOT).pattern(" G ").pattern("GNG").pattern("GG ").unlockedBy("has_item", conditionsFromItem(Items.NOTE_BLOCK)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.grassHorn).define('S', ModItems.grassSeeds).define('W', ModTags.Items.LIVINGWOOD_LOGS).pattern(" W ").pattern("WSW").pattern("WW ").unlockedBy("has_item", conditionsFromTag(ModTags.Items.LIVINGWOOD_LOGS)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.leavesHorn).requires(ModItems.grassHorn).requires(ItemTags.LEAVES).unlockedBy("has_item", conditionsFromItem(ModItems.grassHorn)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.snowHorn).requires(ModItems.grassHorn).requires(Items.SNOWBALL).unlockedBy("has_item", conditionsFromItem(ModItems.grassHorn)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.manaMirror).define('P', ModItems.manaPearl).define('R', ModBlocks.livingrock).define('S', ModItems.livingwoodTwig).define('T', ModItems.manaTablet).define('I', ModTags.Items.INGOTS_TERRASTEEL).pattern(" PR").pattern(" SI").pattern("T  ").unlockedBy("has_item", conditionsFromItem(ModItems.manaTablet)).unlockedBy("has_alt_item", conditionsFromTag(ModTags.Items.INGOTS_TERRASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.openBucket).define('E', ModTags.Items.INGOTS_ELEMENTIUM).pattern("E E").pattern(" E ").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_ELEMENTIUM)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.spawnerMover).define('A', ModItems.enderAirBottle).define('D', ModTags.Items.GEMS_DRAGONSTONE).define('E', ModItems.lifeEssence).define('I', ModTags.Items.INGOTS_ELEMENTIUM).pattern("EIE").pattern("ADA").pattern("EIE").unlockedBy("has_item", conditionsFromItem(ModItems.lifeEssence)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.slingshot).define('A', ModItems.runeAir).define('T', ModItems.livingwoodTwig).pattern(" TA").pattern(" TT").pattern("T  ").unlockedBy("has_item", conditionsFromItem(ModItems.runeAir)).save(consumer);
    registerSimpleArmorSet(consumer, Ingredient.of(ModTags.Items.INGOTS_MANASTEEL), "manasteel", conditionsFromTag(ModTags.Items.INGOTS_MANASTEEL));
    registerSimpleArmorSet(consumer, Ingredient.of(ModTags.Items.INGOTS_ELEMENTIUM), "elementium", conditionsFromTag(ModTags.Items.INGOTS_ELEMENTIUM));
    registerSimpleArmorSet(consumer, Ingredient.of(ModItems.manaweaveCloth), "manaweave", conditionsFromItem(ModItems.manaweaveCloth));
    registerTerrasteelUpgradeRecipe(consumer, ModItems.terrasteelHelm, ModItems.manasteelHelm, ModItems.runeSpring);
    registerTerrasteelUpgradeRecipe(consumer, ModItems.terrasteelChest, ModItems.manasteelChest, ModItems.runeSummer);
    registerTerrasteelUpgradeRecipe(consumer, ModItems.terrasteelLegs, ModItems.manasteelLegs, ModItems.runeAutumn);
    registerTerrasteelUpgradeRecipe(consumer, ModItems.terrasteelBoots, ModItems.manasteelBoots, ModItems.runeWinter);
    registerToolSetRecipes(consumer, Ingredient.of(ModTags.Items.INGOTS_MANASTEEL), Ingredient.of(ModItems.livingwoodTwig), conditionsFromTag(ModTags.Items.INGOTS_MANASTEEL), ModItems.manasteelSword, ModItems.manasteelPick, ModItems.manasteelAxe, ModItems.manasteelHoe, ModItems.manasteelShovel, ModItems.manasteelShears);
    registerToolSetRecipes(consumer, Ingredient.of(ModTags.Items.INGOTS_ELEMENTIUM), Ingredient.of(ModItems.dreamwoodTwig), conditionsFromTag(ModTags.Items.INGOTS_ELEMENTIUM), ModItems.elementiumSword, ModItems.elementiumPick, ModItems.elementiumAxe, ModItems.elementiumHoe, ModItems.elementiumShovel, ModItems.elementiumShears);
    ShapedRecipeBuilder.shaped(ModItems.terraSword).define('S', ModItems.livingwoodTwig).define('I', ModTags.Items.INGOTS_TERRASTEEL).pattern("I").pattern("I").pattern("S").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_TERRASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.terraPick).define('T', ModItems.manaTablet).define('I', ModTags.Items.INGOTS_TERRASTEEL).define('L', ModItems.livingwoodTwig).pattern("ITI").pattern("ILI").pattern(" L ").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_TERRASTEEL)).save(WrapperResult.ofType(ManaUpgradeRecipe.SERIALIZER, consumer));
    ShapedRecipeBuilder.shaped(ModItems.terraAxe).define('S', ModItems.livingwoodTwig).define('T', ModTags.Items.INGOTS_TERRASTEEL).define('G', Items.GLOWSTONE).pattern("TTG").pattern("TST").pattern(" S ").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_TERRASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.starSword).define('A', ModItems.enderAirBottle).define('D', ModTags.Items.GEMS_DRAGONSTONE).define('T', ModItems.terraSword).define('I', ModTags.Items.INGOTS_ELEMENTIUM).pattern("  I").pattern("AD ").pattern("TA ").unlockedBy("has_item", conditionsFromItem(ModItems.terraAxe)).unlockedBy("has_terrasteel", conditionsFromTag(ModTags.Items.INGOTS_TERRASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.thunderSword).define('A', ModItems.enderAirBottle).define('D', ModTags.Items.GEMS_MANA_DIAMOND).define('T', ModItems.terraSword).define('I', ModTags.Items.INGOTS_ELEMENTIUM).pattern("  I").pattern("AD ").pattern("TA ").unlockedBy("has_item", conditionsFromItem(ModItems.terraAxe)).unlockedBy("has_terrasteel", conditionsFromTag(ModTags.Items.INGOTS_TERRASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.glassPick).define('T', ModItems.livingwoodTwig).define('G', Items.GLASS).define('I', ModTags.Items.INGOTS_MANASTEEL).pattern("GIG").pattern(" T ").pattern(" T ").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_MANASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.livingwoodBow).define('S', ModItems.manaString).define('T', ModItems.livingwoodTwig).pattern(" TS").pattern("T S").pattern(" TS").unlockedBy("has_item", conditionsFromItem(ModItems.manaString)).unlockedBy("has_twig", conditionsFromItem(ModItems.livingwoodTwig)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.crystalBow).define('S', ModItems.manaString).define('T', ModItems.livingwoodTwig).define('D', ModTags.Items.GEMS_DRAGONSTONE).pattern(" DS").pattern("T S").pattern(" DS").unlockedBy("has_item", conditionsFromTag(ModTags.Items.GEMS_DRAGONSTONE)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.enderDagger).define('P', ModItems.manaPearl).define('S', ModTags.Items.INGOTS_MANASTEEL).define('T', ModItems.livingwoodTwig).pattern("P").pattern("S").pattern("T").unlockedBy("has_item", conditionsFromItem(ModItems.manaPearl)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.enderHand).define('P', ModItems.manaPearl).define('E', Items.ENDER_CHEST).define('L', Items.LEATHER).define('O', Items.OBSIDIAN).pattern("PLO").pattern("LEL").pattern("OL ").unlockedBy("has_item", conditionsFromItem(Items.ENDER_CHEST)).unlockedBy("has_alt_item", conditionsFromItem(Items.ENDER_EYE)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.placeholder, 32).requires(Items.CRAFTING_TABLE).requires(ModBlocks.livingrock).unlockedBy("has_dreamwood", conditionsFromTag(ModTags.Items.DREAMWOOD_LOGS)).unlockedBy("has_crafty_crate", conditionsFromItem(ModBlocks.craftCrate)).save(consumer);
    for (CratePattern pattern : CratePattern.values()) {
        if (pattern == CratePattern.NONE) {
            continue;
        }
        Item item = Registry.ITEM.getOptional(prefix(LibItemNames.CRAFT_PATTERN_PREFIX + pattern.getSerializedName().split("_", 2)[1])).get();
        String s = pattern.openSlots.stream().map(bool -> bool ? "R" : "P").collect(Collectors.joining());
        ShapedRecipeBuilder.shaped(item).define('P', ModItems.placeholder).define('R', Items.REDSTONE).pattern(s.substring(0, 3)).pattern(s.substring(3, 6)).pattern(s.substring(6, 9)).group("botania:craft_pattern").unlockedBy("has_item", conditionsFromItem(ModItems.placeholder)).unlockedBy("has_crafty_crate", conditionsFromItem(ModBlocks.craftCrate)).save(consumer);
    }
    ShapedRecipeBuilder.shaped(ModItems.manaGun).define('S', ModBlocks.redstoneSpreader).define('D', ModTags.Items.GEMS_MANA_DIAMOND).define('T', Items.TNT).define('W', ModTags.Items.LIVINGWOOD_LOGS).define('M', ModItems.runeMana).pattern("SMD").pattern(" WT").pattern("  W").unlockedBy("has_item", conditionsFromTag(ModTags.Items.GEMS_MANA_DIAMOND)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.dirtRod).define('D', Items.DIRT).define('T', ModItems.livingwoodTwig).define('E', ModItems.runeEarth).pattern("  D").pattern(" T ").pattern("E  ").unlockedBy("has_item", conditionsFromItem(ModItems.runeEarth)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.terraformRod).define('A', ModItems.runeAutumn).define('R', ModItems.dirtRod).define('S', ModItems.runeSpring).define('T', ModTags.Items.INGOTS_TERRASTEEL).define('G', ModItems.grassSeeds).define('W', ModItems.runeWinter).define('M', ModItems.runeSummer).pattern(" WT").pattern("ARS").pattern("GM ").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_TERRASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.waterRod).define('B', Ingredient.of(PotionUtils.setPotion(new ItemStack(Items.POTION), Potions.WATER))).define('R', ModItems.runeWater).define('T', ModItems.livingwoodTwig).pattern("  B").pattern(" T ").pattern("R  ").unlockedBy("has_item", conditionsFromItem(ModItems.runeWater)).save(WrapperResult.ofType(WaterBottleMatchingRecipe.SERIALIZER, consumer));
    ShapedRecipeBuilder.shaped(ModItems.rainbowRod).define('P', ModItems.pixieDust).define('D', ModTags.Items.GEMS_DRAGONSTONE).define('E', ModTags.Items.INGOTS_ELEMENTIUM).pattern(" PD").pattern(" EP").pattern("E  ").unlockedBy("has_item", conditionsFromTag(ModTags.Items.GEMS_DRAGONSTONE)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.tornadoRod).define('R', ModItems.runeAir).define('T', ModItems.livingwoodTwig).define('F', Items.FEATHER).pattern("  F").pattern(" T ").pattern("R  ").unlockedBy("has_item", conditionsFromItem(ModItems.runeAir)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.fireRod).define('R', ModItems.runeFire).define('T', ModItems.livingwoodTwig).define('F', Items.BLAZE_POWDER).pattern("  F").pattern(" T ").pattern("R  ").unlockedBy("has_item", conditionsFromItem(ModItems.runeFire)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.skyDirtRod).requires(ModItems.dirtRod).requires(ModItems.pixieDust).requires(ModItems.runeAir).unlockedBy("has_item", conditionsFromItem(ModItems.pixieDust)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.diviningRod).define('T', ModItems.livingwoodTwig).define('D', ModTags.Items.GEMS_MANA_DIAMOND).pattern(" TD").pattern(" TT").pattern("T  ").unlockedBy("has_item", conditionsFromTag(ModTags.Items.GEMS_MANA_DIAMOND)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.gravityRod).define('T', ModItems.dreamwoodTwig).define('D', ModTags.Items.GEMS_DRAGONSTONE).define('W', Items.WHEAT).pattern(" TD").pattern(" WT").pattern("T  ").unlockedBy("has_item", conditionsFromTag(ModTags.Items.GEMS_DRAGONSTONE)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.missileRod).define('D', ModTags.Items.GEMS_DRAGONSTONE).define('T', ModItems.dreamwoodTwig).define('G', ModItems.lifeEssence).pattern("GDD").pattern(" TD").pattern("T G").unlockedBy("has_item", conditionsFromItem(ModItems.lifeEssence)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.cobbleRod).define('C', Items.COBBLESTONE).define('T', ModItems.livingwoodTwig).define('F', ModItems.runeFire).define('W', ModItems.runeWater).pattern(" FC").pattern(" TW").pattern("T  ").unlockedBy("has_item", conditionsFromItem(ModItems.runeFire)).unlockedBy("has_alt_item", conditionsFromItem(ModItems.runeWater)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.smeltRod).define('B', Items.BLAZE_ROD).define('T', ModItems.livingwoodTwig).define('F', ModItems.runeFire).pattern(" BF").pattern(" TB").pattern("T  ").unlockedBy("has_item", conditionsFromItem(ModItems.runeFire)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.exchangeRod).define('R', ModItems.runeSloth).define('S', Items.STONE).define('T', ModItems.livingwoodTwig).pattern(" SR").pattern(" TS").pattern("T  ").unlockedBy("has_item", conditionsFromItem(ModItems.runeSloth)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.laputaShard).define('P', Items.PRISMARINE_CRYSTALS).define('A', ModItems.runeAir).define('S', ModItems.lifeEssence).define('D', ModTags.Items.GEMS_DRAGONSTONE).define('E', ModItems.runeEarth).define('F', ModTags.Items.MUNDANE_FLOATING_FLOWERS).pattern("SFS").pattern("PDP").pattern("ASE").unlockedBy("has_item", conditionsFromItem(ModItems.lifeEssence)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.craftingHalo).define('P', ModItems.manaPearl).define('C', Items.CRAFTING_TABLE).define('I', ModTags.Items.INGOTS_MANASTEEL).pattern(" P ").pattern("ICI").pattern(" I ").unlockedBy("has_item", conditionsFromItem(ModItems.manaPearl)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.clip).define('D', ModTags.Items.DREAMWOOD_LOGS).pattern(" D ").pattern("D D").pattern("DD ").unlockedBy("has_item", conditionsFromTag(ModTags.Items.DREAMWOOD_LOGS)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.spellCloth).define('P', ModItems.manaPearl).define('C', ModItems.manaweaveCloth).pattern(" C ").pattern("CPC").pattern(" C ").unlockedBy("has_item", conditionsFromItem(ModItems.manaweaveCloth)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.flowerBag).define('P', ModTags.Items.PETALS).define('W', ItemTags.WOOL).pattern("WPW").pattern("W W").pattern(" W ").unlockedBy("has_item", conditionsFromTag(ModTags.Items.MYSTICAL_FLOWERS)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.poolMinecart).requires(Items.MINECART).requires(ModBlocks.manaPool).unlockedBy("has_item", conditionsFromItem(Items.MINECART)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.blackHoleTalisman).define('A', ModItems.enderAirBottle).define('E', ModTags.Items.INGOTS_ELEMENTIUM).define('G', ModItems.lifeEssence).pattern(" G ").pattern("EAE").pattern(" E ").unlockedBy("has_item", conditionsFromItem(ModItems.lifeEssence)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.temperanceStone).define('R', ModItems.runeEarth).define('S', Items.STONE).pattern(" S ").pattern("SRS").pattern(" S ").unlockedBy("has_item", conditionsFromItem(ModItems.runeEarth)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.incenseStick).define('B', Items.BLAZE_POWDER).define('T', ModItems.livingwoodTwig).define('G', Items.GHAST_TEAR).pattern("  G").pattern(" B ").pattern("T  ").unlockedBy("has_item", conditionsFromItem(Items.GHAST_TEAR)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.obedienceStick).define('T', ModItems.livingwoodTwig).define('M', ModTags.Items.INGOTS_MANASTEEL).pattern("  M").pattern(" T ").pattern("T  ").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_MANASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.slimeBottle).define('S', Items.SLIME_BALL).define('E', ModTags.Items.INGOTS_ELEMENTIUM).define('G', ModBlocks.elfGlass).pattern("EGE").pattern("ESE").pattern(" E ").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_ELEMENTIUM)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.autocraftingHalo).requires(ModItems.craftingHalo).requires(ModTags.Items.GEMS_MANA_DIAMOND).unlockedBy("has_item", conditionsFromTag(ModTags.Items.GEMS_MANA_DIAMOND)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.sextant).define('T', ModItems.livingwoodTwig).define('I', ModTags.Items.INGOTS_MANASTEEL).pattern(" TI").pattern(" TT").pattern("III").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_MANASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.baubleBox).define('C', Items.CHEST).define('G', Items.GOLD_INGOT).define('M', ModTags.Items.INGOTS_MANASTEEL).pattern(" M ").pattern("MCG").pattern(" M ").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_MANASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.astrolabe).define('D', ModTags.Items.DREAMWOOD_LOGS).define('E', ModTags.Items.INGOTS_ELEMENTIUM).define('G', ModItems.lifeEssence).pattern(" EG").pattern("EEE").pattern("GED").unlockedBy("has_item", conditionsFromItem(ModItems.lifeEssence)).save(consumer);
}
Also used : ResourceLocation(net.minecraft.resources.ResourceLocation) PotionUtils(net.minecraft.world.item.alchemy.PotionUtils) IntStream(java.util.stream.IntStream) DyeColor(net.minecraft.world.item.DyeColor) Arrays(java.util.Arrays) InventoryChangeTrigger(net.minecraft.advancements.critereon.InventoryChangeTrigger) ShapedRecipeBuilder(net.minecraft.data.recipes.ShapedRecipeBuilder) Items(net.minecraft.world.item.Items) Item(net.minecraft.world.item.Item) ModFluffBlocks(vazkii.botania.common.block.ModFluffBlocks) Potions(net.minecraft.world.item.alchemy.Potions) Ingredient(net.minecraft.world.item.crafting.Ingredient) Registry(net.minecraft.core.Registry) TagKey(net.minecraft.tags.TagKey) ItemLike(net.minecraft.world.level.ItemLike) ShapelessRecipeBuilder(net.minecraft.data.recipes.ShapelessRecipeBuilder) ModSubtiles(vazkii.botania.common.block.ModSubtiles) MutableObject(org.apache.commons.lang3.mutable.MutableObject) ItemPredicate(net.minecraft.advancements.critereon.ItemPredicate) DataGenerator(net.minecraft.data.DataGenerator) LibItemNames(vazkii.botania.common.lib.LibItemNames) ModItems(vazkii.botania.common.item.ModItems) ItemTags(net.minecraft.tags.ItemTags) LibBlockNames(vazkii.botania.common.lib.LibBlockNames) AccessorRecipeProvider(vazkii.botania.mixin.AccessorRecipeProvider) SimpleRecipeSerializer(net.minecraft.world.item.crafting.SimpleRecipeSerializer) RecipeUnlockedTrigger(net.minecraft.advancements.critereon.RecipeUnlockedTrigger) FinishedRecipe(net.minecraft.data.recipes.FinishedRecipe) ModBlocks(vazkii.botania.common.block.ModBlocks) Collectors(java.util.stream.Collectors) Blocks(net.minecraft.world.level.block.Blocks) Consumer(java.util.function.Consumer) ResourceLocationHelper(vazkii.botania.common.lib.ResourceLocationHelper) List(java.util.List) Stream(java.util.stream.Stream) CriterionTriggerInstance(net.minecraft.advancements.CriterionTriggerInstance) vazkii.botania.common.crafting.recipe(vazkii.botania.common.crafting.recipe) CratePattern(vazkii.botania.api.state.enums.CratePattern) Optional(java.util.Optional) DyeItem(net.minecraft.world.item.DyeItem) Block(net.minecraft.world.level.block.Block) ItemStack(net.minecraft.world.item.ItemStack) AccessorIngredient(vazkii.botania.mixin.AccessorIngredient) SpecialRecipeBuilder(net.minecraft.data.recipes.SpecialRecipeBuilder) ModTags(vazkii.botania.common.lib.ModTags) Item(net.minecraft.world.item.Item) DyeItem(net.minecraft.world.item.DyeItem) Ingredient(net.minecraft.world.item.crafting.Ingredient) AccessorIngredient(vazkii.botania.mixin.AccessorIngredient) CratePattern(vazkii.botania.api.state.enums.CratePattern) ItemStack(net.minecraft.world.item.ItemStack)

Example 18 with FinishedRecipe

use of net.minecraft.data.recipes.FinishedRecipe in project Botania by VazkiiMods.

the class RecipeProvider method registerMain.

private void registerMain(Consumer<FinishedRecipe> consumer) {
    InventoryChangeTrigger.TriggerInstance hasAnyDye = conditionsFromItems(Arrays.stream(DyeColor.values()).map(DyeItem::byColor).toArray(ItemLike[]::new));
    MutableObject<FinishedRecipe> base = new MutableObject<>();
    MutableObject<FinishedRecipe> gog = new MutableObject<>();
    ShapedRecipeBuilder.shaped(ModBlocks.manaSpreader).define('P', ModTags.Items.PETALS).define('W', ModTags.Items.LIVINGWOOD_LOGS).define('G', Items.GOLD_INGOT).pattern("WWW").pattern("GP ").pattern("WWW").group("botania:spreader").unlockedBy("has_item", conditionsFromTag(ModTags.Items.LIVINGWOOD_LOGS)).save(base::setValue);
    ShapedRecipeBuilder.shaped(ModBlocks.manaSpreader).define('P', ModTags.Items.PETALS).define('W', ModTags.Items.LIVINGWOOD_LOGS).pattern("WWW").pattern("WP ").pattern("WWW").group("botania:spreader").unlockedBy("has_item", conditionsFromTag(ModTags.Items.LIVINGWOOD_LOGS)).save(gog::setValue);
    consumer.accept(new GogAlternationResult(gog.getValue(), base.getValue()));
    ShapelessRecipeBuilder.shapeless(ModBlocks.redstoneSpreader).requires(ModBlocks.manaSpreader).requires(Items.REDSTONE).group("botania:spreader").unlockedBy("has_item", conditionsFromItem(ModBlocks.manaSpreader)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.elvenSpreader).define('P', ModTags.Items.PETALS).define('E', ModTags.Items.INGOTS_ELEMENTIUM).define('W', ModTags.Items.DREAMWOOD_LOGS).pattern("WWW").pattern("EP ").pattern("WWW").group("botania:spreader").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_ELEMENTIUM)).unlockedBy("has_alt_item", conditionsFromTag(ModTags.Items.DREAMWOOD_LOGS)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModBlocks.gaiaSpreader).requires(ModBlocks.elvenSpreader).requires(ModTags.Items.GEMS_DRAGONSTONE).requires(ModItems.lifeEssence).group("botania:spreader").unlockedBy("has_item", conditionsFromItem(ModItems.lifeEssence)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.manaPool).define('R', ModBlocks.livingrock).pattern("R R").pattern("RRR").unlockedBy("has_item", conditionsFromItem(ModBlocks.livingrock)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.dilutedPool).define('R', ModFluffBlocks.livingrockSlab).pattern("R R").pattern("RRR").unlockedBy("has_item", conditionsFromItem(ModBlocks.livingrock)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.fabulousPool).define('R', ModBlocks.shimmerrock).pattern("R R").pattern("RRR").unlockedBy("has_item", conditionsFromItem(ModBlocks.shimmerrock)).unlockedBy("has_alt_item", conditionsFromItem(ModItems.rainbowRod)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.fabulousPool).define('P', ModBlocks.manaPool).define('B', ModBlocks.bifrostPerm).pattern("BPB").pattern("BBB").unlockedBy("has_item", conditionsFromItem(ModBlocks.bifrostPerm)).unlockedBy("has_alt_item", conditionsFromItem(ModItems.rainbowRod)).save(consumer, prefix(Registry.ITEM.getKey(ModBlocks.fabulousPool.asItem()).getPath() + "_upgrade"));
    ShapedRecipeBuilder.shaped(ModBlocks.runeAltar).define('P', AccessorIngredient.callFromValues(Stream.of(new Ingredient.ItemValue(new ItemStack(ModItems.manaPearl)), new Ingredient.TagValue(ModTags.Items.GEMS_MANA_DIAMOND)))).define('S', ModBlocks.livingrock).pattern("SSS").pattern("SPS").unlockedBy("has_item", conditionsFromItem(ModItems.manaPearl)).unlockedBy("has_alt_item", conditionsFromTag(ModTags.Items.GEMS_MANA_DIAMOND)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.manaPylon).define('D', ModTags.Items.GEMS_MANA_DIAMOND).define('G', Items.GOLD_INGOT).define('M', ModTags.Items.INGOTS_MANASTEEL).pattern(" G ").pattern("MDM").pattern(" G ").unlockedBy("has_item", conditionsFromTag(ModTags.Items.GEMS_MANA_DIAMOND)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.naturaPylon).define('P', ModBlocks.manaPylon).define('T', ModTags.Items.NUGGETS_TERRASTEEL).define('E', Items.ENDER_EYE).pattern(" T ").pattern("TPT").pattern(" E ").unlockedBy("has_item", conditionsFromItem(ModBlocks.manaPylon)).unlockedBy("has_alt_item", conditionsFromTag(ModTags.Items.INGOTS_TERRASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.gaiaPylon).define('P', ModBlocks.manaPylon).define('D', ModItems.pixieDust).define('E', ModTags.Items.INGOTS_ELEMENTIUM).pattern(" D ").pattern("EPE").pattern(" D ").unlockedBy("has_item", conditionsFromItem(ModItems.pixieDust)).unlockedBy("has_alt_item", conditionsFromTag(ModTags.Items.INGOTS_ELEMENTIUM)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.distributor).define('R', ModBlocks.livingrock).define('S', ModTags.Items.INGOTS_MANASTEEL).pattern("RRR").pattern("S S").pattern("RRR").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_MANASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.manaVoid).define('S', ModBlocks.livingrock).define('O', Items.OBSIDIAN).pattern("SSS").pattern("O O").pattern("SSS").unlockedBy("has_item", conditionsFromItem(ModBlocks.livingrock)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.manaDetector).define('R', Items.REDSTONE).define('C', Items.COMPARATOR).define('S', ModBlocks.livingrock).pattern("RSR").pattern("SCS").pattern("RSR").unlockedBy("has_item", conditionsFromItem(Items.COMPARATOR)).unlockedBy("has_alt_item", conditionsFromItem(ModBlocks.livingrock)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.turntable).define('P', Items.STICKY_PISTON).define('W', ModTags.Items.LIVINGWOOD_LOGS).pattern("WWW").pattern("WPW").pattern("WWW").unlockedBy("has_item", conditionsFromTag(ModTags.Items.LIVINGWOOD_LOGS)).unlockedBy("has_alt_item", conditionsFromItem(Items.STICKY_PISTON)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.tinyPlanet).define('P', ModItems.tinyPlanet).define('S', Items.STONE).pattern("SSS").pattern("SPS").pattern("SSS").unlockedBy("has_item", conditionsFromItem(ModItems.tinyPlanet)).unlockedBy("has_alt_item", conditionsFromItem(ModItems.manaPearl)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.alchemyCatalyst).define('P', ModItems.manaPearl).define('B', Items.BREWING_STAND).define('S', ModBlocks.livingrock).define('G', Items.GOLD_INGOT).pattern("SGS").pattern("BPB").pattern("SGS").unlockedBy("has_item", conditionsFromItem(ModItems.manaPearl)).unlockedBy("has_alt_item", conditionsFromItem(Items.BREWING_STAND)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.openCrate).define('W', ModBlocks.livingwoodPlanks).pattern("WWW").pattern("W W").pattern("W W").unlockedBy("has_item", conditionsFromItem(ModBlocks.livingwoodPlanks)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.craftCrate).define('C', Items.CRAFTING_TABLE).define('W', ModBlocks.dreamwoodPlanks).pattern("WCW").pattern("W W").pattern("W W").unlockedBy("has_item", conditionsFromItem(ModBlocks.dreamwoodPlanks)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.forestEye).define('S', ModBlocks.livingrock).define('E', Items.ENDER_EYE).define('M', ModTags.Items.INGOTS_MANASTEEL).pattern("MSM").pattern("SES").pattern("MSM").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_MANASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.wildDrum).define('W', ModTags.Items.LIVINGWOOD_LOGS).define('H', ModItems.grassHorn).define('L', Items.LEATHER).pattern("WLW").pattern("WHW").pattern("WLW").unlockedBy("has_item", conditionsFromItem(ModItems.grassHorn)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.gatheringDrum).define('E', ModTags.Items.INGOTS_ELEMENTIUM).define('W', ModTags.Items.DREAMWOOD_LOGS).define('L', Items.LEATHER).pattern("WLW").pattern("WEW").pattern("WLW").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_ELEMENTIUM)).unlockedBy("has_alt_item", conditionsFromTag(ModTags.Items.DREAMWOOD_LOGS)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.canopyDrum).define('W', ModTags.Items.LIVINGWOOD_LOGS).define('H', ModItems.leavesHorn).define('L', Items.LEATHER).pattern("WLW").pattern("WHW").pattern("WLW").unlockedBy("has_item", conditionsFromItem(ModItems.leavesHorn)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.abstrusePlatform, 2).define('0', ModTags.Items.LIVINGWOOD_LOGS).define('P', ModItems.manaPearl).define('3', ModBlocks.livingwoodFramed).define('4', ModBlocks.livingwoodPatternFramed).pattern("343").pattern("0P0").unlockedBy("has_item", conditionsFromItem(ModItems.manaPearl)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.spectralPlatform, 2).define('0', ModTags.Items.DREAMWOOD_LOGS).define('3', ModBlocks.dreamwoodFramed).define('4', ModBlocks.dreamwoodPatternFramed).define('D', ModItems.pixieDust).pattern("343").pattern("0D0").unlockedBy("has_item", conditionsFromItem(ModItems.pixieDust)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.alfPortal).define('T', ModTags.Items.NUGGETS_TERRASTEEL).define('W', ModTags.Items.LIVINGWOOD_LOGS).pattern("WTW").pattern("WTW").pattern("WTW").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_TERRASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.conjurationCatalyst).define('P', ModBlocks.alchemyCatalyst).define('B', ModItems.pixieDust).define('S', ModBlocks.livingrock).define('G', ModTags.Items.INGOTS_ELEMENTIUM).pattern("SBS").pattern("GPG").pattern("SGS").unlockedBy("has_item", conditionsFromItem(ModItems.pixieDust)).unlockedBy("has_alt_item", conditionsFromTag(ModTags.Items.INGOTS_ELEMENTIUM)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.spawnerClaw).define('P', Items.PRISMARINE_BRICKS).define('B', Items.BLAZE_ROD).define('S', ModTags.Items.INGOTS_ELEMENTIUM).define('E', ModItems.enderAirBottle).define('M', ModTags.Items.BLOCKS_MANASTEEL).pattern("BSB").pattern("PMP").pattern("PEP").unlockedBy("has_item", conditionsFromItem(ModItems.enderAirBottle)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.enderEye).define('R', Items.REDSTONE).define('E', Items.ENDER_EYE).define('O', Items.OBSIDIAN).pattern("RER").pattern("EOE").pattern("RER").unlockedBy("has_item", conditionsFromItem(Items.ENDER_EYE)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.starfield).define('P', ModItems.pixieDust).define('E', ModTags.Items.INGOTS_ELEMENTIUM).define('O', Items.OBSIDIAN).pattern("EPE").pattern("EOE").unlockedBy("has_item", conditionsFromItem(ModItems.pixieDust)).unlockedBy("has_alt_item", conditionsFromTag(ModTags.Items.INGOTS_ELEMENTIUM)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.rfGenerator).define('R', Items.REDSTONE_BLOCK).define('S', ModBlocks.livingrock).define('M', ModTags.Items.INGOTS_MANASTEEL).pattern("SRS").pattern("RMR").pattern("SRS").unlockedBy("has_item", conditionsFromItem(Items.REDSTONE_BLOCK)).unlockedBy("has_alt_item", conditionsFromTag(ModTags.Items.INGOTS_MANASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.brewery).define('A', ModItems.runeMana).define('R', ModBlocks.livingrock).define('S', Items.BREWING_STAND).define('M', ModTags.Items.BLOCKS_MANASTEEL).pattern("RSR").pattern("RAR").pattern("RMR").unlockedBy("has_item", conditionsFromItem(ModItems.runeMana)).unlockedBy("has_alt_item", conditionsFromItem(Items.BREWING_STAND)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.terraPlate).define('0', ModItems.runeWater).define('1', ModItems.runeFire).define('2', ModItems.runeEarth).define('3', ModItems.runeAir).define('8', ModItems.runeMana).define('L', Blocks.LAPIS_BLOCK).define('M', ModTags.Items.BLOCKS_MANASTEEL).pattern("LLL").pattern("0M1").pattern("283").unlockedBy("has_item", conditionsFromTag(ModTags.Items.RUNES)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.prism).define('P', Items.PRISMARINE_CRYSTALS).define('S', ModBlocks.spectralPlatform).define('G', Items.GLASS).pattern("GPG").pattern("GSG").pattern("GPG").unlockedBy("has_item", conditionsFromItem(Items.PRISMARINE_CRYSTALS)).unlockedBy("has_alt_item", conditionsFromItem(ModBlocks.spectralPlatform)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.pump).define('B', Items.BUCKET).define('S', ModBlocks.livingrock).define('I', ModTags.Items.INGOTS_MANASTEEL).pattern("SSS").pattern("IBI").pattern("SSS").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_MANASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.incensePlate).define('S', ModFluffBlocks.livingwoodSlab).define('W', ModTags.Items.LIVINGWOOD_LOGS).pattern("WSS").unlockedBy("has_item", conditionsFromTag(ModTags.Items.LIVINGWOOD_LOGS)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.hourglass).define('R', Items.REDSTONE).define('S', ModTags.Items.INGOTS_MANASTEEL).define('G', Items.GOLD_INGOT).define('M', ModBlocks.manaGlass).pattern("GMG").pattern("RSR").pattern("GMG").unlockedBy("has_item", conditionsFromItem(ModBlocks.manaGlass)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModBlocks.ghostRail).requires(Items.RAIL).requires(ModBlocks.spectralPlatform).unlockedBy("has_item", conditionsFromItem(Items.RAIL)).unlockedBy("has_alt_item", conditionsFromItem(ModBlocks.spectralPlatform)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.sparkChanger).define('R', Items.REDSTONE).define('S', ModBlocks.livingrock).define('E', ModTags.Items.INGOTS_ELEMENTIUM).pattern("ESE").pattern("SRS").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_ELEMENTIUM)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.felPumpkin).define('P', Items.PUMPKIN).define('B', Items.BONE).define('S', Items.STRING).define('F', Items.ROTTEN_FLESH).define('G', Items.GUNPOWDER).pattern(" S ").pattern("BPF").pattern(" G ").unlockedBy("has_item", conditionsFromItem(Items.PUMPKIN)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.cocoon).define('S', Items.STRING).define('C', ModItems.manaweaveCloth).define('P', ModBlocks.felPumpkin).define('D', ModItems.pixieDust).pattern("SSS").pattern("CPC").pattern("SDS").unlockedBy("has_item", conditionsFromItem(ModBlocks.felPumpkin)).save(base::setValue);
    ShapedRecipeBuilder.shaped(ModBlocks.cocoon).define('S', Items.STRING).define('P', ModBlocks.felPumpkin).define('I', ModTags.Items.INGOTS_MANASTEEL).pattern("SSS").pattern("SPS").pattern("SIS").unlockedBy("has_item", conditionsFromItem(ModBlocks.felPumpkin)).save(gog::setValue);
    consumer.accept(new GogAlternationResult(gog.getValue(), base.getValue()));
    ShapelessRecipeBuilder.shapeless(ModBlocks.lightRelayDefault).requires(ModItems.redString).requires(ModTags.Items.GEMS_DRAGONSTONE).requires(Items.GLOWSTONE_DUST).requires(Items.GLOWSTONE_DUST).unlockedBy("has_item", conditionsFromTag(ModTags.Items.GEMS_DRAGONSTONE)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModBlocks.lightRelayDetector).requires(ModBlocks.lightRelayDefault).requires(Items.REDSTONE).unlockedBy("has_item", conditionsFromItem(ModBlocks.lightRelayDefault)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModBlocks.lightRelayFork).requires(ModBlocks.lightRelayDefault).requires(Items.REDSTONE_TORCH).unlockedBy("has_item", conditionsFromItem(ModBlocks.lightRelayDefault)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModBlocks.lightRelayToggle).requires(ModBlocks.lightRelayDefault).requires(Items.LEVER).unlockedBy("has_item", conditionsFromItem(ModBlocks.lightRelayDefault)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.lightLauncher).define('D', ModTags.Items.DREAMWOOD_LOGS).define('L', ModBlocks.lightRelayDefault).pattern("DDD").pattern("DLD").unlockedBy("has_item", conditionsFromItem(ModBlocks.lightRelayDefault)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.manaBomb).define('T', Items.TNT).define('G', ModItems.lifeEssence).define('L', ModTags.Items.LIVINGWOOD_LOGS).pattern("LTL").pattern("TGT").pattern("LTL").unlockedBy("has_item", conditionsFromItem(ModItems.lifeEssence)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.bellows).define('R', ModItems.runeAir).define('S', ModFluffBlocks.livingwoodSlab).define('L', Items.LEATHER).pattern("SSS").pattern("RL ").pattern("SSS").unlockedBy("has_item", conditionsFromItem(ModItems.runeAir)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModBlocks.bifrostPerm).requires(ModItems.rainbowRod).requires(ModBlocks.elfGlass).unlockedBy("has_item", conditionsFromItem(ModItems.rainbowRod)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModBlocks.cellBlock, 3).requires(Items.CACTUS, 3).requires(Items.BEETROOT).requires(Items.CARROT).requires(Items.POTATO).unlockedBy("has_item", conditionsFromItem(ModSubtiles.dandelifeon)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.teruTeruBozu).define('C', ModItems.manaweaveCloth).define('S', Items.SUNFLOWER).pattern("C").pattern("C").pattern("S").unlockedBy("has_item", conditionsFromItem(ModItems.manaweaveCloth)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.avatar).define('D', ModTags.Items.GEMS_MANA_DIAMOND).define('W', ModTags.Items.LIVINGWOOD_LOGS).pattern(" W ").pattern("WDW").pattern("W W").unlockedBy("has_item", conditionsFromTag(ModTags.Items.GEMS_MANA_DIAMOND)).save(consumer);
    ShapedRecipeBuilder.shaped(ModBlocks.animatedTorch).define('D', ModTags.Items.DUSTS_MANA).define('T', Items.REDSTONE_TORCH).pattern("D").pattern("T").unlockedBy("has_item", conditionsFromItem(Items.REDSTONE_TORCH)).unlockedBy("has_alt_item", conditionsFromTag(ModTags.Items.DUSTS_MANA)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.livingwoodTwig).define('W', ModTags.Items.LIVINGWOOD_LOGS).pattern("W").pattern("W").unlockedBy("has_item", conditionsFromTag(ModTags.Items.LIVINGWOOD_LOGS)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.redstoneRoot).requires(Items.REDSTONE).requires(Ingredient.of(Items.FERN, Items.GRASS)).unlockedBy("has_item", conditionsFromItem(Items.REDSTONE)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.dreamwoodTwig).define('W', ModTags.Items.DREAMWOOD_LOGS).pattern("W").pattern("W").unlockedBy("has_item", conditionsFromTag(ModTags.Items.DREAMWOOD_LOGS)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.gaiaIngot).define('S', ModItems.lifeEssence).define('I', ModTags.Items.INGOTS_TERRASTEEL).pattern(" S ").pattern("SIS").pattern(" S ").unlockedBy("has_item", conditionsFromItem(ModItems.lifeEssence)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.manaweaveCloth).define('S', ModItems.manaString).pattern("SS").pattern("SS").unlockedBy("has_item", conditionsFromItem(ModItems.manaString)).save(consumer);
    Ingredient dyes = Ingredient.of(Items.WHITE_DYE, Items.ORANGE_DYE, Items.MAGENTA_DYE, Items.LIGHT_BLUE_DYE, Items.YELLOW_DYE, Items.LIME_DYE, Items.PINK_DYE, Items.GRAY_DYE, Items.LIGHT_GRAY_DYE, Items.CYAN_DYE, Items.PURPLE_DYE, Items.BLUE_DYE, Items.BROWN_DYE, Items.GREEN_DYE, Items.RED_DYE, Items.BLACK_DYE);
    ShapelessRecipeBuilder.shapeless(ModItems.fertilizer).requires(Items.BONE_MEAL).requires(dyes, 4).unlockedBy("has_item", hasAnyDye).save(base::setValue, "botania:fertilizer_dye");
    ShapelessRecipeBuilder.shapeless(ModItems.fertilizer, 3).requires(Items.BONE_MEAL).requires(dyes, 4).unlockedBy("has_item", hasAnyDye).save(gog::setValue, "botania:fertilizer_dye");
    consumer.accept(new GogAlternationResult(gog.getValue(), base.getValue()));
    ShapelessRecipeBuilder.shapeless(ModItems.drySeeds).requires(ModItems.grassSeeds).requires(Items.DEAD_BUSH).group("botania:seeds").unlockedBy("has_item", conditionsFromItem(ModItems.grassSeeds)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.goldenSeeds).requires(ModItems.grassSeeds).requires(Items.WHEAT).group("botania:seeds").unlockedBy("has_item", conditionsFromItem(ModItems.grassSeeds)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.vividSeeds).requires(ModItems.grassSeeds).requires(Items.GREEN_DYE).group("botania:seeds").unlockedBy("has_item", conditionsFromItem(ModItems.grassSeeds)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.scorchedSeeds).requires(ModItems.grassSeeds).requires(Items.BLAZE_POWDER).group("botania:seeds").unlockedBy("has_item", conditionsFromItem(ModItems.grassSeeds)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.infusedSeeds).requires(ModItems.grassSeeds).requires(Items.PRISMARINE_SHARD).group("botania:seeds").unlockedBy("has_item", conditionsFromItem(ModItems.grassSeeds)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.mutatedSeeds).requires(ModItems.grassSeeds).requires(Items.SPIDER_EYE).group("botania:seeds").unlockedBy("has_item", conditionsFromItem(ModItems.grassSeeds)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.darkQuartz, 8).define('Q', Items.QUARTZ).define('C', Ingredient.of(Items.COAL, Items.CHARCOAL)).pattern("QQQ").pattern("QCQ").pattern("QQQ").unlockedBy("has_item", conditionsFromItem(Items.QUARTZ)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.blazeQuartz, 8).define('Q', Items.QUARTZ).define('C', Items.BLAZE_POWDER).pattern("QQQ").pattern("QCQ").pattern("QQQ").unlockedBy("has_item", conditionsFromItem(Items.QUARTZ)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.lavenderQuartz, 8).define('Q', Items.QUARTZ).define('C', Ingredient.of(Items.ALLIUM, Items.PINK_TULIP, Items.LILAC, Items.PEONY)).pattern("QQQ").pattern("QCQ").pattern("QQQ").unlockedBy("has_item", conditionsFromItem(Items.QUARTZ)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.redQuartz, 8).define('Q', Items.QUARTZ).define('C', Items.REDSTONE).pattern("QQQ").pattern("QCQ").pattern("QQQ").unlockedBy("has_item", conditionsFromItem(Items.QUARTZ)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.sunnyQuartz, 8).define('Q', Items.QUARTZ).define('C', Items.SUNFLOWER).pattern("QQQ").pattern("QCQ").pattern("QQQ").unlockedBy("has_item", conditionsFromItem(Items.QUARTZ)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.vineBall).define('V', Items.VINE).pattern("VVV").pattern("VVV").pattern("VVV").unlockedBy("has_item", conditionsFromItem(Items.VINE)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.necroVirus).requires(ModItems.pixieDust).requires(ModItems.vineBall).requires(Items.MAGMA_CREAM).requires(Items.FERMENTED_SPIDER_EYE).requires(Items.ENDER_EYE).requires(Items.ZOMBIE_HEAD).unlockedBy("has_item", conditionsFromItem(ModItems.pixieDust)).unlockedBy("has_alt_item", conditionsFromItem(Items.ZOMBIE_HEAD)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.nullVirus).requires(ModItems.pixieDust).requires(ModItems.vineBall).requires(Items.MAGMA_CREAM).requires(Items.FERMENTED_SPIDER_EYE).requires(Items.ENDER_EYE).requires(Items.SKELETON_SKULL).unlockedBy("has_item", conditionsFromItem(ModItems.pixieDust)).unlockedBy("has_alt_item", conditionsFromItem(Items.SKELETON_SKULL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.spark).define('P', ModTags.Items.PETALS).define('B', Items.BLAZE_POWDER).define('N', Items.GOLD_NUGGET).pattern(" P ").pattern("BNB").pattern(" P ").unlockedBy("has_item", conditionsFromItem(Items.BLAZE_POWDER)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.sparkUpgradeDispersive).requires(ModItems.pixieDust).requires(ModTags.Items.INGOTS_MANASTEEL).requires(ModItems.runeWater).group("botania:spark_upgrade").unlockedBy("has_item", conditionsFromItem(ModItems.pixieDust)).unlockedBy("has_alt_item", conditionsFromItem(ModItems.spark)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.sparkUpgradeDominant).requires(ModItems.pixieDust).requires(ModTags.Items.INGOTS_MANASTEEL).requires(ModItems.runeFire).group("botania:spark_upgrade").unlockedBy("has_item", conditionsFromItem(ModItems.pixieDust)).unlockedBy("has_alt_item", conditionsFromItem(ModItems.spark)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.sparkUpgradeRecessive).requires(ModItems.pixieDust).requires(ModTags.Items.INGOTS_MANASTEEL).requires(ModItems.runeEarth).group("botania:spark_upgrade").unlockedBy("has_item", conditionsFromItem(ModItems.pixieDust)).unlockedBy("has_alt_item", conditionsFromItem(ModItems.spark)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.sparkUpgradeIsolated).requires(ModItems.pixieDust).requires(ModTags.Items.INGOTS_MANASTEEL).requires(ModItems.runeAir).group("botania:spark_upgrade").unlockedBy("has_item", conditionsFromItem(ModItems.pixieDust)).unlockedBy("has_alt_item", conditionsFromItem(ModItems.spark)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.vial, 3).define('G', ModBlocks.manaGlass).pattern("G G").pattern(" G ").unlockedBy("has_item", conditionsFromItem(ModBlocks.manaGlass)).unlockedBy("has_alt_item", conditionsFromItem(ModBlocks.brewery)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.flask, 3).define('G', ModBlocks.elfGlass).pattern("G G").pattern(" G ").unlockedBy("has_item", conditionsFromItem(ModBlocks.elfGlass)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.worldSeed, 4).define('S', Items.WHEAT_SEEDS).define('D', ModTags.Items.GEMS_DRAGONSTONE).define('G', Items.GRASS_BLOCK).pattern("G").pattern("S").pattern("D").unlockedBy("has_item", conditionsFromTag(ModTags.Items.GEMS_DRAGONSTONE)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.thornChakram, 2).define('T', ModTags.Items.INGOTS_TERRASTEEL).define('V', Items.VINE).pattern("VVV").pattern("VTV").pattern("VVV").unlockedBy("has_item", conditionsFromTag(ModTags.Items.INGOTS_TERRASTEEL)).save(consumer);
    ShapedRecipeBuilder.shaped(ModItems.flareChakram, 2).define('P', ModItems.pixieDust).define('B', Items.BLAZE_POWDER).define('C', ModItems.thornChakram).pattern("BBB").pattern("CPC").pattern("BBB").unlockedBy("has_item", conditionsFromItem(ModItems.thornChakram)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.phantomInk, 4).requires(ModItems.manaPearl).requires(Ingredient.of(Arrays.stream(DyeColor.values()).map(DyeItem::byColor).toArray(ItemLike[]::new))).requires(Ingredient.of(Items.GLASS, Items.WHITE_STAINED_GLASS, Items.ORANGE_STAINED_GLASS, Items.MAGENTA_STAINED_GLASS, Items.LIGHT_BLUE_STAINED_GLASS, Items.YELLOW_STAINED_GLASS, Items.LIME_STAINED_GLASS, Items.PINK_STAINED_GLASS, Items.GRAY_STAINED_GLASS, Items.LIGHT_GRAY_STAINED_GLASS, Items.CYAN_STAINED_GLASS, Items.PURPLE_STAINED_GLASS, Items.BLUE_STAINED_GLASS, Items.BROWN_STAINED_GLASS, Items.GREEN_STAINED_GLASS, Items.RED_STAINED_GLASS, Items.BLACK_STAINED_GLASS)).requires(Items.GLASS_BOTTLE, 4).unlockedBy("has_item", conditionsFromItem(ModItems.manaPearl)).save(consumer);
    ShapelessRecipeBuilder.shapeless(ModItems.keepIvy).requires(ModItems.pixieDust).requires(Items.VINE).requires(ModItems.enderAirBottle).unlockedBy("has_item", conditionsFromItem(ModItems.enderAirBottle)).save(consumer);
}
Also used : FinishedRecipe(net.minecraft.data.recipes.FinishedRecipe) ItemLike(net.minecraft.world.level.ItemLike) Ingredient(net.minecraft.world.item.crafting.Ingredient) AccessorIngredient(vazkii.botania.mixin.AccessorIngredient) DyeItem(net.minecraft.world.item.DyeItem) InventoryChangeTrigger(net.minecraft.advancements.critereon.InventoryChangeTrigger) ItemStack(net.minecraft.world.item.ItemStack) MutableObject(org.apache.commons.lang3.mutable.MutableObject)

Aggregations

FinishedRecipe (net.minecraft.data.recipes.FinishedRecipe)18 ResourceLocation (net.minecraft.resources.ResourceLocation)13 Consumer (java.util.function.Consumer)11 Ingredient (net.minecraft.world.item.crafting.Ingredient)11 DataGenerator (net.minecraft.data.DataGenerator)10 ItemStack (net.minecraft.world.item.ItemStack)10 Items (net.minecraft.world.item.Items)10 ShapelessRecipeBuilder (net.minecraft.data.recipes.ShapelessRecipeBuilder)9 ItemTags (net.minecraft.tags.ItemTags)9 ItemLike (net.minecraft.world.level.ItemLike)9 Function (java.util.function.Function)8 ShapedRecipeBuilder (net.minecraft.data.recipes.ShapedRecipeBuilder)8 Blocks (net.minecraft.world.level.block.Blocks)8 CompoundIngredient (slimeknights.mantle.recipe.data.CompoundIngredient)8 ItemCastingRecipeBuilder (slimeknights.tconstruct.library.recipe.casting.ItemCastingRecipeBuilder)8 FluidTags (net.minecraft.tags.FluidTags)7 EntityType (net.minecraft.world.entity.EntityType)7 Fluids (net.minecraft.world.level.material.Fluids)7 Tags (net.minecraftforge.common.Tags)7 ConditionalRecipe (net.minecraftforge.common.crafting.ConditionalRecipe)7