package net.minecraft.data.worldgen;

import com.google.common.collect.ImmutableList;
import net.minecraft.core.EnumDirection;
import net.minecraft.data.RegistryGeneration;
import net.minecraft.resources.MinecraftKey;
import net.minecraft.tags.TagsBlock;
import net.minecraft.world.level.block.BlockCampfire;
import net.minecraft.world.level.block.BlockIronBars;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.IBlockData;
import net.minecraft.world.level.levelgen.structure.templatesystem.DefinedStructureProcessor;
import net.minecraft.world.level.levelgen.structure.templatesystem.DefinedStructureProcessorPredicates;
import net.minecraft.world.level.levelgen.structure.templatesystem.DefinedStructureProcessorRotation;
import net.minecraft.world.level.levelgen.structure.templatesystem.DefinedStructureProcessorRule;
import net.minecraft.world.level.levelgen.structure.templatesystem.DefinedStructureTestBlock;
import net.minecraft.world.level.levelgen.structure.templatesystem.DefinedStructureTestBlockState;
import net.minecraft.world.level.levelgen.structure.templatesystem.DefinedStructureTestRandomBlock;
import net.minecraft.world.level.levelgen.structure.templatesystem.DefinedStructureTestTag;
import net.minecraft.world.level.levelgen.structure.templatesystem.DefinedStructureTestTrue;
import net.minecraft.world.level.levelgen.structure.templatesystem.PosRuleTestAxisAlignedLinear;
import net.minecraft.world.level.levelgen.structure.templatesystem.ProcessorList;
import net.minecraft.world.level.levelgen.structure.templatesystem.ProtectedBlockProcessor;

public class ProcessorLists {

