from enum import Enum


class CollectionKey(str, Enum):
    SEEDS = "SEEDS"
    LOG = "LOG"
    COBBLESTONE = "COBBLESTONE"
    WHEAT = "WHEAT"
    ROTTEN_FLESH = "ROTTEN_FLESH"

    LOG_COLON_2 = "LOG:2"
    LOG_2_COLON_1 = "LOG_2:1"

    COAL = "COAL"
    CARROT_ITEM = "CARROT_ITEM"
    POTATO_ITEM = "POTATO_ITEM"
    BONE = "BONE"
    SULPHUR = "SULPHUR"
    SUGAR_CANE = "SUGAR_CANE"
    IRON_INGOT = "IRON_INGOT"
    GOLD_INGOT = "GOLD_INGOT"
    STRING = "STRING"
    MELON = "MELON"
    PUMPKIN = "PUMPKIN"
    MUTTON = "MUTTON"
    ENDER_PEARL = "ENDER_PEARL"
    SPIDER_EYE = "SPIDER_EYE"

    INK_SACK_COLON_3 = "INK_SACK:3"

    CACTUS = "CACTUS"
    MUSHROOM_COLLECTION = "MUSHROOM_COLLECTION"
    RABBIT = "RABBIT"
    NETHER_STALK = "NETHER_STALK"

    INK_SACK_COLON_4 = "INK_SACK:4"

    REDSTONE = "REDSTONE"
    RAW_FISH = "RAW_FISH"

    LOG_COLON_1 = "LOG:1"
    LOG_2 = "LOG_2"
    LOG_COLON_3 = "LOG:3"

    PORK = "PORK"
    FEATHER = "FEATHER"
    RAW_CHICKEN = "RAW_CHICKEN"
    LEATHER = "LEATHER"
    EMERALD = "EMERALD"
    SLIME_BALL = "SLIME_BALL"
    GLOWSTONE_DUST = "GLOWSTONE_DUST"
    QUARTZ = "QUARTZ"
    BLAZE_ROD = "BLAZE_ROD"
    NETHERRACK = "NETHERRACK"
    DIAMOND = "DIAMOND"
    OBSIDIAN = "OBSIDIAN"
    HAY_BLOCK = "HAY_BLOCK"
    GRAVEL = "GRAVEL"
    GOLD_BLOCK = "GOLD_BLOCK"

    RAW_FISH_COLON_3 = "RAW_FISH:3"

    INK_SACK = "INK_SACK"
    WATER_LILY = "WATER_LILY"

    RAW_FISH_COLON_2 = "RAW_FISH:2"
    RAW_FISH_COLON_1 = "RAW_FISH:1"

    ICE = "ICE"
    IRON_BLOCK = "IRON_BLOCK"
    LAPIS_BLOCK = "LAPIS_BLOCK"
    DIAMOND_BLOCK = "DIAMOND_BLOCK"
    EGG = "EGG"
    MAGMA_CREAM = "MAGMA_CREAM"
    ENDER_STONE = "ENDER_STONE"
    ENCHANTED_LAPIS_LAZULI = "ENCHANTED_LAPIS_LAZULI"
    ENCHANTED_BLAZE_POWDER = "ENCHANTED_BLAZE_POWDER"
    SAND = "SAND"
    ENCHANTED_BIRCH_LOG = "ENCHANTED_BIRCH_LOG"
    PRISMARINE_SHARD = "PRISMARINE_SHARD"
    CLAY_BALL = "CLAY_BALL"
    PRISMARINE_CRYSTALS = "PRISMARINE_CRYSTALS"
    SPONGE = "SPONGE"
    ENCHANTED_SEEDS = "ENCHANTED_SEEDS"
    ENCHANTED_LAPIS_LAZULI_BLOCK = "ENCHANTED_LAPIS_LAZULI_BLOCK"
    ENCHANTED_OAK_LOG = "ENCHANTED_OAK_LOG"
    MITHRIL_ORE = "MITHRIL_ORE"
    ENCHANTED_EMERALD = "ENCHANTED_EMERALD"
    GEMSTONE_COLLECTION = "GEMSTONE_COLLECTION"
    HARD_STONE = "HARD_STONE"
    ENCHANTED_OBSIDIAN = "ENCHANTED_OBSIDIAN"
    ENCHANTED_GLOWSTONE_DUST = "ENCHANTED_GLOWSTONE_DUST"
    ENCHANTED_FLINT = "ENCHANTED_FLINT"

    def __str__(self) -> str:
        return self.value

class SlayerKey(str, Enum):
    ZOMBIE = "zombie"
    SPIDER = "spider"
    ENDERMAN = "enderman"
    WOLF = "wolf"
    BLAZE = "blaze"
    VAMPIRE = "vampire"

class SkillKey(str, Enum):
    SKILL_FISHING = "SKILL_FISHING"
    SKILL_ALCHEMY = "SKILL_ALCHEMY"
    SKILL_RUNECRAFTING = "SKILL_RUNECRAFTING"
    SKILL_MINING = "SKILL_MINING"
    SKILL_FARMING = "SKILL_FARMING"
    SKILL_ENCHANTING = "SKILL_ENCHANTING"
    SKILL_TAMING = "SKILL_TAMING"
    SKILL_FORAGING = "SKILL_FORAGING"
    SKILL_CARPENTRY = "SKILL_CARPENTRY"
    SKILL_COMBAT = "SKILL_COMBAT"

# --8<-- collection-key-values:start
COLLECTION_KEY_VALUES: tuple[str, ...] = tuple(k.value for k in CollectionKey)
# --8<-- collection-key-values:end