import itertools
from minecraft_pb2 import *

def concat_setlike(lists): 
    return list(set(itertools.chain.from_iterable(lists)))

def concat_listlike(lists): 
    return list(itertools.chain.from_iterable(lists))

def print_enum_names(nested_list):
    return [[name for name, value in globals().items() if value == enum_list][0].replace('_',' ') for enum_list in nested_list]

def are_not_in(list_in, list_to_compare):
    return list(set(list_to_compare).difference(set(list_in)))

CARDINAL_DIRECTIONS = [
	NORTH,
	EAST,
	SOUTH,
	WEST,
	UP,
	DOWN,
]

#--------------------------------------------------
#region FULL BLOCKS
#region WOOD
PLANKS = [
	ACACIA_PLANKS,
	BAMBOO_PLANKS,
    BAMBOO_MOSAIC,
	BIRCH_PLANKS,
	CHERRY_PLANKS,
	CRIMSON_PLANKS,
	DARK_OAK_PLANKS,
	JUNGLE_PLANKS,
	MANGROVE_PLANKS,
	OAK_PLANKS,
	SPRUCE_PLANKS,
	WARPED_PLANKS,
]
WOODS = [
	ACACIA_WOOD,
	BIRCH_WOOD,
	CHERRY_WOOD,
	CRIMSON_HYPHAE,
	CRIMSON_STEM,
	DARK_OAK_WOOD,
	JUNGLE_WOOD,
	MANGROVE_WOOD,
	OAK_WOOD,
	SPRUCE_WOOD,
	WARPED_HYPHAE,
]
STRIPPED_WOODS = [
	STRIPPED_ACACIA_WOOD,
	STRIPPED_BIRCH_WOOD,
	STRIPPED_CHERRY_WOOD,
	STRIPPED_CRIMSON_HYPHAE,
	STRIPPED_CRIMSON_STEM,
	STRIPPED_DARK_OAK_WOOD,
	STRIPPED_JUNGLE_WOOD,
	STRIPPED_MANGROVE_WOOD,
	STRIPPED_OAK_WOOD,
	STRIPPED_SPRUCE_WOOD,
	STRIPPED_WARPED_HYPHAE,
]
LOGS = [
	ACACIA_LOG,
    BAMBOO_BLOCK,
	BIRCH_LOG,
	CHERRY_LOG,
	CRIMSON_HYPHAE,
	CRIMSON_STEM,
	DARK_OAK_LOG,
	JUNGLE_LOG,
	MANGROVE_LOG,
	OAK_LOG,
	SPRUCE_LOG,
	WARPED_STEM,
]
STRIPPED_LOGS = [
	STRIPPED_ACACIA_LOG,
    STRIPPED_BAMBOO_BLOCK,
	STRIPPED_BIRCH_LOG,
	STRIPPED_CHERRY_LOG,
	STRIPPED_CRIMSON_HYPHAE,
	STRIPPED_CRIMSON_STEM,
	STRIPPED_DARK_OAK_LOG,
	STRIPPED_JUNGLE_LOG,
	STRIPPED_MANGROVE_LOG,
	STRIPPED_OAK_LOG,
	STRIPPED_SPRUCE_LOG,
	STRIPPED_WARPED_STEM,
 ]

ALL_STRIPPED_LOGS = concat_setlike([STRIPPED_WOODS, STRIPPED_LOGS])
ALL_LOGS = concat_setlike([WOODS, LOGS])
ALL_LOGS_BLOCKS = concat_setlike([ALL_LOGS, ALL_STRIPPED_LOGS])

WOOD_LIST = [
    PLANKS,
    WOODS,
    LOGS,
    STRIPPED_WOODS,
    STRIPPED_LOGS,
    # ALL_STRIPPED_LOGS,
    # ALL_LOGS,
    # ALL_LOGS_BLOCKS,
]
ALL_WOODS = concat_setlike(WOOD_LIST)
#region WOOD BY TYPE
CHERRY_LOGS = [
	CHERRY_LOG,
	CHERRY_WOOD,
	STRIPPED_CHERRY_LOG,
	STRIPPED_CHERRY_WOOD,
	CHERRY_PLANKS,
]
CRIMSON_STEMS = [
	CRIMSON_HYPHAE,
	CRIMSON_STEM,
	STRIPPED_CRIMSON_HYPHAE,
	STRIPPED_CRIMSON_STEM,
	CRIMSON_PLANKS,
]
WARPED_STEMS = [
	STRIPPED_WARPED_HYPHAE,
	STRIPPED_WARPED_STEM,
	WARPED_HYPHAE,
	WARPED_STEM,
	WARPED_PLANKS,
]
BAMBOO_BLOCKS = [
	BAMBOO_BLOCK,
	STRIPPED_BAMBOO_BLOCK,
	BAMBOO_PLANKS,
    BAMBOO_MOSAIC,
]
SPRUCE_LOGS = [
	SPRUCE_LOG,
	SPRUCE_WOOD,
	STRIPPED_SPRUCE_LOG,
	STRIPPED_SPRUCE_WOOD,
	SPRUCE_PLANKS,
]
JUNGLE_LOGS = [
	JUNGLE_LOG,
	JUNGLE_WOOD,
	STRIPPED_JUNGLE_LOG,
	STRIPPED_JUNGLE_WOOD,
	JUNGLE_PLANKS,
]
ACACIA_LOGS = [
	ACACIA_LOG,
	ACACIA_WOOD,
	STRIPPED_ACACIA_LOG,
	STRIPPED_ACACIA_WOOD,
	ACACIA_PLANKS,
]
OAK_LOGS = [
	OAK_LOG,
	OAK_WOOD,
	STRIPPED_OAK_LOG,
	STRIPPED_OAK_WOOD,
	OAK_PLANKS,
]
DARK_OAK_LOGS = [
	DARK_OAK_LOG,
	DARK_OAK_WOOD,
	STRIPPED_DARK_OAK_LOG,
	STRIPPED_DARK_OAK_WOOD,
	DARK_OAK_PLANKS,
]
MANGROVE_LOGS = [
	MANGROVE_LOG,
	MANGROVE_WOOD,
	STRIPPED_MANGROVE_LOG,
	STRIPPED_MANGROVE_WOOD,
	MANGROVE_PLANKS,
]
BIRCH_LOGS = [
	BIRCH_LOG,
	BIRCH_WOOD,
	STRIPPED_BIRCH_LOG,
	STRIPPED_BIRCH_WOOD,
	BIRCH_PLANKS,
]

LOG_LIST = [
    CHERRY_LOGS,
    CRIMSON_STEMS,
    WARPED_STEMS,
    BAMBOO_BLOCKS,
    SPRUCE_LOGS,
    JUNGLE_LOGS,
    ACACIA_LOGS,
    OAK_LOGS,
    DARK_OAK_LOGS,
    MANGROVE_LOGS,
    BIRCH_LOGS,
]
#endregion
#endregion
#region ORES
COAL_ORES = [
	COAL_ORE,
	DEEPSLATE_COAL_ORE,
]
COPPER_ORES = [
	COPPER_ORE,
	DEEPSLATE_COPPER_ORE,
]
REDSTONE_ORES = [
	DEEPSLATE_REDSTONE_ORE,
	REDSTONE_ORE,
]
DIAMOND_ORES = [
	DEEPSLATE_DIAMOND_ORE,
	DIAMOND_ORE,
]
IRON_ORES = [
	DEEPSLATE_IRON_ORE,
	IRON_ORE,
]
LAPIS_ORES = [
	DEEPSLATE_LAPIS_ORE,
	LAPIS_ORE,
]
GOLD_ORES = [
	DEEPSLATE_GOLD_ORE,
	GOLD_ORE,
	NETHER_GOLD_ORE,
]
EMERALD_ORES = [
	DEEPSLATE_EMERALD_ORE,
	EMERALD_ORE,
]
AMETHYSTS_ORES = [
	AMETHYST_BLOCK,
    BUDDING_AMETHYST,
]
OTHER_ORES = [
    NETHER_QUARTZ_ORE,
    ANCIENT_DEBRIS,   
]

