1use serde::{Deserialize, Serialize};
2
3#[derive(
4 Debug,
5 Clone,
6 Copy,
7 PartialEq,
8 Eq,
9 PartialOrd,
10 Ord,
11 Hash,
12 Serialize,
13 Deserialize,
14)]
15#[repr(u8)]
16pub enum Block {
17 Placeable(PlaceableBlock),
18 Special(SpecialBlock),
19}
20
21impl Default for Block {
22 fn default() -> Self {
23 Self::Placeable(PlaceableBlock::default())
24 }
25}
26
27impl From<PlaceableBlock> for Block {
28 fn from(block: PlaceableBlock) -> Self {
29 Self::Placeable(block)
30 }
31}
32
33impl From<SpecialBlock> for Block {
34 fn from(block: SpecialBlock) -> Self {
35 Self::Special(block)
36 }
37}
38
39#[derive(
40 Debug,
41 Clone,
42 Copy,
43 PartialEq,
44 Eq,
45 PartialOrd,
46 Ord,
47 Hash,
48 Default,
49 Serialize,
50 Deserialize,
51)]
52#[repr(u8)]
53pub enum PlaceableBlock {
54 #[default]
55 Air = 0,
56}
57
58#[derive(
59 Debug,
60 Clone,
61 Copy,
62 PartialEq,
63 Eq,
64 PartialOrd,
65 Ord,
66 Hash,
67 Default,
68 Serialize,
69 Deserialize,
70)]
71#[repr(u8)]
72pub enum SpecialBlock {
73 #[default]
74 Player = 0,
75}