azalea_core/
tier.rs

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