ORES_LIST = [
    COAL_ORES,
    COPPER_ORES,
    REDSTONE_ORES,
    DIAMOND_ORES,
    IRON_ORES,
    LAPIS_ORES,
    GOLD_ORES,
    EMERALD_ORES,
    AMETHYSTS_ORES,
    OTHER_ORES,
]
ALL_ORES = concat_setlike(ORES_LIST)

#region ORES BY TYPE
DEEPSLATE_ORES = [
	DEEPSLATE_COAL_ORE,
	DEEPSLATE_COPPER_ORE,
	DEEPSLATE_REDSTONE_ORE,
	DEEPSLATE_DIAMOND_ORE,
	DEEPSLATE_IRON_ORE,
	DEEPSLATE_LAPIS_ORE,
	DEEPSLATE_GOLD_ORE,
	DEEPSLATE_EMERALD_ORE,
]
STONE_ORES = [
	COAL_ORE,
	COPPER_ORE,
	REDSTONE_ORE,
	DIAMOND_ORE,
	IRON_ORE,
	LAPIS_ORE,
	GOLD_ORE,
	EMERALD_ORE,
]

ORES_TYPE_LIST = [
	DEEPSLATE_ORES,
	STONE_ORES,
]
#endregion
#endregion
#region STONES
CHISELED_BLOCKS = [
    CHISELED_DEEPSLATE,
    CHISELED_NETHER_BRICKS,
    CHISELED_POLISHED_BLACKSTONE,
    CHISELED_QUARTZ_BLOCK,
    CHISELED_RED_SANDSTONE,
    CHISELED_SANDSTONE,
    CHISELED_STONE_BRICKS,
    LODESTONE,
]
CRACKED_BRICKS_BLOCKS =[
    CRACKED_DEEPSLATE_BRICKS,
    CRACKED_DEEPSLATE_TILES,
    CRACKED_NETHER_BRICKS,
    CRACKED_POLISHED_BLACKSTONE_BRICKS,
    CRACKED_STONE_BRICKS,
]
BRICKS_BLOCKS = [
    BRICKS,
	DEEPSLATE_TILES,
	DEEPSLATE_BRICKS,
	END_STONE_BRICKS,
	MOSSY_STONE_BRICKS,
	MUD_BRICKS,
	NETHER_BRICKS,
	POLISHED_BLACKSTONE_BRICKS,
	PURPUR_BLOCK,
	PRISMARINE_BRICKS,
    QUARTZ_BRICKS,
	RED_NETHER_BRICKS,
	STONE_BRICKS,
]
POLISHED_BLOCKS=[
	POLISHED_ANDESITE,
	POLISHED_BLACKSTONE,
	POLISHED_DEEPSLATE,
	POLISHED_DIORITE,
	POLISHED_GRANITE,
	SMOOTH_STONE,
]
STONE_BLOCKS = [
	ANDESITE,
	BLACKSTONE,
    CALCITE,
	COBBLED_DEEPSLATE,
	COBBLESTONE,
    DEEPSLATE,
	DIORITE,
    DRIPSTONE_BLOCK,
    END_STONE,
    GILDED_BLACKSTONE,
	GRANITE,
	MOSSY_COBBLESTONE,
	STONE,
    TUFF,
]
SAND_STONES =[
	CUT_RED_SANDSTONE,
	CUT_SANDSTONE,
	RED_SANDSTONE,
	SANDSTONE,
	SMOOTH_RED_SANDSTONE,
	SMOOTH_SANDSTONE,
]
QUARTZ_BLOCKS = [
	QUARTZ_BLOCK,
    QUARTZ_PILLAR,
	SMOOTH_QUARTZ,
    CHISELED_QUARTZ_BLOCK,
]
OCEAN_BLOCKS = [
	DARK_PRISMARINE,
	PRISMARINE,
    PRISMARINE_BRICKS,
]
PILLAR_BLOCKS = [
    REINFORCED_DEEPSLATE,
    PURPUR_PILLAR,
    QUARTZ_PILLAR,
]
NETHER_BLOCKS = [
    BASALT,
    CRIMSON_NYLIUM,
    NETHERRACK,
    WARPED_NYLIUM,
    MAGMA_BLOCK,
    POLISHED_BASALT,
    SMOOTH_BASALT,
]

STONES_LIST = [
    CHISELED_BLOCKS,
    CRACKED_BRICKS_BLOCKS,
    BRICKS_BLOCKS,
    POLISHED_BLOCKS,
    STONE_BLOCKS,
    SAND_STONES,
    QUARTZ_BLOCKS,
    OCEAN_BLOCKS,
    PILLAR_BLOCKS,
    NETHER_BLOCKS,
]
ALL_STONES = concat_setlike(STONES_LIST)
#region STONES BY TYPE
#endregion
#endregion
#region DIRTS
DIRTS = [
	COARSE_DIRT,
	DIRT,
    DIRT_PATH,
    FARMLAND,
	GRASS_BLOCK,
	MOSS_BLOCK,
	MUD,
	MUDDY_MANGROVE_ROOTS,
	MYCELIUM,
	PODZOL,
    PACKED_MUD,
	ROOTED_DIRT,
]
SOUL_BLOCKS = [
	SOUL_SAND,
	SOUL_SOIL,
]
SANDS = [
	RED_SAND,
	SAND,
] 
GRAVELS = [
    CLAY,
    GRAVEL,
]

