import { FluidType, FSBlocks, MCSounds, MCBlockStates, MCPlacedFeatures, FSTags, FSItems, ToolTier, FSParticles, ADDON_ID } from '../constants.js';
import { BaseGrowthProcessor, SaplingGrowthProcessor, TwoByTwoSaplingGrowthProcessor } from './types/growth.js';
import { BasicBreakProcessor } from './types/sickle_break.js';
import { BasicCrucibleRecipe, BasicCrucibleInteractRecipe } from './types/crucible.js';
import { tc as L, ma as V, Keys as x } from '../ftb_bedrock_bedrock_utils_dist_bedrock_utils.js';
import { MinecraftBlockTypes, MinecraftItemTypes } from '../minecraft_vanilla_data.js';

var _a, _b;
class CrucibleRecipes {
    static fromRenderId(renderId) {
        return this.RECIPES.find(value => value.renderId === renderId);
    }
    static fromItemStack(itemStack) {
        return this.RECIPES.find(value => value.isValid(itemStack));
    }
}
CrucibleRecipes.RECIPES = [
    new BasicCrucibleRecipe(MinecraftBlockTypes.OakLeaves, "oak_leaves", FluidType.WATER),
    new BasicCrucibleRecipe(MinecraftBlockTypes.SpruceLeaves, "spruce_leaves", FluidType.WATER),
    new BasicCrucibleRecipe(MinecraftBlockTypes.JungleLeaves, "jungle_leaves", FluidType.WATER),
    new BasicCrucibleRecipe(MinecraftBlockTypes.AcaciaLeaves, "acacia_leaves", FluidType.WATER),
    new BasicCrucibleRecipe(MinecraftBlockTypes.DarkOakLeaves, "dark_oak_leaves", FluidType.WATER),
    new BasicCrucibleRecipe(MinecraftBlockTypes.MangroveLeaves, "mangrove_leaves", FluidType.WATER),
    new BasicCrucibleRecipe(MinecraftBlockTypes.CherryLeaves, "cherry_leaves", FluidType.WATER),
    new BasicCrucibleRecipe(MinecraftBlockTypes.PaleOakLeaves, "pale_oak_leaves", FluidType.WATER),
    new BasicCrucibleRecipe(MinecraftBlockTypes.BirchLeaves, "birch_leaves", FluidType.WATER),
    new BasicCrucibleRecipe(MinecraftBlockTypes.AzaleaLeaves, "azalea_leaves", FluidType.WATER),
    new BasicCrucibleRecipe(MinecraftBlockTypes.AzaleaLeavesFlowered, "azalea_leaves", FluidType.WATER),
    new BasicCrucibleRecipe(MinecraftBlockTypes.Cobblestone, "cobblestone", FluidType.LAVA),
];
CrucibleRecipes.INTERACT_RECIPES = [
    new BasicCrucibleInteractRecipe(FluidType.WATER, FSBlocks.DUST, MinecraftBlockTypes.Clay, 1, MCSounds.BREAK_SAND),
];
CrucibleRecipes.FLUID_HOLDERS = [
    { itemId: MinecraftItemTypes.WaterBucket, fluid: FluidType.WATER, convertsTo: MinecraftItemTypes.Bucket, requiredLevels: 3, fillSound: MCSounds.BUCKET_EMPTY_WATER, emptySound: MCSounds.BUCKET_FILL_WATER },
    { itemId: MinecraftItemTypes.LavaBucket, fluid: FluidType.LAVA, convertsTo: MinecraftItemTypes.Bucket, requiredLevels: 3, fillSound: MCSounds.BUCKET_EMPTY_WATER, emptySound: MCSounds.BUCKET_FILL_WATER },
    { itemId: MinecraftItemTypes.Potion, fluid: FluidType.WATER, convertsTo: MinecraftItemTypes.GlassBottle, requiredLevels: 1, fillSound: MCSounds.BUCKET_EMPTY_WATER, emptySound: MCSounds.BUCKET_FILL_WATER },
];
class GrowthRecipes {
}
GrowthRecipes.PROCESSORS = [
    new BaseGrowthProcessor(MCBlockStates.GROWTH, 7, [MinecraftBlockTypes.Wheat, MinecraftBlockTypes.Carrots, MinecraftBlockTypes.Potatoes, MinecraftBlockTypes.Beetroot]),
    new BaseGrowthProcessor(MCBlockStates.GROWTH, 4, [MinecraftBlockTypes.PitcherCrop]),
    new BaseGrowthProcessor(MCBlockStates.GROWTH, 3, [MinecraftBlockTypes.SweetBerryBush]),
    new BaseGrowthProcessor(MCBlockStates.AGE, 2, [MinecraftBlockTypes.Cocoa]),
    new BaseGrowthProcessor(MCBlockStates.AGE, 3, [MinecraftBlockTypes.NetherWart]),
    new SaplingGrowthProcessor(MinecraftBlockTypes.OakSapling, MCPlacedFeatures.OAK_TREE),
    new SaplingGrowthProcessor(MinecraftBlockTypes.BirchSapling, MCPlacedFeatures.BIRCH_TREE),
    new SaplingGrowthProcessor(MinecraftBlockTypes.CherrySapling, MCPlacedFeatures.CHERRY_TREE),
    new SaplingGrowthProcessor(MinecraftBlockTypes.SpruceSapling, MCPlacedFeatures.SPRUCE_TREE),
    new SaplingGrowthProcessor(MinecraftBlockTypes.AcaciaSapling, MCPlacedFeatures.ACACIA_TREE),
    new SaplingGrowthProcessor(MinecraftBlockTypes.MangrovePropagule, MCPlacedFeatures.MANGROVE_TREE),
    new TwoByTwoSaplingGrowthProcessor(MinecraftBlockTypes.JungleSapling, MCPlacedFeatures.MEGA_JUNGLE_TREE),
    new TwoByTwoSaplingGrowthProcessor(MinecraftBlockTypes.PaleOakSapling, MCPlacedFeatures.PALE_OAK_TREE),
    new TwoByTwoSaplingGrowthProcessor(MinecraftBlockTypes.DarkOakSapling, MCPlacedFeatures.DARK_OAK_TREE),
    // This must be registered after the 2x2 jungle sapling processor
    new SaplingGrowthProcessor(MinecraftBlockTypes.JungleSapling, MCPlacedFeatures.JUNGLE_TREE),
    // 3rd party support
    // Tinkers
    new BaseGrowthProcessor(L("grow_stage"), 3),
    // Mystical Agriculture
    new BaseGrowthProcessor(V("age"), 7)
];
class DeadLeavesRecipes {
}
DeadLeavesRecipes.DEAD_LEAVES_TO_LEAVES = new Map([
    [FSBlocks.DEAD_LEAVES_ACACIA, MinecraftBlockTypes.AcaciaLeaves],
    [FSBlocks.DEAD_LEAVES_BIRCH, MinecraftBlockTypes.BirchLeaves],
    [FSBlocks.DEAD_LEAVES_CHERRY, MinecraftBlockTypes.CherryLeaves],
    [FSBlocks.DEAD_LEAVES_DARK_OAK, MinecraftBlockTypes.DarkOakLeaves],
    [FSBlocks.DEAD_LEAVES_JUNGLE, MinecraftBlockTypes.JungleLeaves],
    [FSBlocks.DEAD_LEAVES_MANGROVE, MinecraftBlockTypes.MangroveLeaves],
    [FSBlocks.DEAD_LEAVES_OAK, MinecraftBlockTypes.OakLeaves],
    [FSBlocks.DEAD_PALE_OAK, MinecraftBlockTypes.PaleOakLeaves],
    [FSBlocks.DEAD_LEAVES_SPRUCE, MinecraftBlockTypes.SpruceLeaves],
    [FSBlocks.DEAD_LEAVES_AZALEA, MinecraftBlockTypes.AzaleaLeaves],
]);
class SickleRecipes {
}
SickleRecipes.PROCESSORS = [
    new BasicBreakProcessor([...FSTags.ALL_LEAVES, MinecraftBlockTypes.Vine, MinecraftBlockTypes.MangroveRoots]),
    new BasicBreakProcessor(FSTags.PLANTS)
];
class HammerRecipes {
    static getHammerRecipeFromBlockId(blockId) {
        for (const recipe of this.RECIPES) {
            if (recipe.blockId === blockId) {
                return recipe;
            }
        }
        return this.EMPTY;
    }
    static createRecipes(block, dropBlock, particle, sound, startAutoHammerId) {
        this.createRecipe(block.uncompressed, dropBlock.uncompressed, particle, sound, ToolTier.WOOD, block.uncompressed.startsWith(x.MINECRAFT), startAutoHammerId);
        this.createRecipe(block.compressed, dropBlock.compressed, particle, sound, ToolTier.GOLD, false, startAutoHammerId = this.incrementAutoHammerId(startAutoHammerId));
        this.createRecipe(block.doubleCompressed, dropBlock.doubleCompressed, particle, sound, ToolTier.DIAMOND, false, startAutoHammerId = this.incrementAutoHammerId(startAutoHammerId));
        this.createRecipe(block.tripleCompressed, dropBlock.tripleCompressed, particle, sound, ToolTier.NETHERITE, false, this.incrementAutoHammerId(startAutoHammerId));
    }
    static createRecipe(blockId, itemDrop, particle, sound, toolTier, customBreakLogic, autoHammerId) {
        const newRecipe = { blockId, itemDrop, customBreakLogic, particle, sound, toolTier, autoHammerId };
        this.RECIPES.push(newRecipe);
        return newRecipe;
    }
    static incrementAutoHammerId(autoHammerId) {
        if (autoHammerId[1] >= 4) {
            return [autoHammerId[0] + 1, 0];
        }
        return [autoHammerId[0], autoHammerId[1] + 1];
    }
}
// Todo removing in scripting 2.0
HammerRecipes.HAMMER_TO_TIER = new Map([
    [FSItems.HAMMER_GOLD, ToolTier.GOLD],
    [FSItems.HAMMER_WOOD, ToolTier.WOOD],
    [FSItems.HAMMER_STONE, ToolTier.STONE],
    [FSItems.HAMMER_IRON, ToolTier.IRON],
    [FSItems.HAMMER_DIAMOND, ToolTier.DIAMOND],
    [FSItems.HAMMER_NETHERITE, ToolTier.NETHERITE]
]);
HammerRecipes.RECIPES = [];
HammerRecipes.EMPTY = HammerRecipes.createRecipe(MinecraftBlockTypes.Air, MinecraftBlockTypes.Air, undefined, undefined, ToolTier.STONE, false, [0, 0]);
(() => {
    HammerRecipes.createRecipes(FSBlocks.COMPRESSED_COBBLESTONE, FSBlocks.COMPRESSED_GRAVEL, FSParticles.COBBLESTONE_BREAK, MCSounds.BREAK_STONE, [0, 1]);
    HammerRecipes.createRecipes(FSBlocks.COMPRESSED_DIRT, FSBlocks.COMPRESSED_SAND, FSParticles.DIRT_BREAK, MCSounds.BREAK_SAND, [1, 0]);
    HammerRecipes.createRecipes(FSBlocks.COMPRESSED_GRAVEL, FSBlocks.COMPRESSED_DIRT, FSParticles.GRAVEL_BREAK, MCSounds.BREAK_DIRT, [1, 4]);
    HammerRecipes.createRecipes(FSBlocks.COMPRESSED_SAND, FSBlocks.COMPRESSED_DUST, FSParticles.SAND_BREAK, MinecraftBlockTypes.Sand, [2, 3]);
    HammerRecipes.createRecipes(FSBlocks.COMPRESSED_STONE, FSBlocks.COMPRESSED_GRAVEL, FSParticles.COBBLESTONE_BREAK, MCSounds.BREAK_STONE, [3, 2]);
    HammerRecipes.createRecipes(FSBlocks.COMPRESSED_END_STONE, FSBlocks.COMPRESSED_CRUSHED_END_STONE, FSParticles.END_STONE_BREAK, MCSounds.BREAK_END_STONE, [5, 3]);
    HammerRecipes.createRecipes(FSBlocks.COMPRESSED_NETHERRACK, FSBlocks.COMPRESSED_CRUSHED_NETHERRACK, FSParticles.NETHERRACK_BREAK, MCSounds.BREAK_NETHERRACK, [4, 4]);
    HammerRecipes.createRecipe(MinecraftBlockTypes.RedSand, FSBlocks.COMPRESSED_DUST.uncompressed, FSParticles.RED_SAND_BREAK, MinecraftBlockTypes.Sand, ToolTier.WOOD, true, [4, 1]);
    HammerRecipes.createRecipe(MinecraftBlockTypes.Sandstone, MinecraftBlockTypes.Sand, FSParticles.SAND_BREAK, MCSounds.BREAK_SAND, ToolTier.WOOD, true, [4, 2]);
    HammerRecipes.createRecipe(MinecraftBlockTypes.RedSandstone, MinecraftBlockTypes.RedSand, FSParticles.RED_SAND_BREAK, MCSounds.BREAK_SAND, ToolTier.WOOD, true, [7, 0]);
    HammerRecipes.createRecipe(MinecraftBlockTypes.Basalt, FSBlocks.CRUSHED_BASALT, FSParticles.BASALT_BREAK, MCSounds.BREAK_BASALT, ToolTier.WOOD, true, [4, 3]);
    HammerRecipes.createRecipe(MinecraftBlockTypes.Andesite, FSBlocks.COMPRESSED_GRAVEL.uncompressed, FSParticles.ANDESITE_BREAK, MCSounds.BREAK_STONE, ToolTier.WOOD, true, [6, 2]);
    HammerRecipes.createRecipe(MinecraftBlockTypes.Diorite, FSBlocks.COMPRESSED_GRAVEL.uncompressed, FSParticles.DIORITE_BREAK, MCSounds.BREAK_STONE, ToolTier.WOOD, true, [6, 3]);
    HammerRecipes.createRecipe(MinecraftBlockTypes.Granite, FSBlocks.COMPRESSED_GRAVEL.uncompressed, FSParticles.GRANITE_BREAK, MCSounds.BREAK_STONE, ToolTier.WOOD, true, [6, 4]);
    //  ["#c:sandstone/red_blocks", "minecraft:red_sand", 4],
})();
class SieveRecipes {
    static getMeshTypeByItemId(itemId) {
        return this.MESH_TYPES.find(meshType => meshType.itemId === itemId);
    }
    static getMeshTypeByStateId(stateId) {
        return this.MESH_TYPES.find(meshType => meshType.stateId === stateId);
    }
    static getMeshTypeFromState(state) {
        if (state === undefined) {
            return this.EMPTY_MESH;
        }
        const meshType = this.getMeshTypeByStateId(state);
        return meshType ? meshType : this.EMPTY_MESH;
    }
    static createMeshType(stateId, itemId) {
        const newMeshType = { stateId, itemId };
        this.MESH_TYPES.push(newMeshType);
        return newMeshType;
    }
    static getBlockTypeByItemId(itemId) {
        return this.BLOCK_TYPES.find(blockType => blockType.itemId === itemId);
    }
    static getBlockTypeByStateId(stateId) {
        return this.BLOCK_TYPES.find(blockType => blockType.stateId === stateId);
    }
    static getBlockTypeFromState(state) {
        if (state === undefined) {
            return this.EMPTY_BLOCK;
        }
        const blockType = this.getBlockTypeByStateId(state);
        return blockType ? blockType : this.EMPTY_BLOCK;
    }
    static createBlockType(stateId, itemId) {
        const newBlockType = { stateId, itemId };
        this.BLOCK_TYPES.push(newBlockType);
        return newBlockType;
    }
}
_a = SieveRecipes;
SieveRecipes.BLOCK_TYPES = [];
SieveRecipes.MESH_TYPES = [];
SieveRecipes.EMPTY_BLOCK = _a.createBlockType("empty", MinecraftBlockTypes.Air);
SieveRecipes.EMPTY_MESH = _a.createMeshType("empty", MinecraftBlockTypes.Air);
(() => {
    _a.createBlockType("gravel", MinecraftBlockTypes.Gravel);
    _a.createBlockType("sand", MinecraftBlockTypes.Sand);
    _a.createBlockType("red_sand", MinecraftBlockTypes.RedSand);
    _a.createBlockType("dirt", MinecraftBlockTypes.Dirt);
    _a.createBlockType("dust", FSBlocks.DUST);
    _a.createBlockType("soul_sand", MinecraftBlockTypes.SoulSand);
    _a.createBlockType("crushed_netherrack", FSBlocks.COMPRESSED_CRUSHED_NETHERRACK.uncompressed);
    _a.createBlockType("crushed_basalt", FSBlocks.CRUSHED_BASALT);
    _a.createBlockType("crushed_endstone", FSBlocks.COMPRESSED_CRUSHED_END_STONE.uncompressed);
    _a.createMeshType("diamond", FSItems.MESH_DIAMOND);
    _a.createMeshType("emerald", FSItems.MESH_EMERALD);
    _a.createMeshType("flint", FSItems.MESH_FLINT);
    _a.createMeshType("iron", FSItems.MESH_IRON);
    _a.createMeshType("string", FSItems.MESH_STRING);
})();
class PlantRecipes {
    static createPlant(name, itemId, typeIds, lootTable = ADDON_ID + `/plants/${name.toLowerCase().replaceAll(" ", "_")}`) {
        const newPlant = { name, itemId, typeIds, lootTable };
        this.RECIPES.push(newPlant);
        return newPlant;
    }
    static isCompactRegistered(compactId) {
        return this.ADDON_COMPACTS.includes(compactId);
    }
}
_b = PlantRecipes;
PlantRecipes.RECIPES = new Array();
PlantRecipes.ADDON_COMPACTS = [x.MYSTICAL, x.TINKERS];
PlantRecipes.EMPTY = _b.createPlant("Empty", "minecraft:air", [0, 0]);
PlantRecipes.ACACIA = _b.createPlant("Acacia", "minecraft:acacia_sapling", [0, 1]);
PlantRecipes.BAMBOO = _b.createPlant("Bamboo", "minecraft:bamboo", [0, 2]);
PlantRecipes.BIRCH = _b.createPlant("Birch", "minecraft:birch_sapling", [0, 3]);
PlantRecipes.CHERRY = _b.createPlant("Cherry", "minecraft:cherry_sapling", [0, 4]);
PlantRecipes.DARK_OAK = _b.createPlant("Dark Oak", "minecraft:dark_oak_sapling", [0, 5]);
PlantRecipes.JUNGLE = _b.createPlant("Jungle", "minecraft:jungle_sapling", [0, 6]);
PlantRecipes.MANGROVE = _b.createPlant("Mangrove", "minecraft:mangrove_propagule", [0, 7]);
PlantRecipes.OAK = _b.createPlant("Oak", "minecraft:oak_sapling", [0, 8]);
PlantRecipes.PALE_OAK = _b.createPlant("Pale Oak", "minecraft:pale_oak_sapling", [0, 9]);
PlantRecipes.SPRUCE = _b.createPlant("Spruce", "minecraft:spruce_sapling", [1, 0]);
PlantRecipes.CRIMSON = _b.createPlant("Crimson", "minecraft:crimson_fungus", [1, 1]);
PlantRecipes.WARPED = _b.createPlant("Warped", "minecraft:warped_fungus", [1, 2]);
PlantRecipes.WHEAT = _b.createPlant("Wheat", "minecraft:wheat_seeds", [1, 3]);
PlantRecipes.BEETROOT = _b.createPlant("Beetroot", "minecraft:beetroot_seeds", [1, 4]);
PlantRecipes.CARROT = _b.createPlant("Carrot", "minecraft:carrot", [1, 5]);
PlantRecipes.POTATO = _b.createPlant("Potato", "minecraft:potato", [1, 6]);
PlantRecipes.MELON = _b.createPlant("Melon", "minecraft:melon_seeds", [1, 7]);
PlantRecipes.PUMPKIN = _b.createPlant("Pumpkin", "minecraft:pumpkin_seeds", [1, 8]);
PlantRecipes.COCOA = _b.createPlant("Cocoa", "minecraft:cocoa_beans", [1, 9]);
PlantRecipes.SUGAR_CANE = _b.createPlant("Sugar Cane", "minecraft:sugar_cane", [2, 0]);
PlantRecipes.BERRY_BUSH = _b.createPlant("Berry Bush", "minecraft:sweet_berries", [2, 1]);
PlantRecipes.CACTUS = _b.createPlant("Cactus", "minecraft:cactus", [2, 2]);
PlantRecipes.RED_MUSHROOM = _b.createPlant("Red Mushroom", "minecraft:red_mushroom", [2, 3]);
PlantRecipes.BROWN_MUSHROOM = _b.createPlant("Brown Mushroom", "minecraft:brown_mushroom", [2, 4]);
PlantRecipes.NETHER_WART = _b.createPlant("Nether Wart", "minecraft:nether_wart", [2, 5]);
PlantRecipes.CHORUS = _b.createPlant("Chorus", "minecraft:chorus_fruit", [2, 6]);
PlantRecipes.AIR_SEEDS = _b.createPlant("Air Seeds", "ftb_ma:air_seeds", [2, 7], "blocks/ftb/ma/air_crop_grown");
PlantRecipes.AMETHYST_SEEDS = _b.createPlant("Amethyst Seeds", "ftb_ma:amethyst_seeds", [2, 8], "blocks/ftb/ma/amethyst_crop_grown");
PlantRecipes.ARMADILLO_SEEDS = _b.createPlant("Armadillo Seeds", "ftb_ma:armadillo_seeds", [2, 9], "blocks/ftb/ma/armadillo_crop_grown");
PlantRecipes.BLAZE_SEEDS = _b.createPlant("Blaze Seeds", "ftb_ma:blaze_seeds", [3, 0], "blocks/ftb/ma/blaze_crop_grown");
PlantRecipes.BREEZE_SEEDS = _b.createPlant("Breeze Seeds", "ftb_ma:breeze_seeds", [3, 1], "blocks/ftb/ma/breeze_crop_grown");
PlantRecipes.CHICKEN_SEEDS = _b.createPlant("Chicken Seeds", "ftb_ma:chicken_seeds", [3, 2], "blocks/ftb/ma/chicken_crop_grown");
PlantRecipes.COAL_SEEDS = _b.createPlant("Coal Seeds", "ftb_ma:coal_seeds", [3, 3], "blocks/ftb/ma/coal_crop_grown");
PlantRecipes.COPPER_SEEDS = _b.createPlant("Copper Seeds", "ftb_ma:copper_seeds", [3, 4], "blocks/ftb/ma/copper_crop_grown");
PlantRecipes.CORAL_SEEDS = _b.createPlant("Coral Seeds", "ftb_ma:coral_seeds", [3, 5], "blocks/ftb/ma/coral_crop_grown");
PlantRecipes.COW_SEEDS = _b.createPlant("Cow Seeds", "ftb_ma:cow_seeds", [3, 6], "blocks/ftb/ma/cow_crop_grown");
PlantRecipes.CREEPER_SEEDS = _b.createPlant("Creeper Seeds", "ftb_ma:creeper_seeds", [3, 7], "blocks/ftb/ma/creeper_crop_grown");
PlantRecipes.DEEPSLATE_SEEDS = _b.createPlant("Deepslate Seeds", "ftb_ma:deepslate_seeds", [3, 8], "blocks/ftb/ma/deepslate_crop_grown");
PlantRecipes.DIAMOND_SEEDS = _b.createPlant("Diamond Seeds", "ftb_ma:diamond_seeds", [3, 9], "blocks/ftb/ma/diamond_crop_grown");
PlantRecipes.DIRT_SEEDS = _b.createPlant("Dirt Seeds", "ftb_ma:dirt_seeds", [4, 0], "blocks/ftb/ma/dirt_crop_grown");
PlantRecipes.DYE_SEEDS = _b.createPlant("Dye Seeds", "ftb_ma:dye_seeds", [4, 1], "blocks/ftb/ma/dye_crop_grown");
PlantRecipes.EARTH_SEEDS = _b.createPlant("Earth Seeds", "ftb_ma:earth_seeds", [4, 2], "blocks/ftb/ma/earth_crop_grown");
PlantRecipes.EMERALD_SEEDS = _b.createPlant("Emerald Seeds", "ftb_ma:emerald_seeds", [4, 3], "blocks/ftb/ma/emerald_crop_grown");
PlantRecipes.END_SEEDS = _b.createPlant("End Seeds", "ftb_ma:end_seeds", [4, 4], "blocks/ftb/ma/end_crop_grown");
PlantRecipes.ENDERMAN_SEEDS = _b.createPlant("Enderman Seeds", "ftb_ma:enderman_seeds", [4, 5], "blocks/ftb/ma/enderman_crop_grown");
PlantRecipes.EXPERIENCE_SEEDS = _b.createPlant("Experience Seeds", "ftb_ma:experience_seeds", [4, 6], "blocks/ftb/ma/experience_crop_grown");
PlantRecipes.FIRE_SEEDS = _b.createPlant("Fire Seeds", "ftb_ma:fire_seeds", [4, 7], "blocks/ftb/ma/fire_crop_grown");
PlantRecipes.FISH_SEEDS = _b.createPlant("Fish Seeds", "ftb_ma:fish_seeds", [4, 8], "blocks/ftb/ma/fish_crop_grown");
PlantRecipes.GHAST_SEEDS = _b.createPlant("Ghast Seeds", "ftb_ma:ghast_seeds", [4, 9], "blocks/ftb/ma/ghast_crop_grown");
PlantRecipes.GLOWSTONE_SEEDS = _b.createPlant("Glowstone Seeds", "ftb_ma:glowstone_seeds", [5, 0], "blocks/ftb/ma/glowstone_crop_grown");
PlantRecipes.GOLD_SEEDS = _b.createPlant("Gold Seeds", "ftb_ma:gold_seeds", [5, 1], "blocks/ftb/ma/gold_crop_grown");
PlantRecipes.HONEY_SEEDS = _b.createPlant("Honey Seeds", "ftb_ma:honey_seeds", [5, 2], "blocks/ftb/ma/honey_crop_grown");
PlantRecipes.ICE_SEEDS = _b.createPlant("Ice Seeds", "ftb_ma:ice_seeds", [5, 3], "blocks/ftb/ma/ice_crop_grown");
PlantRecipes.INFERIUM_SEEDS = _b.createPlant("Inferium Seeds", "ftb_ma:inferium_seeds", [5, 4], "blocks/ftb/ma/inferium_crop_grown");
PlantRecipes.IRON_SEEDS = _b.createPlant("Iron Seeds", "ftb_ma:iron_seeds", [5, 5], "blocks/ftb/ma/iron_crop_grown");
PlantRecipes.LAPIS_LAZULI_SEEDS = _b.createPlant("Lapis Lazuli Seeds", "ftb_ma:lapis_lazuli_seeds", [5, 6], "blocks/ftb/ma/lapis_lazuli_crop_grown");
PlantRecipes.NATURE_SEEDS = _b.createPlant("Nature Seeds", "ftb_ma:nature_seeds", [5, 7], "blocks/ftb/ma/nature_crop_grown");
PlantRecipes.NETHER_SEEDS = _b.createPlant("Nether Seeds", "ftb_ma:nether_seeds", [5, 8], "blocks/ftb/ma/nether_crop_grown");
PlantRecipes.NETHER_QUARTZ_SEEDS = _b.createPlant("Nether Quartz Seeds", "ftb_ma:nether_quartz_seeds", [5, 9], "blocks/ftb/ma/nether_quartz_crop_grown");
PlantRecipes.NETHERITE_SEEDS = _b.createPlant("Netherite Seeds", "ftb_ma:netherite_seeds", [6, 0], "blocks/ftb/ma/netherite_crop_grown");
PlantRecipes.OBSIDIAN_SEEDS = _b.createPlant("Obsidian Seeds", "ftb_ma:obsidian_seeds", [6, 1], "blocks/ftb/ma/obsidian_crop_grown");
PlantRecipes.PIG_SEEDS = _b.createPlant("Pig Seeds", "ftb_ma:pig_seeds", [6, 2], "blocks/ftb/ma/pig_crop_grown");
PlantRecipes.PRISMARINE_SEEDS = _b.createPlant("Prismarine Seeds", "ftb_ma:prismarine_seeds", [6, 3], "blocks/ftb/ma/prismarine_crop_grown");
PlantRecipes.RABBIT_SEEDS = _b.createPlant("Rabbit Seeds", "ftb_ma:rabbit_seeds", [6, 4], "blocks/ftb/ma/rabbit_crop_grown");
PlantRecipes.REDSTONE_SEEDS = _b.createPlant("Redstone Seeds", "ftb_ma:redstone_seeds", [6, 5], "blocks/ftb/ma/redstone_crop_grown");
PlantRecipes.SHEEP_SEEDS = _b.createPlant("Sheep Seeds", "ftb_ma:sheep_seeds", [6, 6], "blocks/ftb/ma/sheep_crop_grown");
PlantRecipes.SKELETON_SEEDS = _b.createPlant("Skeleton Seeds", "ftb_ma:skeleton_seeds", [6, 7], "blocks/ftb/ma/skeleton_crop_grown");
PlantRecipes.SLIME_SEEDS = _b.createPlant("Slime Seeds", "ftb_ma:slime_seeds", [6, 8], "blocks/ftb/ma/slime_crop_grown");
PlantRecipes.SOULIUM_SEEDS = _b.createPlant("Soulium Seeds", "ftb_ma:soulium_seeds", [6, 9], "blocks/ftb/ma/soulium_crop_grown");
PlantRecipes.SPIDER_SEEDS = _b.createPlant("Spider Seeds", "ftb_ma:spider_seeds", [7, 0], "blocks/ftb/ma/spider_crop_grown");
PlantRecipes.SQUID_SEEDS = _b.createPlant("Squid Seeds", "ftb_ma:squid_seeds", [7, 1], "blocks/ftb/ma/squid_crop_grown");
PlantRecipes.STONE_SEEDS = _b.createPlant("Stone Seeds", "ftb_ma:stone_seeds", [7, 2], "blocks/ftb/ma/stone_crop_grown");
PlantRecipes.TURTLE_SEEDS = _b.createPlant("Turtle Seeds", "ftb_ma:turtle_seeds", [7, 3], "blocks/ftb/ma/turtle_crop_grown");
PlantRecipes.WATER_SEEDS = _b.createPlant("Water Seeds", "ftb_ma:water_seeds", [7, 4], "blocks/ftb/ma/water_crop_grown");
PlantRecipes.WITHER_SKELETON_SEEDS = _b.createPlant("Wither Skeleton Seeds", "ftb_ma:wither_skeleton_seeds", [7, 5], "blocks/ftb/ma/wither_skeleton_crop_grown");
PlantRecipes.WOOD_SEEDS = _b.createPlant("Wood Seeds", "ftb_ma:wood_seeds", [7, 6], "blocks/ftb/ma/wood_crop_grown");
PlantRecipes.ZOMBIE_SEEDS = _b.createPlant("Zombie Seeds", "ftb_ma:zombie_seeds", [7, 7], "blocks/ftb/ma/zombie_crop_grown");
PlantRecipes.COPPER_BERRY = _b.createPlant("Copper Berry", "ftb_tc:copper_berry_bush", [7, 8], "ftb/tinkers/berries/copper_berry_full");
PlantRecipes.DIAMOND_BERRY = _b.createPlant("Diamond Berry", "ftb_tc:diamond_berry_bush", [7, 9], "ftb/tinkers/berries/diamond_berry_full");
PlantRecipes.EMERALD_BERRY = _b.createPlant("Emerald Berry", "ftb_tc:emerald_berry_bush", [8, 0], "ftb/tinkers/berries/emerald_berry_full");
PlantRecipes.GOLD_BERRY = _b.createPlant("Gold Berry", "ftb_tc:gold_berry_bush", [8, 1], "ftb/tinkers/berries/gold_berry_full");
PlantRecipes.IRON_BERRY = _b.createPlant("Iron Berry", "ftb_tc:iron_berry_bush", [8, 2], "ftb/tinkers/berries/iron_berry_full");
PlantRecipes.XP_BERRY = _b.createPlant("Xp Berry", "ftb_tc:xp_berry_bush", [8, 3], "ftb/tinkers/berries/xp_berry_full");

export { CrucibleRecipes, DeadLeavesRecipes, GrowthRecipes, HammerRecipes, PlantRecipes, SickleRecipes, SieveRecipes };
