mc_vanilla/
util.rs

1
2
3#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
4#[repr(u8)]
5pub enum DyeColor {
6    White = 0,
7    Orange = 1,
8    Magenta = 2,
9    LightBlue = 3,
10    Yellow = 4,
11    Lime = 5,
12    Pink = 6,
13    Gray = 7,
14    LightGray = 8,
15    Cyan = 9,
16    Purple = 10,
17    Blue = 11,
18    Brown = 12,
19    Green = 13,
20    Red = 14,
21    Black = 15
22}
23
24impl Default for DyeColor {
25    fn default() -> Self {
26        Self::White
27    }
28}
29
30impl DyeColor {
31
32    pub fn get_id(self) -> u8 {
33        self as u8
34    }
35    
36    pub fn from_id(id: u8) -> Self {
37        if id <= 15 {
38            unsafe { std::mem::transmute(id) }
39        } else {
40            Self::default()
41        }
42    }
43
44    pub fn get_diffuse_color(self) -> u32 {
45        use DyeColor::*;
46        match self {
47            White => 0xF9FFFE,
48            Orange => 0xF9801D,
49            Magenta => 0xC74EBD,
50            LightBlue => 0x3AB3DA,
51            Yellow => 0xFED83D,
52            Lime => 0x80C71F,
53            Pink => 0xF38BAA,
54            Gray => 0x474F52,
55            LightGray => 0x9D9D97,
56            Cyan => 0x169C9C,
57            Purple => 0x8932B8,
58            Blue => 0x3C44AA,
59            Brown => 0x835432,
60            Green => 0x5E7C16,
61            Red => 0xB02E26,
62            Black => 0x1D1D21
63        }
64    }
65
66}
67
68
69#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
70#[repr(u8)]
71pub enum GameMode {
72    Survival = 0,
73    Creative = 1,
74    Adventure = 2,
75    Spectator = 3
76}
77
78impl Default for GameMode {
79    fn default() -> Self {
80        Self::Survival
81    }
82}
83
84impl GameMode {
85
86    pub fn get_id(self) -> u8 {
87        self as u8
88    }
89
90    pub fn from_id(id: u8) -> Self {
91        if id <= 3 {
92            unsafe { std::mem::transmute(id) }
93        } else {
94            Self::default()
95        }
96    }
97
98}