DIRTS_LIST = [
    DIRTS,
    SOUL_BLOCKS,
    SANDS,
    GRAVELS,
]
ALL_DIRTS = concat_setlike(DIRTS_LIST)
#endregion
#region COLORED 
WOOLS = [
	BLACK_WOOL,
	BLUE_WOOL,
	BROWN_WOOL,
	CYAN_WOOL,
	GRAY_WOOL,
	GREEN_WOOL,
	LIGHT_BLUE_WOOL,
	LIGHT_GRAY_WOOL,
	LIME_WOOL,
	MAGENTA_WOOL,
	ORANGE_WOOL,
	PINK_WOOL,
	PURPLE_WOOL,
	RED_WOOL,
	WHITE_WOOL,
	YELLOW_WOOL,
]
TERRACOTTAS = [
	BLACK_TERRACOTTA,
	BLUE_TERRACOTTA,
	BROWN_TERRACOTTA,
	CYAN_TERRACOTTA,
	GRAY_TERRACOTTA,
	GREEN_TERRACOTTA,
	LIGHT_BLUE_TERRACOTTA,
	LIGHT_GRAY_TERRACOTTA,
	LIME_TERRACOTTA,
	MAGENTA_TERRACOTTA,
	ORANGE_TERRACOTTA,
	PINK_TERRACOTTA,
	PURPLE_TERRACOTTA,
	RED_TERRACOTTA,
	TERRACOTTA,
	WHITE_TERRACOTTA,
	YELLOW_TERRACOTTA,
]
GLAZED_TERRACOTTAS = [
	BLACK_GLAZED_TERRACOTTA,
	BLUE_GLAZED_TERRACOTTA,
	BROWN_GLAZED_TERRACOTTA,
	CYAN_GLAZED_TERRACOTTA,
	GRAY_GLAZED_TERRACOTTA,
	GREEN_GLAZED_TERRACOTTA,
	LIGHT_BLUE_GLAZED_TERRACOTTA,
	LIGHT_GRAY_GLAZED_TERRACOTTA,
	LIME_GLAZED_TERRACOTTA,
	MAGENTA_GLAZED_TERRACOTTA,
	ORANGE_GLAZED_TERRACOTTA,
	PINK_GLAZED_TERRACOTTA,
	PURPLE_GLAZED_TERRACOTTA,
	RED_GLAZED_TERRACOTTA,
	WHITE_GLAZED_TERRACOTTA,
	YELLOW_GLAZED_TERRACOTTA,
]
CONCRETE_POWDERS = [
	BLACK_CONCRETE_POWDER,
	BLUE_CONCRETE_POWDER,
	BROWN_CONCRETE_POWDER,
	CYAN_CONCRETE_POWDER,
	GRAY_CONCRETE_POWDER,
	GREEN_CONCRETE_POWDER,
	LIGHT_BLUE_CONCRETE_POWDER,
	LIGHT_GRAY_CONCRETE_POWDER,
	LIME_CONCRETE_POWDER,
	MAGENTA_CONCRETE_POWDER,
	ORANGE_CONCRETE_POWDER,
	PINK_CONCRETE_POWDER,
	PURPLE_CONCRETE_POWDER,
	RED_CONCRETE_POWDER,
	WHITE_CONCRETE_POWDER,
	YELLOW_CONCRETE_POWDER,
]
CONCRETES = [
	BLACK_CONCRETE,
	BLUE_CONCRETE,
	BROWN_CONCRETE,
	CYAN_CONCRETE,
	GRAY_CONCRETE,
	GREEN_CONCRETE,
	LIGHT_BLUE_CONCRETE,
	LIGHT_GRAY_CONCRETE,
	LIME_CONCRETE,
	MAGENTA_CONCRETE,
	ORANGE_CONCRETE,
	PINK_CONCRETE,
	PURPLE_CONCRETE,
	RED_CONCRETE,
	WHITE_CONCRETE,
	YELLOW_CONCRETE,
]
GLASSES = [
	BLACK_STAINED_GLASS,
	BLUE_STAINED_GLASS,
	BROWN_STAINED_GLASS,
	CYAN_STAINED_GLASS,
	GLASS,
	GRAY_STAINED_GLASS,
	GREEN_STAINED_GLASS,
	LIGHT_BLUE_STAINED_GLASS,
	LIGHT_GRAY_STAINED_GLASS,
	LIME_STAINED_GLASS,
	MAGENTA_STAINED_GLASS,
	ORANGE_STAINED_GLASS,
	PINK_STAINED_GLASS,
	PURPLE_STAINED_GLASS,
	RED_STAINED_GLASS,
	TINTED_GLASS,
	WHITE_STAINED_GLASS,
	YELLOW_STAINED_GLASS,
]

COLORED_LIST = [
    WOOLS,
    TERRACOTTAS,
    GLAZED_TERRACOTTAS,
    CONCRETE_POWDERS,
    CONCRETES,
    GLASSES,
]
ALL_COLORED = concat_setlike(COLORED_LIST)
#endregion
#region PLANTS
LEAVES = [
	ACACIA_LEAVES,
	AZALEA_LEAVES,
	BIRCH_LEAVES,
	CHERRY_LEAVES,
	DARK_OAK_LEAVES,
	FLOWERING_AZALEA_LEAVES,
	JUNGLE_LEAVES,
	MANGROVE_LEAVES,
    MANGROVE_ROOTS,
	OAK_LEAVES,
	SPRUCE_LEAVES,
]
WARTS = [
	NETHER_WART_BLOCK,
	WARPED_WART_BLOCK,
]
CORAL_BLOCKS = [
	BRAIN_CORAL_BLOCK,
	BUBBLE_CORAL_BLOCK,
	FIRE_CORAL_BLOCK,
	HORN_CORAL_BLOCK,
	TUBE_CORAL_BLOCK,
]
MUSHROOM_BLOCKS =[
    RED_MUSHROOM_BLOCK,
    BROWN_MUSHROOM_BLOCK,
    MUSHROOM_STEM,
]
PLANT_BLOCKS = [
    DRIED_KELP_BLOCK,
    HAY_BLOCK,
    HONEYCOMB_BLOCK,
    JACK_O_LANTERN,
    CARVED_PUMPKIN,
    PUMPKIN,
    MELON,
]
SCULKS = [
    SCULK,
    SCULK_CATALYST,
]

PLANTS_LIST = [
    LEAVES,
    WARTS,
    CORAL_BLOCKS,
    MUSHROOM_BLOCKS,
    PLANT_BLOCKS,
    SCULKS,
]
ALL_LEAVES = concat_setlike([LEAVES,WARTS])
ALL_PLANTS = concat_setlike(PLANTS_LIST)
#endregion
#region CONTAINERS
SHULKER_BOXES = [
	BLACK_SHULKER_BOX,
	BLUE_SHULKER_BOX,
	BROWN_SHULKER_BOX,
	CYAN_SHULKER_BOX,
	GRAY_SHULKER_BOX,
	GREEN_SHULKER_BOX,
	LIGHT_BLUE_SHULKER_BOX,
	LIGHT_GRAY_SHULKER_BOX,
	LIME_SHULKER_BOX,
	MAGENTA_SHULKER_BOX,
	ORANGE_SHULKER_BOX,
	PINK_SHULKER_BOX,
	PURPLE_SHULKER_BOX,
	RED_SHULKER_BOX,
	SHULKER_BOX,
	WHITE_SHULKER_BOX,
	YELLOW_SHULKER_BOX,
]
STORAGES =[
    BARREL,
    CHEST,
    ENDER_CHEST,
]    
TOOL_BLOCKS = [
    BLAST_FURNACE,
    FURNACE,
    CARTOGRAPHY_TABLE,
    CRAFTING_TABLE,
    FLETCHING_TABLE,
    LOOM,
    NOTE_BLOCK,
    RESPAWN_ANCHOR,
    SMITHING_TABLE,
    SMOKER,
]
FURNITURES = [
    BEACON,
    BEE_NEST,
    BEEHIVE,
    BOOKSHELF,
    CHISELED_BOOKSHELF,
    SPAWNER,
    SPONGE,
]

CONTAINERS_LIST = [
    SHULKER_BOXES,
    STORAGES,
    TOOL_BLOCKS,
    FURNITURES,
]
ALL_CONTAINERS = concat_setlike(CONTAINERS_LIST)
#endregion
#region RESOURCES
MINERAL_BLOCKS =[
    COAL_BLOCK,
    IRON_BLOCK,
    GOLD_BLOCK,
    DIAMOND_BLOCK,
    EMERALD_BLOCK,
    LAPIS_BLOCK,
    NETHERITE_BLOCK,
    REDSTONE_BLOCK,
    RAW_COPPER_BLOCK,
    RAW_GOLD_BLOCK,
    RAW_IRON_BLOCK,
]
WAXED_COPPER_BLOCKS = [
    WAXED_COPPER_BLOCK,
    WAXED_EXPOSED_COPPER,
    WAXED_WEATHERED_COPPER,
    WAXED_OXIDIZED_COPPER,
    WAXED_CUT_COPPER,
    WAXED_EXPOSED_CUT_COPPER,
    WAXED_WEATHERED_CUT_COPPER,
    WAXED_OXIDIZED_CUT_COPPER,
]
RESOURCE_BLOCKS = [
    BONE_BLOCK,
    SNOW_BLOCK,
]

RESOURCE_LIST = [
    MINERAL_BLOCKS,
    WAXED_COPPER_BLOCKS,
    RESOURCE_BLOCKS,
]
ALL_RESOURCES = concat_setlike(RESOURCE_LIST)
#endregion
#region OTHER_BLOCKS
LIGHT_BLOCKS = [
    GLOWSTONE,
    OCHRE_FROGLIGHT,
    PEARLESCENT_FROGLIGHT,
    VERDANT_FROGLIGHT,
    SHROOMLIGHT,
    SEA_LANTERN,
]
BLAST_BLOCKS = [
    BEDROCK,
    CRYING_OBSIDIAN,
    OBSIDIAN,
]

