nurtex_protocol/types/
game_event.rs1use nurtex_codec::Buffer;
2
3#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
5pub enum GameEvent {
6 NoRespawnBlockAvailable,
7 BeginRaining,
8 EndRaining,
9 ChangeGameMode,
10 WinGame,
11 DemoEvent,
12 ArrowHitPlayer,
13 RainLevelChange,
14 ThunderLevelChange,
15 PlayPufferfishStingSound,
16 PlayElderGuardianMobAppearance,
17 EnableRespawnScreen,
18 LimitedCrafting,
19 StartWaitingForLevelChunks,
20}
21
22impl Buffer for GameEvent {
23 fn read_buf(buffer: &mut std::io::Cursor<&[u8]>) -> Option<Self> {
24 let id = u8::read_buf(buffer)?;
25
26 match id {
27 0 => Some(Self::NoRespawnBlockAvailable),
28 1 => Some(Self::BeginRaining),
29 2 => Some(Self::EndRaining),
30 3 => Some(Self::ChangeGameMode),
31 4 => Some(Self::WinGame),
32 5 => Some(Self::DemoEvent),
33 6 => Some(Self::ArrowHitPlayer),
34 7 => Some(Self::RainLevelChange),
35 8 => Some(Self::ThunderLevelChange),
36 9 => Some(Self::PlayPufferfishStingSound),
37 10 => Some(Self::PlayElderGuardianMobAppearance),
38 11 => Some(Self::EnableRespawnScreen),
39 12 => Some(Self::LimitedCrafting),
40 13 => Some(Self::StartWaitingForLevelChunks),
41 _ => None,
42 }
43 }
44
45 fn write_buf(&self, buffer: &mut impl std::io::Write) -> std::io::Result<()> {
46 let id = match self {
47 Self::NoRespawnBlockAvailable => 0,
48 Self::BeginRaining => 1,
49 Self::EndRaining => 2,
50 Self::ChangeGameMode => 3,
51 Self::WinGame => 4,
52 Self::DemoEvent => 5,
53 Self::ArrowHitPlayer => 6,
54 Self::RainLevelChange => 7,
55 Self::ThunderLevelChange => 8,
56 Self::PlayPufferfishStingSound => 9,
57 Self::PlayElderGuardianMobAppearance => 10,
58 Self::EnableRespawnScreen => 11,
59 Self::LimitedCrafting => 12,
60 Self::StartWaitingForLevelChunks => 13,
61 };
62
63 (id as u8).write_buf(buffer)?;
64
65 Ok(())
66 }
67}