diff --git a/src/main/java/org/betterx/betterend/recipe/InfusionRecipes.java b/src/main/java/org/betterx/betterend/recipe/InfusionRecipes.java index 32a09c62..6d823fa5 100644 --- a/src/main/java/org/betterx/betterend/recipe/InfusionRecipes.java +++ b/src/main/java/org/betterx/betterend/recipe/InfusionRecipes.java @@ -4,612 +4,572 @@ import org.betterx.betterend.recipe.builders.InfusionRecipe; import org.betterx.betterend.registry.EndBlocks; import org.betterx.betterend.registry.EndItems; -import net.minecraft.world.item.EnchantedBookItem; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraft.world.item.enchantment.Enchantment; -import net.minecraft.world.item.enchantment.EnchantmentInstance; import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.block.Blocks; public class InfusionRecipes { public static void register() { - InfusionRecipe.Builder.create("runed_flavolite") - .setInput(EndBlocks.FLAVOLITE.polished) - .setOutput(EndBlocks.FLAVOLITE_RUNED) - .addCatalyst(0, EndItems.CRYSTAL_SHARDS) - .addCatalyst(2, EndItems.CRYSTAL_SHARDS) - .addCatalyst(4, EndItems.CRYSTAL_SHARDS) - .addCatalyst(6, EndItems.CRYSTAL_SHARDS) - .setTime(100) - .build(); + InfusionRecipe.create("runed_flavolite", EndBlocks.FLAVOLITE_RUNED) + .setPrimaryInput(EndBlocks.FLAVOLITE.polished) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.EAST, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.WEST, EndItems.CRYSTAL_SHARDS) + .setTime(100) + .build(); - InfusionRecipe.Builder.create("eternal_crystal") - .setInput(Items.END_CRYSTAL) - .setOutput(EndItems.ETERNAL_CRYSTAL) - .addCatalyst(0, EndItems.CRYSTAL_SHARDS) - .addCatalyst(2, EndItems.CRYSTAL_SHARDS) - .addCatalyst(4, EndItems.CRYSTAL_SHARDS) - .addCatalyst(6, EndItems.CRYSTAL_SHARDS) - .addCatalyst(1, EndItems.ENDER_SHARD) - .addCatalyst(3, EndItems.ENDER_SHARD) - .addCatalyst(5, EndItems.ENDER_SHARD) - .addCatalyst(7, EndItems.ENDER_SHARD) - .setTime(250) - .build(); + InfusionRecipe.create("eternal_crystal", EndItems.ETERNAL_CRYSTAL) + .setPrimaryInputAndUnlock(Items.END_CRYSTAL) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.EAST, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.WEST, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, EndItems.ENDER_SHARD) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, EndItems.ENDER_SHARD) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, EndItems.ENDER_SHARD) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, EndItems.ENDER_SHARD) + .setTime(250) + .build(); - InfusionRecipe.Builder.create("crystalite_helmet") - .setInput(EndBlocks.TERMINITE.helmet) - .setOutput(EndItems.CRYSTALITE_HELMET) - .addCatalyst(0, EndItems.AMBER_GEM) - .addCatalyst(2, EndItems.CRYSTAL_SHARDS) - .addCatalyst(6, EndItems.CRYSTAL_SHARDS) - .setTime(150) - .build(); - InfusionRecipe.Builder.create("crystalite_chestplate") - .setInput(EndBlocks.TERMINITE.chestplate) - .setOutput(EndItems.CRYSTALITE_CHESTPLATE) - .addCatalyst(0, EndItems.AMBER_GEM) - .addCatalyst(1, EndItems.CRYSTAL_SHARDS) - .addCatalyst(3, EndItems.CRYSTAL_SHARDS) - .addCatalyst(5, EndItems.CRYSTAL_SHARDS) - .addCatalyst(7, EndItems.CRYSTAL_SHARDS) - .setTime(300) - .build(); - InfusionRecipe.Builder.create("crystalite_leggings") - .setInput(EndBlocks.TERMINITE.leggings) - .setOutput(EndItems.CRYSTALITE_LEGGINGS) - .addCatalyst(0, EndItems.AMBER_GEM) - .addCatalyst(2, EndItems.CRYSTAL_SHARDS) - .addCatalyst(4, EndItems.CRYSTAL_SHARDS) - .addCatalyst(6, EndItems.CRYSTAL_SHARDS) - .setTime(225) - .build(); - InfusionRecipe.Builder.create("crystalite_boots") - .setInput(EndBlocks.TERMINITE.boots) - .setOutput(EndItems.CRYSTALITE_BOOTS) - .addCatalyst(0, EndItems.AMBER_GEM) - .addCatalyst(2, EndItems.CRYSTAL_SHARDS) - .addCatalyst(6, EndItems.CRYSTAL_SHARDS) - .setTime(150) - .build(); + InfusionRecipe.create("crystalite_helmet", EndItems.CRYSTALITE_HELMET) + .setPrimaryInputAndUnlock(EndBlocks.TERMINITE.helmet) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.AMBER_GEM) + .addCatalyst(InfusionRecipe.Catalysts.EAST, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.WEST, EndItems.CRYSTAL_SHARDS) + .setTime(150) + .build(); + InfusionRecipe.create("crystalite_chestplate", EndItems.CRYSTALITE_CHESTPLATE) + .setPrimaryInputAndUnlock(EndBlocks.TERMINITE.chestplate) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.AMBER_GEM) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, EndItems.CRYSTAL_SHARDS) + .setTime(300) + .build(); + InfusionRecipe.create("crystalite_leggings", EndItems.CRYSTALITE_LEGGINGS) + .setPrimaryInputAndUnlock(EndBlocks.TERMINITE.leggings) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.AMBER_GEM) + .addCatalyst(InfusionRecipe.Catalysts.EAST, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.WEST, EndItems.CRYSTAL_SHARDS) + .setTime(225) + .build(); + InfusionRecipe.create("crystalite_boots", EndItems.CRYSTALITE_BOOTS) + .setPrimaryInputAndUnlock(EndBlocks.TERMINITE.boots) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.AMBER_GEM) + .addCatalyst(InfusionRecipe.Catalysts.EAST, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.WEST, EndItems.CRYSTAL_SHARDS) + .setTime(150) + .build(); - InfusionRecipe.Builder.create("crystalite_elytra") - .setInput(Items.ELYTRA) - .setOutput(EndItems.CRYSTALITE_ELYTRA) - .addCatalyst(0, EndItems.AMBER_GEM) - .addCatalyst(1, EndItems.CRYSTAL_SHARDS) - .addCatalyst(2, EndItems.ENCHANTED_MEMBRANE) - .addCatalyst(3, EndItems.CRYSTAL_SHARDS) - .addCatalyst(4, EndItems.ENCHANTED_MEMBRANE) - .addCatalyst(5, EndItems.CRYSTAL_SHARDS) - .addCatalyst(6, EndItems.ENCHANTED_MEMBRANE) - .addCatalyst(7, EndItems.CRYSTAL_SHARDS) - .setTime(500) - .build(); + InfusionRecipe.create("crystalite_elytra", EndItems.CRYSTALITE_ELYTRA) + .setPrimaryInputAndUnlock(Items.ELYTRA) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.AMBER_GEM) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.EAST, EndItems.ENCHANTED_MEMBRANE) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, EndItems.ENCHANTED_MEMBRANE) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.WEST, EndItems.ENCHANTED_MEMBRANE) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, EndItems.CRYSTAL_SHARDS) + .setTime(500) + .build(); - InfusionRecipe.Builder.create("enchanted_petal") - .setInput(EndItems.HYDRALUX_PETAL) - .setOutput(EndItems.ENCHANTED_PETAL) - .addCatalyst(0, EndItems.CRYSTAL_SHARDS) - .addCatalyst(2, EndItems.CRYSTAL_SHARDS) - .addCatalyst(4, EndItems.CRYSTAL_SHARDS) - .addCatalyst(6, EndItems.CRYSTAL_SHARDS) - .setTime(75) - .build(); - InfusionRecipe.Builder.create("enchanted_membrane") - .setInput(Items.PHANTOM_MEMBRANE) - .setOutput(EndItems.ENCHANTED_MEMBRANE) - .addCatalyst(0, EndItems.CRYSTAL_SHARDS) - .addCatalyst(2, EndItems.CRYSTAL_SHARDS) - .addCatalyst(4, EndItems.CRYSTAL_SHARDS) - .addCatalyst(6, EndItems.CRYSTAL_SHARDS) - .setTime(75) - .build(); + InfusionRecipe.create("enchanted_petal", EndItems.ENCHANTED_PETAL) + .setPrimaryInputAndUnlock(EndItems.HYDRALUX_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.EAST, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.WEST, EndItems.CRYSTAL_SHARDS) + .setTime(75) + .build(); + InfusionRecipe.create("enchanted_membrane", EndItems.ENCHANTED_MEMBRANE) + .setPrimaryInputAndUnlock(Items.PHANTOM_MEMBRANE) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.EAST, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, EndItems.CRYSTAL_SHARDS) + .addCatalyst(InfusionRecipe.Catalysts.WEST, EndItems.CRYSTAL_SHARDS) + .setTime(75) + .build(); - InfusionRecipe.Builder.create("protection_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.ALL_DAMAGE_PROTECTION, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(4, Items.TURTLE_HELMET) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("fire_protection_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.FIRE_PROTECTION, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.BLAZE_ROD) - .addCatalyst(4, Items.BLAZE_ROD) - .addCatalyst(6, Items.BLAZE_ROD) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("feather_falling_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.FALL_PROTECTION, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.FEATHER) - .addCatalyst(4, Items.FEATHER) - .addCatalyst(6, Items.FEATHER) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("blast_protection_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.BLAST_PROTECTION, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Blocks.OBSIDIAN) - .addCatalyst(4, Blocks.OBSIDIAN) - .addCatalyst(6, Blocks.OBSIDIAN) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("projectile_protection_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.PROJECTILE_PROTECTION, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.SCUTE) - .addCatalyst(4, Items.SHIELD) - .addCatalyst(6, Items.SCUTE) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("respiration_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.RESPIRATION, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.NAUTILUS_SHELL) - .addCatalyst(4, Items.NAUTILUS_SHELL) - .addCatalyst(6, Items.NAUTILUS_SHELL) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("aqua_affinity_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.AQUA_AFFINITY, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.PRISMARINE_CRYSTALS) - .addCatalyst(4, Items.PRISMARINE_CRYSTALS) - .addCatalyst(6, Items.PRISMARINE_CRYSTALS) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("thorns_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.THORNS, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Blocks.CACTUS) - .addCatalyst(4, Blocks.CACTUS) - .addCatalyst(6, Blocks.CACTUS) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("depth_strider_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.DEPTH_STRIDER, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Blocks.LILY_PAD) - .addCatalyst(4, EndBlocks.END_LILY_SEED) - .addCatalyst(6, Blocks.LILY_PAD) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("frost_walker_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.FROST_WALKER, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(4, EndBlocks.ANCIENT_EMERALD_ICE) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("soul_speed_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.SOUL_SPEED, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Blocks.SOUL_SAND, Blocks.SOUL_SOIL) - .addCatalyst(4, Blocks.SOUL_SAND, Blocks.SOUL_SOIL) - .addCatalyst(6, Blocks.SOUL_SAND, Blocks.SOUL_SOIL) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("sharpness_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.SHARPNESS, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(4, Items.NETHERITE_SCRAP) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("smite_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.SMITE, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Blocks.SUNFLOWER) - .addCatalyst(4, Items.GOLD_INGOT) - .addCatalyst(6, Blocks.SUNFLOWER) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("bane_of_arthropods_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.BANE_OF_ARTHROPODS, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.FERMENTED_SPIDER_EYE) - .addCatalyst(4, Items.IRON_INGOT) - .addCatalyst(6, Items.FERMENTED_SPIDER_EYE) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("knockback_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.KNOCKBACK, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.REDSTONE) - .addCatalyst(4, Blocks.PISTON) - .addCatalyst(6, Items.REDSTONE) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("fire_aspect_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.FIRE_ASPECT, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.BLAZE_POWDER) - .addCatalyst(4, Items.MAGMA_CREAM) - .addCatalyst(6, Items.BLAZE_POWDER) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("looting_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.MOB_LOOTING, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.EMERALD) - .addCatalyst(4, Items.GOLD_INGOT) - .addCatalyst(6, Items.EMERALD) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("sweeping_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.SWEEPING_EDGE, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.GOLDEN_SWORD) - .addCatalyst(4, Items.IRON_SWORD) - .addCatalyst(6, Items.GOLDEN_SWORD) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("efficiency_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.BLOCK_EFFICIENCY, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, EndItems.AMBER_GEM) - .addCatalyst(4, EndItems.AMBER_GEM) - .addCatalyst(6, EndItems.AMBER_GEM) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("silk_touch_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.SILK_TOUCH, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Blocks.COBWEB) - .addCatalyst(4, EndItems.ETERNAL_CRYSTAL) - .addCatalyst(6, Blocks.COBWEB) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(375) - .build(); - InfusionRecipe.Builder.create("unbreaking_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.UNBREAKING, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.DIAMOND) - .addCatalyst(4, Items.DIAMOND) - .addCatalyst(6, Items.DIAMOND) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("fortune_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.BLOCK_FORTUNE, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.EMERALD) - .addCatalyst(4, Items.RABBIT_FOOT) - .addCatalyst(6, Items.EMERALD) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("power_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.POWER_ARROWS, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, EndItems.AMBER_GEM) - .addCatalyst(4, Items.DIAMOND_SWORD) - .addCatalyst(6, EndItems.AMBER_GEM) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("punch_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.PUNCH_ARROWS, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.POPPED_CHORUS_FRUIT) - .addCatalyst(4, Items.SPECTRAL_ARROW) - .addCatalyst(6, Items.POPPED_CHORUS_FRUIT) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("flame_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.FLAMING_ARROWS, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.BLAZE_POWDER) - .addCatalyst(4, Items.SPECTRAL_ARROW) - .addCatalyst(6, Items.BLAZE_POWDER) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("infinity_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.INFINITY_ARROWS, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.SPECTRAL_ARROW) - .addCatalyst(4, EndItems.ETERNAL_CRYSTAL) - .addCatalyst(6, Items.SPECTRAL_ARROW) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(375) - .build(); - InfusionRecipe.Builder.create("luck_of_sea_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.FISHING_LUCK, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.EMERALD) - .addCatalyst(4, Items.FISHING_ROD) - .addCatalyst(6, Items.EMERALD) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("lure_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.FISHING_SPEED, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.GOLD_NUGGET) - .addCatalyst(4, Items.FISHING_ROD) - .addCatalyst(6, Items.GOLD_NUGGET) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("loyalty_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.LOYALTY, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.ENDER_EYE) - .addCatalyst(4, Items.HEART_OF_THE_SEA) - .addCatalyst(6, Items.ENDER_EYE) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(375) - .build(); - InfusionRecipe.Builder.create("impaling_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.IMPALING, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.PRISMARINE_SHARD) - .addCatalyst(4, Items.IRON_SWORD) - .addCatalyst(6, Items.PRISMARINE_SHARD) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("riptide_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.RIPTIDE, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.LEAD) - .addCatalyst(4, Items.HEART_OF_THE_SEA) - .addCatalyst(6, Items.LEAD) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(375) - .build(); - InfusionRecipe.Builder.create("channeling_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.CHANNELING, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.CHAIN) - .addCatalyst(4, Items.HEART_OF_THE_SEA) - .addCatalyst(6, Items.CHAIN) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(375) - .build(); - InfusionRecipe.Builder.create("multishot_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.MULTISHOT, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.ARROW) - .addCatalyst(4, Items.SPECTRAL_ARROW) - .addCatalyst(6, Items.ARROW) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("quick_charge_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.QUICK_CHARGE, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.QUARTZ) - .addCatalyst(4, Items.GLOWSTONE_DUST) - .addCatalyst(6, Items.QUARTZ) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("piercing_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.PIERCING, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.GLOWSTONE_DUST) - .addCatalyst(4, Items.SPECTRAL_ARROW) - .addCatalyst(6, Items.GLOWSTONE_DUST) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(300) - .build(); - InfusionRecipe.Builder.create("mending_book") - .setInput(Items.BOOK) - .setOutput(createEnchantedBook(Enchantments.MENDING, 1)) - .addCatalyst(0, EndItems.ENCHANTED_PETAL) - .addCatalyst(2, Items.EXPERIENCE_BOTTLE) - .addCatalyst(4, Blocks.ANVIL) - .addCatalyst(6, Items.EXPERIENCE_BOTTLE) - .addCatalyst(1, Items.LAPIS_LAZULI) - .addCatalyst(3, Items.LAPIS_LAZULI) - .addCatalyst(5, Items.LAPIS_LAZULI) - .addCatalyst(7, Items.LAPIS_LAZULI) - .setGroup("enchantment") - .setTime(375) - .build(); + InfusionRecipe.create( + "protection_book", + Enchantments.ALL_DAMAGE_PROTECTION, 1 + ) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.TURTLE_HELMET) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create( + "fire_protection_book", + Enchantments.FIRE_PROTECTION, 1 + ) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.BLAZE_ROD) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.BLAZE_ROD) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.BLAZE_ROD) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create( + "feather_falling_book", + Enchantments.FALL_PROTECTION, 1 + ) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.FEATHER) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.FEATHER) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.FEATHER) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create( + "blast_protection_book", + Enchantments.BLAST_PROTECTION, 1 + ) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Blocks.OBSIDIAN) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Blocks.OBSIDIAN) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Blocks.OBSIDIAN) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create( + "projectile_protection_book", + Enchantments.PROJECTILE_PROTECTION, 1 + ) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.SCUTE) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.SHIELD) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.SCUTE) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("respiration_book", Enchantments.RESPIRATION, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.NAUTILUS_SHELL) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.NAUTILUS_SHELL) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.NAUTILUS_SHELL) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("aqua_affinity_book", Enchantments.AQUA_AFFINITY, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.PRISMARINE_CRYSTALS) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.PRISMARINE_CRYSTALS) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.PRISMARINE_CRYSTALS) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("thorns_book", Enchantments.THORNS, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Blocks.CACTUS) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Blocks.CACTUS) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Blocks.CACTUS) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("depth_strider_book", Enchantments.DEPTH_STRIDER, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Blocks.LILY_PAD) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, EndBlocks.END_LILY_SEED) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Blocks.LILY_PAD) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("frost_walker_book", Enchantments.FROST_WALKER, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, EndBlocks.ANCIENT_EMERALD_ICE) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("soul_speed_book", Enchantments.SOUL_SPEED, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Blocks.SOUL_SAND, Blocks.SOUL_SOIL) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Blocks.SOUL_SAND, Blocks.SOUL_SOIL) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Blocks.SOUL_SAND, Blocks.SOUL_SOIL) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("sharpness_book", Enchantments.SHARPNESS, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.NETHERITE_SCRAP) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("smite_book", Enchantments.SMITE, 1) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Blocks.SUNFLOWER) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.GOLD_INGOT) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Blocks.SUNFLOWER) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("bane_of_arthropods_book", Enchantments.BANE_OF_ARTHROPODS, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.FERMENTED_SPIDER_EYE) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.IRON_INGOT) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.FERMENTED_SPIDER_EYE) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("knockback_book", Enchantments.KNOCKBACK, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.REDSTONE) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Blocks.PISTON) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.REDSTONE) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("fire_aspect_book", Enchantments.FIRE_ASPECT, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.BLAZE_POWDER) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.MAGMA_CREAM) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.BLAZE_POWDER) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("looting_book", Enchantments.MOB_LOOTING, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.EMERALD) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.GOLD_INGOT) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.EMERALD) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("sweeping_book", Enchantments.SWEEPING_EDGE, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.GOLDEN_SWORD) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.IRON_SWORD) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.GOLDEN_SWORD) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("efficiency_book", Enchantments.BLOCK_EFFICIENCY, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, EndItems.AMBER_GEM) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, EndItems.AMBER_GEM) + .addCatalyst(InfusionRecipe.Catalysts.WEST, EndItems.AMBER_GEM) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("silk_touch_book", Enchantments.SILK_TOUCH, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Blocks.COBWEB) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, EndItems.ETERNAL_CRYSTAL) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Blocks.COBWEB) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(375) + .build(); + InfusionRecipe.create("unbreaking_book", Enchantments.UNBREAKING, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.DIAMOND) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.DIAMOND) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.DIAMOND) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("fortune_book", Enchantments.BLOCK_FORTUNE, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.EMERALD) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.RABBIT_FOOT) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.EMERALD) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("power_book", Enchantments.POWER_ARROWS, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, EndItems.AMBER_GEM) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.DIAMOND_SWORD) + .addCatalyst(InfusionRecipe.Catalysts.WEST, EndItems.AMBER_GEM) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("punch_book", Enchantments.PUNCH_ARROWS, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.POPPED_CHORUS_FRUIT) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.SPECTRAL_ARROW) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.POPPED_CHORUS_FRUIT) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("flame_book", Enchantments.FLAMING_ARROWS, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.BLAZE_POWDER) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.SPECTRAL_ARROW) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.BLAZE_POWDER) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("infinity_book", Enchantments.INFINITY_ARROWS, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.SPECTRAL_ARROW) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, EndItems.ETERNAL_CRYSTAL) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.SPECTRAL_ARROW) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(375) + .build(); + InfusionRecipe.create("luck_of_sea_book", Enchantments.FISHING_LUCK, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.EMERALD) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.FISHING_ROD) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.EMERALD) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("lure_book", Enchantments.FISHING_SPEED, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.GOLD_NUGGET) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.FISHING_ROD) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.GOLD_NUGGET) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("loyalty_book", Enchantments.LOYALTY, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.ENDER_EYE) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.HEART_OF_THE_SEA) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.ENDER_EYE) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(375) + .build(); + InfusionRecipe.create("impaling_book", Enchantments.IMPALING, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.PRISMARINE_SHARD) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.IRON_SWORD) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.PRISMARINE_SHARD) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("riptide_book", Enchantments.RIPTIDE, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.LEAD) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.HEART_OF_THE_SEA) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.LEAD) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(375) + .build(); + InfusionRecipe.create("channeling_book", Enchantments.CHANNELING, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.CHAIN) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.HEART_OF_THE_SEA) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.CHAIN) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(375) + .build(); + InfusionRecipe.create("multishot_book", Enchantments.MULTISHOT, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.ARROW) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.SPECTRAL_ARROW) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.ARROW) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("quick_charge_book", Enchantments.QUICK_CHARGE, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.QUARTZ) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.GLOWSTONE_DUST) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.QUARTZ) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("piercing_book", Enchantments.PIERCING, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.GLOWSTONE_DUST) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Items.SPECTRAL_ARROW) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.GLOWSTONE_DUST) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(300) + .build(); + InfusionRecipe.create("mending_book", Enchantments.MENDING, 1) + .setPrimaryInputAndUnlock(Items.BOOK) + .addCatalyst(InfusionRecipe.Catalysts.NORTH, EndItems.ENCHANTED_PETAL) + .addCatalyst(InfusionRecipe.Catalysts.EAST, Items.EXPERIENCE_BOTTLE) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH, Blocks.ANVIL) + .addCatalyst(InfusionRecipe.Catalysts.WEST, Items.EXPERIENCE_BOTTLE) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_EAST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.SOUTH_WEST, Items.LAPIS_LAZULI) + .addCatalyst(InfusionRecipe.Catalysts.NORTH_WEST, Items.LAPIS_LAZULI) + .setGroup("enchantment") + .setTime(375) + .build(); } - private static ItemStack createEnchantedBook(Enchantment enchantment, int level) { - ItemStack book = new ItemStack(Items.ENCHANTED_BOOK); - EnchantedBookItem.addEnchantment(book, new EnchantmentInstance(enchantment, level)); - return book; - } } diff --git a/src/main/java/org/betterx/betterend/recipe/builders/InfusionRecipe.java b/src/main/java/org/betterx/betterend/recipe/builders/InfusionRecipe.java index cd83e2d4..a5be5e2d 100644 --- a/src/main/java/org/betterx/betterend/recipe/builders/InfusionRecipe.java +++ b/src/main/java/org/betterx/betterend/recipe/builders/InfusionRecipe.java @@ -1,31 +1,36 @@ package org.betterx.betterend.recipe.builders; +import org.betterx.bclib.BCLib; import org.betterx.bclib.interfaces.UnknownReceipBookCategory; +import org.betterx.bclib.recipes.AbstractSingleInputRecipeBuilder; import org.betterx.bclib.recipes.BCLRecipeManager; import org.betterx.bclib.util.ItemUtil; import org.betterx.betterend.BetterEnd; -import org.betterx.betterend.config.Configs; import org.betterx.betterend.rituals.InfusionRitual; -import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.minecraft.core.NonNullList; import net.minecraft.core.RegistryAccess; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.TagParser; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; import net.minecraft.util.GsonHelper; +import net.minecraft.world.item.EnchantedBookItem; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.EnchantmentInstance; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.Level; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; import java.util.Arrays; @@ -58,6 +63,36 @@ public class InfusionRecipe implements Recipe, UnknownReceipBook Arrays.fill(catalysts, Ingredient.EMPTY); } + public static Builder create(String id, ItemLike output) { + return create(BetterEnd.makeID(id), output); + } + + public static Builder create(ResourceLocation id, ItemLike output) { + return new Builder(id, output); + } + + public static Builder create(String id, ItemStack output) { + return create(BetterEnd.makeID(id), output); + } + + public static Builder create(ResourceLocation id, ItemStack output) { + return new Builder(id, output); + } + + public static Builder create(String id, Enchantment enchantment, int level) { + return create(BetterEnd.makeID(id), enchantment, level); + } + + public static Builder create(ResourceLocation id, Enchantment enchantment, int level) { + return new Builder(id, createEnchantedBook(enchantment, level)); + } + + public static ItemStack createEnchantedBook(Enchantment enchantment, int level) { + ItemStack book = new ItemStack(Items.ENCHANTED_BOOK); + EnchantedBookItem.addEnchantment(book, new EnchantmentInstance(enchantment, level)); + return book; + } + public int getInfusionTime() { return this.time; } @@ -116,56 +151,36 @@ public class InfusionRecipe implements Recipe, UnknownReceipBook return TYPE; } - public static class Builder { - private final static Builder INSTANCE = new Builder(); - private static boolean exist; + public static class Builder extends AbstractSingleInputRecipeBuilder { + private final Ingredient[] catalysts; + private int time; - public static Builder create(String id) { - return create(BetterEnd.makeID(id)); + protected Builder(ResourceLocation id, ItemLike output) { + this(id, new ItemStack(output, 1)); } - public static Builder create(ResourceLocation id) { - INSTANCE.id = id; - INSTANCE.input = null; - INSTANCE.output = null; - INSTANCE.time = 1; - exist = Configs.RECIPE_CONFIG.getBoolean("infusion", id.getPath(), true); - - Arrays.fill(INSTANCE.catalysts, Ingredient.EMPTY); - - return INSTANCE; - } - - private final Ingredient[] catalysts = new Ingredient[8]; - private ResourceLocation id; - private Ingredient input; - private ItemStack output; - private String group; - private int time = 1; - - private Builder() { - Arrays.fill(catalysts, Ingredient.EMPTY); + protected Builder(ResourceLocation id, ItemStack output) { + super(id, output); + this.catalysts = new Ingredient[]{ + Ingredient.EMPTY, Ingredient.EMPTY, Ingredient.EMPTY, Ingredient.EMPTY, + Ingredient.EMPTY, Ingredient.EMPTY, Ingredient.EMPTY, Ingredient.EMPTY + }; + this.time = 1; } + @Override public Builder setGroup(String group) { - this.group = group; - return this; + return super.setGroup(group); } + /** + * @param input + * @return + * @deprecated use {@link #setPrimaryInput(ItemLike...)} + */ + @Deprecated(forRemoval = true) public Builder setInput(ItemLike input) { - this.input = Ingredient.of(input); - return this; - } - - public Builder setOutput(ItemLike output) { - this.output = new ItemStack(output); - this.output.setCount(1); - return this; - } - - public Builder setOutput(ItemStack output) { - this.output = output; - this.output.setCount(1); + super.setPrimaryInputAndUnlock(input); return this; } @@ -174,111 +189,122 @@ public class InfusionRecipe implements Recipe, UnknownReceipBook return this; } - public Builder addCatalyst(int slot, ItemLike... items) { - if (slot > 7) return this; - this.catalysts[slot] = Ingredient.of(items); + public Builder addCatalyst(Catalysts slot, ItemLike... items) { + this.catalysts[slot.index] = Ingredient.of(items); return this; } - public void build() { - if (exist) { - if (input == null) { - BetterEnd.LOGGER.warning( - "Input for Infusion recipe can't be 'null', recipe {} will be ignored!", - id - ); - return; - } - if (output == null) { - BetterEnd.LOGGER.warning( - "Output for Infusion recipe can't be 'null', recipe {} will be ignored!", - id - ); - return; - } - InfusionRecipe recipe = new InfusionRecipe(id, input, output); - recipe.group = group != null ? group : GROUP; - recipe.time = time; - int empty = 0; - for (int i = 0; i < catalysts.length; i++) { - if (catalysts[i].isEmpty()) empty++; - else recipe.catalysts[i] = catalysts[i]; - } - if (empty == catalysts.length) { - BetterEnd.LOGGER.warning("At least one catalyst must be non empty, recipe {} will be ignored!", id); - return; - } - BCLRecipeManager.addRecipe(TYPE, recipe); + public Builder addCatalyst(Catalysts slot, ItemStack stack) { + this.catalysts[slot.index] = Ingredient.of(stack); + return this; + } + + public Builder addCatalyst(Catalysts slot, TagKey tag) { + this.catalysts[slot.index] = Ingredient.of(tag); + return this; + } + + @Override + protected boolean checkRecipe() { + if (time < 0) { + BCLib.LOGGER.warning( + "Time should be positive, recipe {} will be ignored!", + id + ); + return false; } + return super.checkRecipe(); + } + + @Override + protected void serializeRecipeData(JsonObject root) { + super.serializeRecipeData(root); + + if (time != 1) { + root.addProperty("time", time); + } + + JsonObject catalystObject = new JsonObject(); + for (var cat : Catalysts.values()) { + if (catalysts[cat.index] != null && !catalysts[cat.index].isEmpty()) { + catalystObject.add(cat.key, ItemUtil.toJsonIngredientWithNBT(catalysts[cat.index])); + } + } + root.add("catalysts", catalystObject); + } + + @Override + protected RecipeSerializer getSerializer() { + return SERIALIZER; + } + } + + public enum Catalysts { + NORTH(0, "north"), + NORTH_EAST(1, "north_east"), + EAST(2, "east"), + SOUTH_EAST(3, ""), + SOUTH(4, "south"), + SOUTH_WEST(5, "south_west"), + WEST(6, "west"), + NORTH_WEST(7, "north_west"); + + public final int index; + public final String key; + + Catalysts(int index, String key) { + this.index = index; + this.key = key; } } public static class Serializer implements RecipeSerializer { + private Ingredient readIngredient(JsonObject obj, String key) { + if (obj.has(key)) { + JsonElement el = obj.get(key); + if (el.isJsonObject()) { + JsonObject o = el.getAsJsonObject(); + //directly read as ingredient + if (o.has("tag")) { + return ItemUtil.fromJsonIngredientWithNBT(o); + } else { + return Ingredient.of(ItemUtil.fromJsonRecipeWithNBT(o)); + } + } else if (el.isJsonArray()) { + //this is an Ingredient-Array, so read as such + JsonObject o = el.getAsJsonObject(); + return ItemUtil.fromJsonIngredientWithNBT(o); + } else if (obj.isJsonPrimitive()) { + String s = GsonHelper.getAsString(obj, key, ""); + ItemStack catalyst = ItemUtil.fromStackString(s); + return (catalyst != null && !catalyst.isEmpty()) + ? Ingredient.of(catalyst.getItem()) + : Ingredient.EMPTY; + } else { + throw new IllegalStateException("Invalid catalyst ingredient for " + key + ": " + el.toString()); + } + } + return null; + } + @Override public InfusionRecipe fromJson(ResourceLocation id, JsonObject json) { InfusionRecipe recipe = new InfusionRecipe(id); JsonObject inputObject = GsonHelper.getAsJsonObject(json, "input"); - recipe.input = Ingredient.fromJson(inputObject); - if (inputObject.has("nbt") && !recipe.input.isEmpty()) { - try { - String nbtData = GsonHelper.getAsString(inputObject, "nbt"); - CompoundTag nbt = TagParser.parseTag(nbtData); - recipe.input.getItems()[0].setTag(nbt); - } catch (CommandSyntaxException ex) { - BetterEnd.LOGGER.warning("Error parse nbt data for input.", ex); - } - } + recipe.input = ItemUtil.fromJsonIngredientWithNBT(inputObject); JsonObject result = GsonHelper.getAsJsonObject(json, "result"); - recipe.output = ItemUtil.fromJsonRecipe(result); + recipe.output = ItemUtil.fromJsonRecipeWithNBT(result); if (recipe.output == null) { throw new IllegalStateException("Output item does not exists!"); } - if (result.has("nbt")) { - try { - String nbtData = GsonHelper.getAsString(result, "nbt"); - CompoundTag nbt = TagParser.parseTag(nbtData); - recipe.output.setTag(nbt); - } catch (CommandSyntaxException ex) { - BetterEnd.LOGGER.warning("Error parse nbt data for output.", ex); - } - } recipe.group = GsonHelper.getAsString(json, "group", GROUP); recipe.time = GsonHelper.getAsInt(json, "time", 1); JsonObject catalysts = GsonHelper.getAsJsonObject(json, "catalysts"); - ItemStack catalyst = ItemUtil.fromStackString(GsonHelper.getAsString(catalysts, "north", "")); - recipe.catalysts[0] = (catalyst != null && !catalyst.isEmpty()) - ? Ingredient.of(catalyst.getItem()) - : Ingredient.EMPTY; - catalyst = ItemUtil.fromStackString(GsonHelper.getAsString(catalysts, "north_east", "")); - recipe.catalysts[1] = (catalyst != null && !catalyst.isEmpty()) - ? Ingredient.of(catalyst.getItem()) - : Ingredient.EMPTY; - catalyst = ItemUtil.fromStackString(GsonHelper.getAsString(catalysts, "east", "")); - recipe.catalysts[2] = (catalyst != null && !catalyst.isEmpty()) - ? Ingredient.of(catalyst.getItem()) - : Ingredient.EMPTY; - catalyst = ItemUtil.fromStackString(GsonHelper.getAsString(catalysts, "south_east", "")); - recipe.catalysts[3] = (catalyst != null && !catalyst.isEmpty()) - ? Ingredient.of(catalyst.getItem()) - : Ingredient.EMPTY; - catalyst = ItemUtil.fromStackString(GsonHelper.getAsString(catalysts, "south", "")); - recipe.catalysts[4] = (catalyst != null && !catalyst.isEmpty()) - ? Ingredient.of(catalyst.getItem()) - : Ingredient.EMPTY; - catalyst = ItemUtil.fromStackString(GsonHelper.getAsString(catalysts, "south_west", "")); - recipe.catalysts[5] = (catalyst != null && !catalyst.isEmpty()) - ? Ingredient.of(catalyst.getItem()) - : Ingredient.EMPTY; - catalyst = ItemUtil.fromStackString(GsonHelper.getAsString(catalysts, "west", "")); - recipe.catalysts[6] = (catalyst != null && !catalyst.isEmpty()) - ? Ingredient.of(catalyst.getItem()) - : Ingredient.EMPTY; - catalyst = ItemUtil.fromStackString(GsonHelper.getAsString(catalysts, "north_west", "")); - recipe.catalysts[7] = (catalyst != null && !catalyst.isEmpty()) - ? Ingredient.of(catalyst.getItem()) - : Ingredient.EMPTY; + for (var cat : Catalysts.values()) { + recipe.catalysts[cat.index] = readIngredient(catalysts, cat.key); + } return recipe; }