OTHER_BLOCKS_LIST = [
    LIGHT_BLOCKS,
    BLAST_BLOCKS,
]
ALL_OTHER_BLOCKS = concat_setlike(OTHER_BLOCKS_LIST)
#endregion
FULL_BLOCKS_LIST = [
    ALL_WOODS,
    ALL_ORES,
    ALL_STONES,
    ALL_DIRTS,
    ALL_COLORED,
    ALL_PLANTS,
    ALL_CONTAINERS,
    ALL_RESOURCES,
    ALL_OTHER_BLOCKS,
]
ALL_FULL_BLOCKS = concat_setlike(FULL_BLOCKS_LIST)

ALL_FULL_BLOCKS_LIST = [
	ALL_STRIPPED_LOGS,
 	ALL_LOGS,
	ALL_LOGS_BLOCKS,
]
FULL_BLOCK_LISTS = concat_listlike([
    WOOD_LIST,
    LOG_LIST,
    ORES_LIST,
    ORES_TYPE_LIST,
    STONES_LIST,
    DIRTS_LIST,
    COLORED_LIST,
    PLANTS_LIST,
    CONTAINERS_LIST,
    RESOURCE_LIST,
    OTHER_BLOCKS_LIST,
    FULL_BLOCKS_LIST,
    ALL_FULL_BLOCKS_LIST,
])
#endregion
#--------------------------------------------------
#region SEMI BLOCKS
#region SLABS
WOODEN_SLABS = [
	ACACIA_SLAB,
    BAMBOO_MOSAIC_SLAB,
	BAMBOO_SLAB,
	BIRCH_SLAB,
	CHERRY_SLAB,
	CRIMSON_SLAB,
	DARK_OAK_SLAB,
	JUNGLE_SLAB,
	MANGROVE_SLAB,
	OAK_SLAB,
	SPRUCE_SLAB,
	WARPED_SLAB,
]
STONE_SLABS = [
	ANDESITE_SLAB,
	BLACKSTONE_SLAB,
	COBBLED_DEEPSLATE_SLAB,
	COBBLESTONE_SLAB,
	DIORITE_SLAB,
	GRANITE_SLAB,
	MOSSY_COBBLESTONE_SLAB,
	STONE_SLAB,
]
BRICK_SLABS = [
	BRICK_SLAB,
	DEEPSLATE_BRICK_SLAB,
	DEEPSLATE_TILE_SLAB,
	END_STONE_BRICK_SLAB,
	MOSSY_STONE_BRICK_SLAB,
	MUD_BRICK_SLAB,
	NETHER_BRICK_SLAB,
	PURPUR_SLAB,
	RED_NETHER_BRICK_SLAB,
	STONE_BRICK_SLAB,
]
POLISHED_SLABS =[
	POLISHED_ANDESITE_SLAB,
	POLISHED_BLACKSTONE_BRICK_SLAB,
	POLISHED_BLACKSTONE_SLAB,
	POLISHED_DEEPSLATE_SLAB,
	POLISHED_DIORITE_SLAB,
	POLISHED_GRANITE_SLAB,
	SMOOTH_STONE_SLAB,
]
SAND_SLAB =[
	CUT_RED_SANDSTONE_SLAB,
	CUT_SANDSTONE_SLAB,
	RED_SANDSTONE_SLAB,
	SANDSTONE_SLAB,
	SMOOTH_RED_SANDSTONE_SLAB,
	SMOOTH_SANDSTONE_SLAB,
]
OCEAN_SLABS = [
	DARK_PRISMARINE_SLAB,
	PRISMARINE_BRICK_SLAB,
	PRISMARINE_SLAB,
]
QUARTZ_SLABS = [
	QUARTZ_SLAB,
	SMOOTH_QUARTZ_SLAB,
]
WAXED_COPPER_SLABS = [
	WAXED_CUT_COPPER_SLAB,
	WAXED_EXPOSED_CUT_COPPER_SLAB,
	WAXED_OXIDIZED_CUT_COPPER_SLAB,
	WAXED_WEATHERED_CUT_COPPER_SLAB,
]

SLABS_LIST = [
    WOODEN_SLABS,
    STONE_SLABS,
    BRICK_SLABS,
    POLISHED_SLABS,
    SAND_SLAB,
    OCEAN_SLABS,
    QUARTZ_SLABS,
    WAXED_COPPER_SLABS,
]
ALL_SLABS = concat_setlike(SLABS_LIST)
#endregion
#region STAIRS
WOODEN_STAIRS = [
	ACACIA_STAIRS,
	BAMBOO_STAIRS,
    BAMBOO_MOSAIC_STAIRS,
	BIRCH_STAIRS,
	CHERRY_STAIRS,
	CRIMSON_STAIRS,
	DARK_OAK_STAIRS,
	JUNGLE_STAIRS,
	MANGROVE_STAIRS,
	OAK_STAIRS,
	SPRUCE_STAIRS,
	WARPED_STAIRS,
]
STONE_STAIRS = [
	ANDESITE_STAIRS,
	BLACKSTONE_STAIRS,
	COBBLED_DEEPSLATE_STAIRS,
	COBBLESTONE_STAIRS,
	DIORITE_STAIRS,
	GRANITE_STAIRS,
	STONE_STAIRS,
]
BRICK_STAIRS = [ 
	BRICK_STAIRS,
	DEEPSLATE_BRICK_STAIRS,
	DEEPSLATE_TILE_STAIRS,
	END_STONE_BRICK_STAIRS,
	MOSSY_COBBLESTONE_STAIRS,
	MOSSY_STONE_BRICK_STAIRS,
	MUD_BRICK_STAIRS,
	NETHER_BRICK_STAIRS,
	PURPUR_STAIRS,
	RED_NETHER_BRICK_STAIRS,
	STONE_BRICK_STAIRS,
]
POLISHED_STAIRS = [ 
	POLISHED_ANDESITE_STAIRS,
	POLISHED_BLACKSTONE_BRICK_STAIRS,
	POLISHED_BLACKSTONE_STAIRS,
	POLISHED_DEEPSLATE_STAIRS,
	POLISHED_DIORITE_STAIRS,
	POLISHED_GRANITE_STAIRS,
]
OCEAN_STAIRS = [ 
	DARK_PRISMARINE_STAIRS,
	PRISMARINE_BRICK_STAIRS,
	PRISMARINE_STAIRS,
]
QUARTZ_STAIRS = [ 
	QUARTZ_STAIRS,
	SMOOTH_QUARTZ_STAIRS,
]
SAND_STAIRS = [ 
	RED_SANDSTONE_STAIRS,
	SANDSTONE_STAIRS,
	SMOOTH_RED_SANDSTONE_STAIRS,
	SMOOTH_SANDSTONE_STAIRS,
]
WAXED_COPPER_STAIRS = [
	WAXED_CUT_COPPER_STAIRS,
	WAXED_EXPOSED_CUT_COPPER_STAIRS,
	WAXED_OXIDIZED_CUT_COPPER_STAIRS,
	WAXED_WEATHERED_CUT_COPPER_STAIRS,
]

