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}