1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
pub fn get_item_tier(item: azalea_registry::Item) -> Option<Tier> {
    use azalea_registry::Item::*;
    Some(match item {
        WoodenPickaxe | WoodenShovel | WoodenAxe | WoodenHoe | WoodenSword => Tier::Wood,
        StonePickaxe | StoneShovel | StoneAxe | StoneHoe | StoneSword => Tier::Stone,
        IronPickaxe | IronShovel | IronAxe | IronHoe | IronSword => Tier::Iron,
        DiamondPickaxe | DiamondShovel | DiamondAxe | DiamondHoe | DiamondSword => Tier::Diamond,
        GoldenPickaxe | GoldenShovel | GoldenAxe | GoldenHoe | GoldenSword => Tier::Gold,
        NetheritePickaxe | NetheriteShovel | NetheriteAxe | NetheriteHoe | NetheriteSword => {
            Tier::Netherite
        }
        _ => return None,
    })
}

pub enum Tier {
    Wood,
    Stone,
    Iron,
    Diamond,
    Gold,
    Netherite,
}

impl Tier {
    pub fn level(&self) -> u8 {
        match self {
            Tier::Wood => 0,
            Tier::Stone => 1,
            Tier::Iron => 2,
            Tier::Diamond => 3,
            Tier::Gold => 0, // gold is the same tier as wood
            Tier::Netherite => 4,
        }
    }
    pub fn speed(&self) -> f32 {
        match self {
            Tier::Wood => 2.,
            Tier::Stone => 4.,
            Tier::Iron => 6.,
            Tier::Diamond => 8.,
            Tier::Gold => 12.,
            Tier::Netherite => 9.,
        }
    }
}