STAIRS_LIST = [
    WOODEN_STAIRS,
    STONE_STAIRS,
    BRICK_STAIRS,
    POLISHED_STAIRS,
    SAND_STAIRS,
    OCEAN_STAIRS,
    QUARTZ_STAIRS,
    WAXED_COPPER_STAIRS,
]
ALL_STAIRS = concat_setlike(STAIRS_LIST)
#endregion
#region WALL BLOCKS
FENCES = [
	ACACIA_FENCE,
	BAMBOO_FENCE,
	BIRCH_FENCE,
	CHERRY_FENCE,
	CRIMSON_FENCE,
	DARK_OAK_FENCE,
	JUNGLE_FENCE,
	MANGROVE_FENCE,
	NETHER_BRICK_FENCE,
	OAK_FENCE,
	SPRUCE_FENCE,
	WARPED_FENCE,
]
FENCE_GATES = [
	ACACIA_FENCE_GATE,
	BAMBOO_FENCE_GATE,
	BIRCH_FENCE_GATE,
	CHERRY_FENCE_GATE,
	CRIMSON_FENCE_GATE,
	DARK_OAK_FENCE_GATE,
	JUNGLE_FENCE_GATE,
	MANGROVE_FENCE_GATE,
	OAK_FENCE_GATE,
	SPRUCE_FENCE_GATE,
	WARPED_FENCE_GATE,
]
WALLS = [
	ANDESITE_WALL,
	BLACKSTONE_WALL,
	BRICK_WALL,
	COBBLED_DEEPSLATE_WALL,
	COBBLESTONE_WALL,
	DEEPSLATE_BRICK_WALL,
	DEEPSLATE_TILE_WALL,
	DIORITE_WALL,
	END_STONE_BRICK_WALL,
	GRANITE_WALL,
	MOSSY_COBBLESTONE_WALL,
	MOSSY_STONE_BRICK_WALL,
	MUD_BRICK_WALL,
	NETHER_BRICK_WALL,
	POLISHED_BLACKSTONE_BRICK_WALL,
	POLISHED_BLACKSTONE_WALL,
	POLISHED_DEEPSLATE_WALL,
	PRISMARINE_WALL,
	RED_NETHER_BRICK_WALL,
	RED_SANDSTONE_WALL,
	SANDSTONE_WALL,
	STONE_BRICK_WALL,
]
IRON_WALLS =[
    IRON_BARS,
    CHAIN,
]

WALLS_LIST = [
    FENCES,
    FENCE_GATES,
    WALLS,
    IRON_WALLS,
] 
ALL_WALLS = concat_setlike(WALLS_LIST)
#endregion
#region TOOLS
DECORATIVE_SEMI_TOOLS = [
	ANVIL,
    COMPOSTER,
    DECORATED_POT,
    GRINDSTONE,
    SCAFFOLDING,
    TARGET,
]
SEMI_TOOLS = [   
    BELL,
    ENCHANTING_TABLE,
    LECTERN,
    STONECUTTER,
    BREWING_STAND,
]
CAULDRONS = [
	CAULDRON,
	LAVA_CAULDRON,
	POWDER_SNOW_CAULDRON,
	WATER_CAULDRON,
]

SEMI_TOOLS_LIST = [
    DECORATIVE_SEMI_TOOLS,
    SEMI_TOOLS,
    CAULDRONS,
]
ALL_SEMI_TOOLS = concat_setlike(SEMI_TOOLS_LIST)
#endregion
#region OTHER_SEMI_BLOCKS
GLASS_PANES = [
	BLACK_STAINED_GLASS_PANE,
	BLUE_STAINED_GLASS_PANE,
	BROWN_STAINED_GLASS_PANE,
	CYAN_STAINED_GLASS_PANE,
	GLASS_PANE,
	GRAY_STAINED_GLASS_PANE,
	GREEN_STAINED_GLASS_PANE,
	LIGHT_BLUE_STAINED_GLASS_PANE,
	LIGHT_GRAY_STAINED_GLASS_PANE,
	LIME_STAINED_GLASS_PANE,
	MAGENTA_STAINED_GLASS_PANE,
	ORANGE_STAINED_GLASS_PANE,
	PINK_STAINED_GLASS_PANE,
	PURPLE_STAINED_GLASS_PANE,
	RED_STAINED_GLASS_PANE,
	WHITE_STAINED_GLASS_PANE,
	YELLOW_STAINED_GLASS_PANE,
]
OTHERS_SEMI_BLOCKS = [
    HONEY_BLOCK,
    SLIME_BLOCK,
    POWDER_SNOW,
    END_PORTAL_FRAME,
    SCULK_SHRIEKER,
    LADDER,
]

OTHER_SEMI_BLOCKS_LIST = [
    GLASS_PANES,
    OTHERS_SEMI_BLOCKS,
]
ALL_OTHER_SEMI_BLOCKS = concat_setlike(OTHER_SEMI_BLOCKS_LIST)
#endregion
SEMI_BLOCK_LIST = [
    ALL_SLABS,
    ALL_STAIRS,
    ALL_WALLS,
    ALL_SEMI_TOOLS,
    ALL_OTHER_SEMI_BLOCKS,
]
ALL_SEMI_BLOCKS = concat_setlike(SEMI_BLOCK_LIST)
ALL_SEMI_BLOCK_LIST = SEMI_BLOCK_LIST
SEMI_BLOCK_LISTS = concat_listlike([
	SLABS_LIST,
	STAIRS_LIST,
	WALLS_LIST,
	SEMI_TOOLS_LIST,
	OTHER_SEMI_BLOCKS_LIST,
	ALL_SEMI_BLOCK_LIST,
])
#endregion
#--------------------------------------------------
#region DECORATIONS
#region COVERS
WOOL_CARPETS = [
	BLACK_CARPET,
	BLUE_CARPET,
	BROWN_CARPET,
	CYAN_CARPET,
	GRAY_CARPET,
	GREEN_CARPET,
	LIGHT_BLUE_CARPET,
	LIGHT_GRAY_CARPET,
	LIME_CARPET,
	MAGENTA_CARPET,
	ORANGE_CARPET,
	PINK_CARPET,
	PURPLE_CARPET,
	RED_CARPET,
	WHITE_CARPET,
	YELLOW_CARPET,
]
TRAPDOORS = [
	ACACIA_TRAPDOOR,
	BAMBOO_TRAPDOOR,
	BIRCH_TRAPDOOR,
	CHERRY_TRAPDOOR,
	CRIMSON_TRAPDOOR,
	DARK_OAK_TRAPDOOR,
	IRON_TRAPDOOR,
	JUNGLE_TRAPDOOR,
	MANGROVE_TRAPDOOR,
	OAK_TRAPDOOR,
	SPRUCE_TRAPDOOR,
	WARPED_TRAPDOOR,
]
CARPETS = [
    SNOW,
    MOSS_CARPET,
]