    private static final DefinedStructureProcessorPredicates ADD_GILDED_BLACKSTONE = new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.BLACKSTONE, 0.01F), DefinedStructureTestTrue.INSTANCE, Blocks.GILDED_BLACKSTONE.getBlockData());
    private static final DefinedStructureProcessorPredicates REMOVE_GILDED_BLACKSTONE = new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.GILDED_BLACKSTONE, 0.5F), DefinedStructureTestTrue.INSTANCE, Blocks.BLACKSTONE.getBlockData());
    public static final ProcessorList EMPTY = a("empty", ImmutableList.of());
    public static final ProcessorList ZOMBIE_PLAINS = a("zombie_plains", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.COBBLESTONE, 0.8F), DefinedStructureTestTrue.INSTANCE, Blocks.MOSSY_COBBLESTONE.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestTag(TagsBlock.DOORS), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.TORCH), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.WALL_TORCH), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.COBBLESTONE, 0.07F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.MOSSY_COBBLESTONE, 0.07F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHITE_TERRACOTTA, 0.07F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.OAK_LOG, 0.05F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.OAK_PLANKS, 0.1F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.OAK_STAIRS, 0.1F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.STRIPPED_OAK_LOG, 0.02F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.GLASS_PANE, 0.5F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates[]{new DefinedStructureProcessorPredicates(new DefinedStructureTestBlockState((IBlockData) ((IBlockData) Blocks.GLASS_PANE.getBlockData().set(BlockIronBars.NORTH, true)).set(BlockIronBars.SOUTH, true)), DefinedStructureTestTrue.INSTANCE, (IBlockData) ((IBlockData) Blocks.BROWN_STAINED_GLASS_PANE.getBlockData().set(BlockIronBars.NORTH, true)).set(BlockIronBars.SOUTH, true)), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlockState((IBlockData) ((IBlockData) Blocks.GLASS_PANE.getBlockData().set(BlockIronBars.EAST, true)).set(BlockIronBars.WEST, true)), DefinedStructureTestTrue.INSTANCE, (IBlockData) ((IBlockData) Blocks.BROWN_STAINED_GLASS_PANE.getBlockData().set(BlockIronBars.EAST, true)).set(BlockIronBars.WEST, true)), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.3F), DefinedStructureTestTrue.INSTANCE, Blocks.CARROTS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.2F), DefinedStructureTestTrue.INSTANCE, Blocks.POTATOES.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.1F), DefinedStructureTestTrue.INSTANCE, Blocks.BEETROOTS.getBlockData())}))));
    public static final ProcessorList ZOMBIE_SAVANNA = a("zombie_savanna", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestTag(TagsBlock.DOORS), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.TORCH), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.WALL_TORCH), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.ACACIA_PLANKS, 0.2F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.ACACIA_STAIRS, 0.2F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.ACACIA_LOG, 0.05F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.ACACIA_WOOD, 0.05F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.ORANGE_TERRACOTTA, 0.05F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.YELLOW_TERRACOTTA, 0.05F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.RED_TERRACOTTA, 0.05F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.GLASS_PANE, 0.5F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlockState((IBlockData) ((IBlockData) Blocks.GLASS_PANE.getBlockData().set(BlockIronBars.NORTH, true)).set(BlockIronBars.SOUTH, true)), DefinedStructureTestTrue.INSTANCE, (IBlockData) ((IBlockData) Blocks.BROWN_STAINED_GLASS_PANE.getBlockData().set(BlockIronBars.NORTH, true)).set(BlockIronBars.SOUTH, true)), new DefinedStructureProcessorPredicates[]{new DefinedStructureProcessorPredicates(new DefinedStructureTestBlockState((IBlockData) ((IBlockData) Blocks.GLASS_PANE.getBlockData().set(BlockIronBars.EAST, true)).set(BlockIronBars.WEST, true)), DefinedStructureTestTrue.INSTANCE, (IBlockData) ((IBlockData) Blocks.BROWN_STAINED_GLASS_PANE.getBlockData().set(BlockIronBars.EAST, true)).set(BlockIronBars.WEST, true)), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.1F), DefinedStructureTestTrue.INSTANCE, Blocks.MELON_STEM.getBlockData())}))));
    public static final ProcessorList ZOMBIE_SNOWY = a("zombie_snowy", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestTag(TagsBlock.DOORS), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.TORCH), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.WALL_TORCH), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.LANTERN), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.SPRUCE_PLANKS, 0.2F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.SPRUCE_SLAB, 0.4F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.STRIPPED_SPRUCE_LOG, 0.05F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.STRIPPED_SPRUCE_WOOD, 0.05F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.GLASS_PANE, 0.5F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlockState((IBlockData) ((IBlockData) Blocks.GLASS_PANE.getBlockData().set(BlockIronBars.NORTH, true)).set(BlockIronBars.SOUTH, true)), DefinedStructureTestTrue.INSTANCE, (IBlockData) ((IBlockData) Blocks.BROWN_STAINED_GLASS_PANE.getBlockData().set(BlockIronBars.NORTH, true)).set(BlockIronBars.SOUTH, true)), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlockState((IBlockData) ((IBlockData) Blocks.GLASS_PANE.getBlockData().set(BlockIronBars.EAST, true)).set(BlockIronBars.WEST, true)), DefinedStructureTestTrue.INSTANCE, (IBlockData) ((IBlockData) Blocks.BROWN_STAINED_GLASS_PANE.getBlockData().set(BlockIronBars.EAST, true)).set(BlockIronBars.WEST, true)), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.1F), DefinedStructureTestTrue.INSTANCE, Blocks.CARROTS.getBlockData()), new DefinedStructureProcessorPredicates[]{new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.8F), DefinedStructureTestTrue.INSTANCE, Blocks.POTATOES.getBlockData())}))));
    public static final ProcessorList ZOMBIE_TAIGA = a("zombie_taiga", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.COBBLESTONE, 0.8F), DefinedStructureTestTrue.INSTANCE, Blocks.MOSSY_COBBLESTONE.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestTag(TagsBlock.DOORS), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.TORCH), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.WALL_TORCH), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.CAMPFIRE), DefinedStructureTestTrue.INSTANCE, (IBlockData) Blocks.CAMPFIRE.getBlockData().set(BlockCampfire.LIT, false)), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.COBBLESTONE, 0.08F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.SPRUCE_LOG, 0.08F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.GLASS_PANE, 0.5F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlockState((IBlockData) ((IBlockData) Blocks.GLASS_PANE.getBlockData().set(BlockIronBars.NORTH, true)).set(BlockIronBars.SOUTH, true)), DefinedStructureTestTrue.INSTANCE, (IBlockData) ((IBlockData) Blocks.BROWN_STAINED_GLASS_PANE.getBlockData().set(BlockIronBars.NORTH, true)).set(BlockIronBars.SOUTH, true)), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlockState((IBlockData) ((IBlockData) Blocks.GLASS_PANE.getBlockData().set(BlockIronBars.EAST, true)).set(BlockIronBars.WEST, true)), DefinedStructureTestTrue.INSTANCE, (IBlockData) ((IBlockData) Blocks.BROWN_STAINED_GLASS_PANE.getBlockData().set(BlockIronBars.EAST, true)).set(BlockIronBars.WEST, true)), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.3F), DefinedStructureTestTrue.INSTANCE, Blocks.PUMPKIN_STEM.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.2F), DefinedStructureTestTrue.INSTANCE, Blocks.POTATOES.getBlockData()), new DefinedStructureProcessorPredicates[0]))));
    public static final ProcessorList ZOMBIE_DESERT = a("zombie_desert", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestTag(TagsBlock.DOORS), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.TORCH), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.WALL_TORCH), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.SMOOTH_SANDSTONE, 0.08F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.CUT_SANDSTONE, 0.1F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.TERRACOTTA, 0.08F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.SMOOTH_SANDSTONE_STAIRS, 0.08F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.SMOOTH_SANDSTONE_SLAB, 0.08F), DefinedStructureTestTrue.INSTANCE, Blocks.COBWEB.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.2F), DefinedStructureTestTrue.INSTANCE, Blocks.BEETROOTS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.1F), DefinedStructureTestTrue.INSTANCE, Blocks.MELON_STEM.getBlockData())))));
    public static final ProcessorList MOSSIFY_10_PERCENT = a("mossify_10_percent", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.COBBLESTONE, 0.1F), DefinedStructureTestTrue.INSTANCE, Blocks.MOSSY_COBBLESTONE.getBlockData())))));
    public static final ProcessorList MOSSIFY_20_PERCENT = a("mossify_20_percent", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.COBBLESTONE, 0.2F), DefinedStructureTestTrue.INSTANCE, Blocks.MOSSY_COBBLESTONE.getBlockData())))));
    public static final ProcessorList MOSSIFY_70_PERCENT = a("mossify_70_percent", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.COBBLESTONE, 0.7F), DefinedStructureTestTrue.INSTANCE, Blocks.MOSSY_COBBLESTONE.getBlockData())))));
    public static final ProcessorList STREET_PLAINS = a("street_plains", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.DIRT_PATH), new DefinedStructureTestBlock(Blocks.WATER), Blocks.OAK_PLANKS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.DIRT_PATH, 0.1F), DefinedStructureTestTrue.INSTANCE, Blocks.GRASS_BLOCK.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.GRASS_BLOCK), new DefinedStructureTestBlock(Blocks.WATER), Blocks.WATER.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.DIRT), new DefinedStructureTestBlock(Blocks.WATER), Blocks.WATER.getBlockData())))));
    public static final ProcessorList STREET_SAVANNA = a("street_savanna", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.DIRT_PATH), new DefinedStructureTestBlock(Blocks.WATER), Blocks.ACACIA_PLANKS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.DIRT_PATH, 0.2F), DefinedStructureTestTrue.INSTANCE, Blocks.GRASS_BLOCK.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.GRASS_BLOCK), new DefinedStructureTestBlock(Blocks.WATER), Blocks.WATER.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.DIRT), new DefinedStructureTestBlock(Blocks.WATER), Blocks.WATER.getBlockData())))));
    public static final ProcessorList STREET_SNOWY_OR_TAIGA = a("street_snowy_or_taiga", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.DIRT_PATH), new DefinedStructureTestBlock(Blocks.WATER), Blocks.SPRUCE_PLANKS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.DIRT_PATH, 0.2F), DefinedStructureTestTrue.INSTANCE, Blocks.GRASS_BLOCK.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.GRASS_BLOCK), new DefinedStructureTestBlock(Blocks.WATER), Blocks.WATER.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.DIRT), new DefinedStructureTestBlock(Blocks.WATER), Blocks.WATER.getBlockData())))));
    public static final ProcessorList FARM_PLAINS = a("farm_plains", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.3F), DefinedStructureTestTrue.INSTANCE, Blocks.CARROTS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.2F), DefinedStructureTestTrue.INSTANCE, Blocks.POTATOES.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.1F), DefinedStructureTestTrue.INSTANCE, Blocks.BEETROOTS.getBlockData())))));
    public static final ProcessorList FARM_SAVANNA = a("farm_savanna", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.1F), DefinedStructureTestTrue.INSTANCE, Blocks.MELON_STEM.getBlockData())))));
    public static final ProcessorList FARM_SNOWY = a("farm_snowy", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.1F), DefinedStructureTestTrue.INSTANCE, Blocks.CARROTS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.8F), DefinedStructureTestTrue.INSTANCE, Blocks.POTATOES.getBlockData())))));
    public static final ProcessorList FARM_TAIGA = a("farm_taiga", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.3F), DefinedStructureTestTrue.INSTANCE, Blocks.PUMPKIN_STEM.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.2F), DefinedStructureTestTrue.INSTANCE, Blocks.POTATOES.getBlockData())))));
    public static final ProcessorList FARM_DESERT = a("farm_desert", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.2F), DefinedStructureTestTrue.INSTANCE, Blocks.BEETROOTS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.WHEAT, 0.1F), DefinedStructureTestTrue.INSTANCE, Blocks.MELON_STEM.getBlockData())))));
    public static final ProcessorList OUTPOST_ROT = a("outpost_rot", ImmutableList.of(new DefinedStructureProcessorRotation(0.05F)));
    public static final ProcessorList BOTTOM_RAMPART = a("bottom_rampart", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.MAGMA_BLOCK, 0.75F), DefinedStructureTestTrue.INSTANCE, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS, 0.15F), DefinedStructureTestTrue.INSTANCE, Blocks.POLISHED_BLACKSTONE_BRICKS.getBlockData()), ProcessorLists.REMOVE_GILDED_BLACKSTONE, ProcessorLists.ADD_GILDED_BLACKSTONE))));
    public static final ProcessorList TREASURE_ROOMS = a("treasure_rooms", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.POLISHED_BLACKSTONE_BRICKS, 0.35F), DefinedStructureTestTrue.INSTANCE, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.CHISELED_POLISHED_BLACKSTONE, 0.1F), DefinedStructureTestTrue.INSTANCE, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS.getBlockData()), ProcessorLists.REMOVE_GILDED_BLACKSTONE, ProcessorLists.ADD_GILDED_BLACKSTONE))));
    public static final ProcessorList HOUSING = a("housing", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.POLISHED_BLACKSTONE_BRICKS, 0.3F), DefinedStructureTestTrue.INSTANCE, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.BLACKSTONE, 1.0E-4F), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), ProcessorLists.REMOVE_GILDED_BLACKSTONE, ProcessorLists.ADD_GILDED_BLACKSTONE))));
    public static final ProcessorList SIDE_WALL_DEGRADATION = a("side_wall_degradation", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.CHISELED_POLISHED_BLACKSTONE, 0.5F), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.GOLD_BLOCK, 0.1F), DefinedStructureTestTrue.INSTANCE, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS.getBlockData()), ProcessorLists.REMOVE_GILDED_BLACKSTONE, ProcessorLists.ADD_GILDED_BLACKSTONE))));
    public static final ProcessorList STABLE_DEGRADATION = a("stable_degradation", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.POLISHED_BLACKSTONE_BRICKS, 0.1F), DefinedStructureTestTrue.INSTANCE, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.BLACKSTONE, 1.0E-4F), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), ProcessorLists.REMOVE_GILDED_BLACKSTONE, ProcessorLists.ADD_GILDED_BLACKSTONE))));
    public static final ProcessorList BASTION_GENERIC_DEGRADATION = a("bastion_generic_degradation", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.POLISHED_BLACKSTONE_BRICKS, 0.3F), DefinedStructureTestTrue.INSTANCE, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.BLACKSTONE, 1.0E-4F), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.GOLD_BLOCK, 0.3F), DefinedStructureTestTrue.INSTANCE, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS.getBlockData()), ProcessorLists.REMOVE_GILDED_BLACKSTONE, ProcessorLists.ADD_GILDED_BLACKSTONE))));
    public static final ProcessorList RAMPART_DEGRADATION = a("rampart_degradation", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.POLISHED_BLACKSTONE_BRICKS, 0.4F), DefinedStructureTestTrue.INSTANCE, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.BLACKSTONE, 0.01F), DefinedStructureTestTrue.INSTANCE, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.POLISHED_BLACKSTONE_BRICKS, 1.0E-4F), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.BLACKSTONE, 1.0E-4F), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.GOLD_BLOCK, 0.3F), DefinedStructureTestTrue.INSTANCE, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS.getBlockData()), ProcessorLists.REMOVE_GILDED_BLACKSTONE, ProcessorLists.ADD_GILDED_BLACKSTONE))));
    public static final ProcessorList ENTRANCE_REPLACEMENT = a("entrance_replacement", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.CHISELED_POLISHED_BLACKSTONE, 0.5F), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.GOLD_BLOCK, 0.6F), DefinedStructureTestTrue.INSTANCE, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS.getBlockData()), ProcessorLists.REMOVE_GILDED_BLACKSTONE, ProcessorLists.ADD_GILDED_BLACKSTONE))));
    public static final ProcessorList BRIDGE = a("bridge", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.POLISHED_BLACKSTONE_BRICKS, 0.3F), DefinedStructureTestTrue.INSTANCE, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.BLACKSTONE, 1.0E-4F), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData())))));
    public static final ProcessorList ROOF = a("roof", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.POLISHED_BLACKSTONE_BRICKS, 0.3F), DefinedStructureTestTrue.INSTANCE, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.POLISHED_BLACKSTONE_BRICKS, 0.15F), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.POLISHED_BLACKSTONE_BRICKS, 0.3F), DefinedStructureTestTrue.INSTANCE, Blocks.BLACKSTONE.getBlockData())))));
    public static final ProcessorList HIGH_WALL = a("high_wall", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.POLISHED_BLACKSTONE_BRICKS, 0.01F), DefinedStructureTestTrue.INSTANCE, Blocks.AIR.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.POLISHED_BLACKSTONE_BRICKS, 0.5F), DefinedStructureTestTrue.INSTANCE, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS.getBlockData()), new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.POLISHED_BLACKSTONE_BRICKS, 0.3F), DefinedStructureTestTrue.INSTANCE, Blocks.BLACKSTONE.getBlockData()), ProcessorLists.REMOVE_GILDED_BLACKSTONE))));
    public static final ProcessorList HIGH_RAMPART = a("high_rampart", ImmutableList.of(new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestRandomBlock(Blocks.GOLD_BLOCK, 0.3F), DefinedStructureTestTrue.INSTANCE, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS.getBlockData()), new DefinedStructureProcessorPredicates(DefinedStructureTestTrue.INSTANCE, DefinedStructureTestTrue.INSTANCE, new PosRuleTestAxisAlignedLinear(0.0F, 0.05F, 0, 100, EnumDirection.EnumAxis.Y), Blocks.AIR.getBlockData()), ProcessorLists.REMOVE_GILDED_BLACKSTONE))));
    public static final ProcessorList FOSSIL_ROT = a("fossil_rot", ImmutableList.of(new DefinedStructureProcessorRotation(0.9F), new ProtectedBlockProcessor(TagsBlock.FEATURES_CANNOT_REPLACE.a())));
    public static final ProcessorList FOSSIL_COAL = a("fossil_coal", ImmutableList.of(new DefinedStructureProcessorRotation(0.1F), new ProtectedBlockProcessor(TagsBlock.FEATURES_CANNOT_REPLACE.a())));
    public static final ProcessorList FOSSIL_DIAMONDS = a("fossil_diamonds", ImmutableList.of(new DefinedStructureProcessorRotation(0.1F), new DefinedStructureProcessorRule(ImmutableList.of(new DefinedStructureProcessorPredicates(new DefinedStructureTestBlock(Blocks.COAL_ORE), DefinedStructureTestTrue.INSTANCE, Blocks.DEEPSLATE_DIAMOND_ORE.getBlockData()))), new ProtectedBlockProcessor(TagsBlock.FEATURES_CANNOT_REPLACE.a())));

    public ProcessorLists() {}

    private static ProcessorList a(String s, ImmutableList<DefinedStructureProcessor> immutablelist) {
        MinecraftKey minecraftkey = new MinecraftKey(s);
        ProcessorList processorlist = new ProcessorList(immutablelist);

        return (ProcessorList) RegistryGeneration.a(RegistryGeneration.PROCESSOR_LIST, minecraftkey, (Object) processorlist);
    }
}
