From 3f8bc10bb07e76988c8c1df8908d242e0d6c3e27 Mon Sep 17 00:00:00 2001 From: Thinkofname Date: Sat, 26 Mar 2016 22:21:47 +0000 Subject: [PATCH] Initial entity work, moved self handling to an entity --- protocol/src/types/mod.rs | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/protocol/src/types/mod.rs b/protocol/src/types/mod.rs index 330263c..562cbd0 100644 --- a/protocol/src/types/mod.rs +++ b/protocol/src/types/mod.rs @@ -140,3 +140,45 @@ impl Direction { } } } + + + +#[derive(Clone, Copy, Debug)] +pub enum Gamemode { + Survival = 0, + Creative = 1, + Adventure = 2, + Spectator = 3, +} + +impl Gamemode { + pub fn from_int(val: i32) -> Gamemode { + match val { + 3 => Gamemode::Spectator, + 2 => Gamemode::Adventure, + 1 => Gamemode::Creative, + 0 | _ => Gamemode::Survival, + } + } + + pub fn can_fly(&self) -> bool { + match *self { + Gamemode::Creative | Gamemode::Spectator => true, + _ => false, + } + } + + pub fn always_fly(&self) -> bool { + match *self { + Gamemode::Spectator => true, + _ => false, + } + } + + pub fn noclip(&self) -> bool { + match *self { + Gamemode::Spectator => true, + _ => false, + } + } +}