COVERS_LIST = [
    WOOL_CARPETS,
    TRAPDOORS,
    CARPETS,
]
ALL_COVERS = concat_setlike(COVERS_LIST)
#endregion
#region WALL HANGERS
#region SIGNS
HANGING_SIGNS = [
	ACACIA_HANGING_SIGN,
	ACACIA_WALL_HANGING_SIGN,
	BAMBOO_HANGING_SIGN,
	BAMBOO_WALL_HANGING_SIGN,
	BIRCH_HANGING_SIGN,
	BIRCH_WALL_HANGING_SIGN,
	CHERRY_HANGING_SIGN,
	CHERRY_WALL_HANGING_SIGN,
	CRIMSON_HANGING_SIGN,
	CRIMSON_WALL_HANGING_SIGN,
	DARK_OAK_HANGING_SIGN,
	DARK_OAK_WALL_HANGING_SIGN,
	JUNGLE_HANGING_SIGN,
	JUNGLE_WALL_HANGING_SIGN,
	MANGROVE_HANGING_SIGN,
	MANGROVE_WALL_HANGING_SIGN,
	OAK_HANGING_SIGN,
	OAK_WALL_HANGING_SIGN,
	SPRUCE_HANGING_SIGN,
	SPRUCE_WALL_HANGING_SIGN,
	WARPED_HANGING_SIGN,
	WARPED_WALL_HANGING_SIGN,
]
SIGNS = [
	ACACIA_SIGN,
	ACACIA_WALL_SIGN,
	BAMBOO_SIGN,
	BAMBOO_WALL_SIGN,
	BIRCH_SIGN,
	BIRCH_WALL_SIGN,
	CHERRY_SIGN,
	CHERRY_WALL_SIGN,
	CRIMSON_SIGN,
	CRIMSON_WALL_SIGN,
	DARK_OAK_SIGN,
	DARK_OAK_WALL_SIGN,
	JUNGLE_SIGN,
	JUNGLE_WALL_SIGN,
	MANGROVE_SIGN,
	MANGROVE_WALL_SIGN,
	OAK_SIGN,
	OAK_WALL_SIGN,
	SPRUCE_SIGN,
	SPRUCE_WALL_SIGN,
	WARPED_SIGN,
	WARPED_WALL_SIGN,
]
ALL_SIGNS = concat_setlike([SIGNS,HANGING_SIGNS])
#endregion
BANNERS = [

	BLACK_BANNER,
	BLACK_WALL_BANNER,
	BLUE_BANNER,
	BLUE_WALL_BANNER,
	BROWN_BANNER,
	BROWN_WALL_BANNER,
	CYAN_BANNER,
	CYAN_WALL_BANNER,
	GRAY_BANNER,
	GRAY_WALL_BANNER,
	GREEN_BANNER,
	GREEN_WALL_BANNER,
	LIGHT_BLUE_BANNER,
	LIGHT_BLUE_WALL_BANNER,
	LIGHT_GRAY_BANNER,
	LIGHT_GRAY_WALL_BANNER,
	LIME_BANNER,
	LIME_WALL_BANNER,
	MAGENTA_BANNER,
	MAGENTA_WALL_BANNER,
	ORANGE_BANNER,
	ORANGE_WALL_BANNER,
	PINK_BANNER,
	PINK_WALL_BANNER,
	PURPLE_BANNER,
	PURPLE_WALL_BANNER,
	RED_BANNER,
	RED_WALL_BANNER,
	WHITE_BANNER,
	WHITE_WALL_BANNER,
	YELLOW_BANNER,
	YELLOW_WALL_BANNER,
]
WALL_HANGERS_LIST = [
    HANGING_SIGNS,
    SIGNS,
    BANNERS,
]
ALL_WALL_HANGERS = concat_setlike(WALL_HANGERS_LIST)
#endregion
#region LIGHTS
BLUE_LIGHTS = [
	SOUL_CAMPFIRE,
	SOUL_LANTERN,
	SOUL_TORCH,
	SOUL_WALL_TORCH,
]
LIGHTS = [
   	CAMPFIRE,
	LANTERN,
	TORCH,
	WALL_TORCH,
]
OTHER_LIGHTS = [
    END_ROD,
    GLOW_LICHEN,
]

LIGHTS_LIST = [
    LIGHTS,
    BLUE_LIGHTS,
    LIGHT_BLOCKS,
    OTHER_LIGHTS,
]
ALL_LIGHTS = concat_setlike(LIGHTS_LIST)
#endregion
#region MULTUBLOCKS
BEDS = [
	BLACK_BED,
	BLUE_BED,
	BROWN_BED,
	CYAN_BED,
	GRAY_BED,
	GREEN_BED,
	LIGHT_BLUE_BED,
	LIGHT_GRAY_BED,
	LIME_BED,
	MAGENTA_BED,
	ORANGE_BED,
	PINK_BED,
	PURPLE_BED,
	RED_BED,
	WHITE_BED,
	YELLOW_BED,
]
DOORS = [
	ACACIA_DOOR,
	BAMBOO_DOOR,
	BIRCH_DOOR,
	CHERRY_DOOR,
	CRIMSON_DOOR,
	DARK_OAK_DOOR,
	IRON_DOOR,
	JUNGLE_DOOR,
	MANGROVE_DOOR,
	OAK_DOOR,
	SPRUCE_DOOR,
	WARPED_DOOR,
]

MULTIBLOCKS_LIST = [BEDS, DOORS]
ALL_MULTIBLOCKS = concat_setlike(MULTIBLOCKS_LIST)
#endregion
#region REDSTONE
PRESSURE_PLATES = [
	HEAVY_WEIGHTED_PRESSURE_PLATE,
	LIGHT_WEIGHTED_PRESSURE_PLATE,
	POLISHED_BLACKSTONE_PRESSURE_PLATE,
	STONE_PRESSURE_PLATE,
]
WOODEN_PRESSURE_PLATES = [
	ACACIA_PRESSURE_PLATE,
	BAMBOO_PRESSURE_PLATE,
	BIRCH_PRESSURE_PLATE,
	CHERRY_PRESSURE_PLATE,
	CRIMSON_PRESSURE_PLATE,
	DARK_OAK_PRESSURE_PLATE,
	JUNGLE_PRESSURE_PLATE,
	MANGROVE_PRESSURE_PLATE,
	OAK_PRESSURE_PLATE,
	SPRUCE_PRESSURE_PLATE,
	WARPED_PRESSURE_PLATE,
]
STONE_BUTTONS = [
	POLISHED_BLACKSTONE_BUTTON,
	STONE_BUTTON,
]
WOODEN_BUTTONS = [
	ACACIA_BUTTON,
	BAMBOO_BUTTON,
	BIRCH_BUTTON,
	CHERRY_BUTTON,
	CRIMSON_BUTTON,
	DARK_OAK_BUTTON,
	JUNGLE_BUTTON,
	MANGROVE_BUTTON,
	OAK_BUTTON,
	SPRUCE_BUTTON,
	WARPED_BUTTON,
]
BLOCK_LIKE_REDSTONES = [
    NOTE_BLOCK,
    JUKEBOX,
    DAYLIGHT_DETECTOR,
    OBSERVER,
    PISTON,
    STICKY_PISTON,
    DISPENSER,
    DROPPER,
    HOPPER,
    SCULK_SENSOR,
    CALIBRATED_SCULK_SENSOR,
    REDSTONE_LAMP,
    TRAPPED_CHEST,
    TARGET,
    TNT,
]
REDSTONE_COMPONENTS = [
    REDSTONE_WIRE,
    REDSTONE_TORCH,
    REDSTONE_WALL_TORCH,
    REPEATER,
    COMPARATOR,
    LEVER,
    TRIPWIRE,
    TRIPWIRE_HOOK,
]
RAILS = [
	ACTIVATOR_RAIL,
	DETECTOR_RAIL,
	POWERED_RAIL,
	RAIL,
]

