azalea_core/
tier.rs

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