ALL_PRESSURE_PLATES = concat_setlike([PRESSURE_PLATES, WOODEN_PRESSURE_PLATES])
ALL_BUTTONS = concat_setlike([STONE_BUTTONS, WOODEN_BUTTONS])
REDSTONE_LIST = [
    ALL_PRESSURE_PLATES,
    ALL_BUTTONS,
    BLOCK_LIKE_REDSTONES,
    REDSTONE_COMPONENTS,
    RAILS,
]
ALL_REDSTONE = concat_setlike(REDSTONE_LIST)
#endregion
#region OTHER DECORATIONS
HEADS = [
	CREEPER_HEAD,
	CREEPER_WALL_HEAD,
	DRAGON_HEAD,
	DRAGON_WALL_HEAD,
	PIGLIN_HEAD,
	PIGLIN_WALL_HEAD,
	PLAYER_HEAD,
	PLAYER_WALL_HEAD,
	SKELETON_SKULL,
	SKELETON_WALL_SKULL,
	WITHER_SKELETON_SKULL,
	WITHER_SKELETON_WALL_SKULL,
	ZOMBIE_HEAD,
	ZOMBIE_WALL_HEAD,
]
CANDLES = [
	BLACK_CANDLE,
	BLUE_CANDLE,
	BROWN_CANDLE,
	CANDLE,
	CYAN_CANDLE,
	GRAY_CANDLE,
	GREEN_CANDLE,
	LIGHT_BLUE_CANDLE,
	LIGHT_GRAY_CANDLE,
	LIME_CANDLE,
	MAGENTA_CANDLE,
	ORANGE_CANDLE,
	PINK_CANDLE,
	PURPLE_CANDLE,
	RED_CANDLE,
	WHITE_CANDLE,
	YELLOW_CANDLE,
]
CAKES = [
	BLACK_CANDLE_CAKE,
	BLUE_CANDLE_CAKE,
	BROWN_CANDLE_CAKE,
	CANDLE_CAKE,
	CYAN_CANDLE_CAKE,
	GRAY_CANDLE_CAKE,
	GREEN_CANDLE_CAKE,
	LIGHT_BLUE_CANDLE_CAKE,
	LIGHT_GRAY_CANDLE_CAKE,
	LIME_CANDLE_CAKE,
	MAGENTA_CANDLE_CAKE,
	ORANGE_CANDLE_CAKE,
	PINK_CANDLE_CAKE,
	PURPLE_CANDLE_CAKE,
	RED_CANDLE_CAKE,
	WHITE_CANDLE_CAKE,
	YELLOW_CANDLE_CAKE,
    CAKE,
]
DECORATIONS = [
    LEVER,
    END_ROD,
    LIGHTNING_ROD,
    TRIPWIRE_HOOK,
    COBWEB,
]
EGGS = [
    DRAGON_EGG,
    SNIFFER_EGG,
    TURTLE_EGG,
    FROGSPAWN,
]
POTS = [
	FLOWER_POT,
	POTTED_ACACIA_SAPLING,
	POTTED_ALLIUM,
	POTTED_AZALEA_BUSH,
	POTTED_AZURE_BLUET,
	POTTED_BAMBOO,
	POTTED_BIRCH_SAPLING,
	POTTED_BLUE_ORCHID,
	POTTED_BROWN_MUSHROOM,
	POTTED_CACTUS,
	POTTED_CHERRY_SAPLING,
	POTTED_CORNFLOWER,
	POTTED_CRIMSON_FUNGUS,
	POTTED_CRIMSON_ROOTS,
	POTTED_DANDELION,
	POTTED_DARK_OAK_SAPLING,
	POTTED_DEAD_BUSH,
	POTTED_FERN,
	POTTED_FLOWERING_AZALEA_BUSH,
	POTTED_JUNGLE_SAPLING,
	POTTED_LILY_OF_THE_VALLEY,
	POTTED_MANGROVE_PROPAGULE,
	POTTED_OAK_SAPLING,
	POTTED_ORANGE_TULIP,
	POTTED_OXEYE_DAISY,
	POTTED_PINK_TULIP,
	POTTED_POPPY,
	POTTED_RED_MUSHROOM,
	POTTED_RED_TULIP,
	POTTED_SPRUCE_SAPLING,
	POTTED_TORCHFLOWER,
	POTTED_WARPED_FUNGUS,
	POTTED_WARPED_ROOTS,
	POTTED_WHITE_TULIP,
	POTTED_WITHER_ROSE,
]

OTHER_DECORATIONS_LIST = [
    HEADS,
    CANDLES,
    CAKES,
    DECORATIONS,
    EGGS,
    POTS,
]
ALL_OTHER_DECORATIONS = concat_setlike(OTHER_DECORATIONS_LIST)
#endregion
DECORATIONS_LIST = [
    ALL_COVERS,
    ALL_WALL_HANGERS,
    ALL_LIGHTS,
    ALL_MULTIBLOCKS,
    ALL_REDSTONE,
    ALL_OTHER_DECORATIONS,
]
ALL_DECORATIONS = concat_setlike(DECORATIONS_LIST)
ALL_DECORATIONS_LIST = [
    ALL_PRESSURE_PLATES,
    ALL_BUTTONS,
    ALL_COVERS,
    ALL_WALL_HANGERS,
    ALL_LIGHTS,
    ALL_MULTIBLOCKS,
    ALL_REDSTONE,
    ALL_OTHER_DECORATIONS,
]
DECORATIONS_LISTS = concat_listlike([
    COVERS_LIST,
    WALL_HANGERS_LIST,
    LIGHTS_LIST,
    MULTIBLOCKS_LIST,
    REDSTONE_LIST,
    OTHER_DECORATIONS_LIST,
    ALL_DECORATIONS_LIST,
])
#endregion
#--------------------------------------------------
#region FLORA
#region FLOWERS
SMALL_FLOWERS = [
	ALLIUM,
	AZURE_BLUET,
	BLUE_ORCHID,
	CORNFLOWER,
	DANDELION,
	LILY_OF_THE_VALLEY,
	ORANGE_TULIP,
	OXEYE_DAISY,
	PINK_TULIP,
	POPPY,
	RED_TULIP,
	TORCHFLOWER,
	WHITE_TULIP,
	WITHER_ROSE,
]
TALL_FLOWERS = [
	LILAC,
	PEONY,
	PITCHER_PLANT,
	ROSE_BUSH,
	SUNFLOWER,
]
REST_OF_FLOWERS =[
    CHORUS_FLOWER,
    PINK_PETALS,
    SPORE_BLOSSOM,
]

FLOWERS_LIST = [
    SMALL_FLOWERS,
    TALL_FLOWERS,
    REST_OF_FLOWERS,
]
ALL_FLOWERS = concat_setlike(FLOWERS_LIST)
#endregion
#region UNDERWATER PLANTS
CORALS = [
	BRAIN_CORAL,
	BRAIN_CORAL_FAN,
	BRAIN_CORAL_WALL_FAN,
	BUBBLE_CORAL,
	BUBBLE_CORAL_FAN,
	BUBBLE_CORAL_WALL_FAN,
	FIRE_CORAL,
	FIRE_CORAL_FAN,
	FIRE_CORAL_WALL_FAN,
	HORN_CORAL,
	HORN_CORAL_FAN,
	HORN_CORAL_WALL_FAN,
	TUBE_CORAL,
	TUBE_CORAL_FAN,
	TUBE_CORAL_WALL_FAN,
]
SEA_PLANTS = [
    SEAGRASS,
    TALL_SEAGRASS,
    KELP,
    KELP_PLANT,
    SEA_PICKLE,
    LILY_PAD,
]

UNDERWATER_PLANTS_LIST = [
    CORALS,
    SEA_PLANTS,
]
ALL_UNDERWATER_PLANTS = concat_setlike(UNDERWATER_PLANTS_LIST)
#endregion
#region OTHER PLANTS
SAPLINGS = [
	ACACIA_SAPLING,
	AZALEA,
	BIRCH_SAPLING,
	CHERRY_SAPLING,
	DARK_OAK_SAPLING,
	FLOWERING_AZALEA,
	JUNGLE_SAPLING,
	MANGROVE_PROPAGULE,
	OAK_SAPLING,
	SPRUCE_SAPLING,
]
FARM_PLANTS = [
	ATTACHED_MELON_STEM,
	ATTACHED_PUMPKIN_STEM,
	BEETROOTS,
	CARROTS,
	MELON_STEM,
	PITCHER_CROP,
	POTATOES,
	PUMPKIN_STEM,
	TORCHFLOWER,
	TORCHFLOWER_CROP,
	WHEAT,
    COCOA,
]
MUSHROOMS = [
    RED_MUSHROOM,
    BROWN_MUSHROOM,
    WARPED_FUNGUS,
    CRIMSON_FUNGUS,
]
CRYSTALS = [
    SMALL_AMETHYST_BUD,
    MEDIUM_AMETHYST_BUD,
    LARGE_AMETHYST_BUD,
    AMETHYST_CLUSTER,
    POINTED_DRIPSTONE,
]
VEINS = [
	CAVE_VINES,
	CAVE_VINES_PLANT,
	TWISTING_VINES,
	TWISTING_VINES_PLANT,
	VINE,
	WEEPING_VINES,
	WEEPING_VINES_PLANT,
    SCULK_VEIN,
    GLOW_LICHEN,
]
GRASSES = [
    DEAD_BUSH,
    GRASS,
    TALL_GRASS,
    FERN,
    LARGE_FERN,
    SWEET_BERRY_BUSH,
    NETHER_WART,
    CRIMSON_ROOTS,
    WARPED_ROOTS,
    HANGING_ROOTS,
    NETHER_SPROUTS,
]
BIG_PLANTS = [
    BAMBOO,
    BAMBOO_SAPLING,
    BIG_DRIPLEAF,
    BIG_DRIPLEAF_STEM,
    SMALL_DRIPLEAF,
    CACTUS,
    CHORUS_PLANT,
    CHORUS_FLOWER,
    SUGAR_CANE,
]

OTHER_PLANTS_LIST = [
    GRASSES,
    MUSHROOMS,
    FARM_PLANTS,
    BIG_PLANTS,
    SAPLINGS,
    VEINS,
    CRYSTALS,
]
ALL_OTHER_PLANTS = concat_setlike(OTHER_PLANTS_LIST)
#endregion
FLORA_LIST = [
    ALL_FLOWERS,
    ALL_UNDERWATER_PLANTS,
    ALL_OTHER_PLANTS,
]
ALL_FLORA =concat_setlike(FLORA_LIST)
ALL_FLORA_LIST = FLORA_LIST
FLORA_LISTS = concat_listlike([
    FLOWERS_LIST,
    UNDERWATER_PLANTS_LIST,
    OTHER_PLANTS_LIST,
    ALL_FLORA_LIST,
])
#endregion
#--------------------------------------------------
#region LIQUID_LIKES
ICE = [
	BLUE_ICE,
	FROSTED_ICE,
	ICE,
	PACKED_ICE,
]
WATERS = [
    BUBBLE_COLUMN,
    WATER,
    CONDUIT,
]
BURNING = [
    LAVA,
    SOUL_FIRE,
    FIRE,
    ]
PORTALS =[
    END_GATEWAY,
    END_PORTAL,
    NETHER_PORTAL,
]

LIQUID_LIKES_LIST = [
    ICE,
    WATERS,
    BURNING,
    PORTALS,
]
ALL_LIQUID_LIKES = concat_setlike(LIQUID_LIKES_LIST)
#endregion
#--------------------------------------------------
#region UN-USEFULL BLOCKS
#region DUPLICATE
DUPLICATES = [
    PETRIFIED_OAK_SLAB, #Just Like OAK_SLAB
    TORCHFLOWER_CROP, #Ungrown TROCHFLOWER
    SUSPICIOUS_SAND, SUSPICIOUS_GRAVEL, #Non falling SANDS
    WET_SPONGE, #Other SPONGE
    POWDER_SNOW,
    CHIPPED_ANVIL, DAMAGED_ANVIL,
    PISTON_HEAD,
]
#endregion
#region DEAD CORALS
DEAD_CORAL_BLOCKS = [
	DEAD_BRAIN_CORAL_BLOCK,
	DEAD_BUBBLE_CORAL_BLOCK,
	DEAD_FIRE_CORAL_BLOCK,
	DEAD_HORN_CORAL_BLOCK,
	DEAD_TUBE_CORAL_BLOCK,
]
DEAD_CORALS = [
	DEAD_BRAIN_CORAL,
	DEAD_BRAIN_CORAL_FAN,
	DEAD_BRAIN_CORAL_WALL_FAN,
	DEAD_BUBBLE_CORAL,
	DEAD_BUBBLE_CORAL_FAN,
	DEAD_BUBBLE_CORAL_WALL_FAN,
	DEAD_FIRE_CORAL,
	DEAD_FIRE_CORAL_FAN,
	DEAD_FIRE_CORAL_WALL_FAN,
	DEAD_HORN_CORAL,
	DEAD_HORN_CORAL_FAN,
	DEAD_HORN_CORAL_WALL_FAN,
	DEAD_TUBE_CORAL,
	DEAD_TUBE_CORAL_FAN,
	DEAD_TUBE_CORAL_WALL_FAN,
]
#endregion
#region UWAXED COPPER
COPPER_BLOCKS = [
    CUT_COPPER,
    EXPOSED_CUT_COPPER,
    OXIDIZED_CUT_COPPER,
    WEATHERED_CUT_COPPER,
    COPPER_BLOCK,
    EXPOSED_COPPER,
    OXIDIZED_COPPER,
    WEATHERED_COPPER,
]
COPPER_STAIRS = [ 
	CUT_COPPER_STAIRS,
	EXPOSED_CUT_COPPER_STAIRS,
	OXIDIZED_CUT_COPPER_STAIRS,
	WEATHERED_CUT_COPPER_STAIRS,
]
COPPER_SLABS = [
	CUT_COPPER_SLAB,
	EXPOSED_CUT_COPPER_SLAB,
	OXIDIZED_CUT_COPPER_SLAB,
	WEATHERED_CUT_COPPER_SLAB
]
ALL_UNWAXED_COPPER = concat_setlike([COPPER_BLOCKS, COPPER_STAIRS, COPPER_SLABS])
#endregion
COMMAND_BLOCKS = [
    CHAIN_COMMAND_BLOCK,
    COMMAND_BLOCK,
    JIGSAW,
    REPEATING_COMMAND_BLOCK,
    STRUCTURE_BLOCK,
]
TRANSPARENT_BLOCKS = [
    AIR,
    CAVE_AIR,
    VOID_AIR,
    LIGHT,
    MOVING_PISTON,
    BARRIER,
    STRUCTURE_VOID,
]
INFESTED_BLOCKS = [
    INFESTED_CHISELED_STONE_BRICKS,
    INFESTED_COBBLESTONE,
    INFESTED_CRACKED_STONE_BRICKS,
    INFESTED_DEEPSLATE,
    INFESTED_MOSSY_STONE_BRICKS,
    INFESTED_STONE,
    INFESTED_STONE_BRICKS,
]

UN_USEFULL_LIST = [
    DUPLICATES,
    INFESTED_BLOCKS,
    DEAD_CORAL_BLOCKS,
    DEAD_CORALS,
    ALL_UNWAXED_COPPER,
    COMMAND_BLOCKS,
    TRANSPARENT_BLOCKS,
]
ALL_UN_USEFULL_BLOCKS = concat_setlike(UN_USEFULL_LIST)
#endregion
#--------------------------------------------------
ALL_BLOCK_LIST = [
    ALL_FULL_BLOCKS,
    ALL_SEMI_BLOCKS,
    ALL_DECORATIONS,
    ALL_FLORA,
    ALL_LIQUID_LIKES,
    ALL_UN_USEFULL_BLOCKS,
]
ALL_BLOCKS = concat_setlike(ALL_BLOCK_LIST)
BLOCK_LISTS = concat_listlike([
	FULL_BLOCK_LISTS,
	SEMI_BLOCK_LISTS,
	DECORATIONS_LISTS,
	FLORA_LISTS,
 	LIQUID_LIKES_LIST,
  	UN_USEFULL_LIST,
	ALL_BLOCK_LIST,
])
