diff options
Diffstat (limited to 'azalea-core/src')
| -rw-r--r-- | azalea-core/src/game_type.rs | 60 | ||||
| -rw-r--r-- | azalea-core/src/lib.rs | 1 |
2 files changed, 61 insertions, 0 deletions
diff --git a/azalea-core/src/game_type.rs b/azalea-core/src/game_type.rs new file mode 100644 index 00000000..b0ca6a2d --- /dev/null +++ b/azalea-core/src/game_type.rs @@ -0,0 +1,60 @@ +use azalea_chat; + +#[derive(Hash, Clone, Debug)] +pub enum GameType { + SURVIVAL, + CREATIVE, + ADVENTURE, + SPECTATOR, +} + +impl GameType { + fn to_id(&self) -> u8 { + match self { + GameType::SURVIVAL => 0, + GameType::CREATIVE => 1, + GameType::ADVENTURE => 2, + GameType::SPECTATOR => 3, + } + } + + fn from_id(id: u8) -> GameType { + match id { + 0 => GameType::SURVIVAL, + 1 => GameType::CREATIVE, + 2 => GameType::ADVENTURE, + 3 => GameType::SPECTATOR, + _ => panic!("Unknown game type id: {}", id), + } + } + + fn short_name(&self) -> &'static str { + // TODO: these should be translated TranslatableComponent("selectWorld.gameMode." + string2) + match self { + GameType::SURVIVAL => "Survival", + GameType::CREATIVE => "Creative", + GameType::ADVENTURE => "Adventure", + GameType::SPECTATOR => "Spectator", + } + } + + fn long_name(&self) -> &'static str { + // TODO: These should be translated TranslatableComponent("gameMode." + string2); + match self { + GameType::SURVIVAL => "Survival Mode", + GameType::CREATIVE => "Creative Mode", + GameType::ADVENTURE => "Adventure Mode", + GameType::SPECTATOR => "Spectator Mode", + } + } + + fn from_name(name: &str) -> GameType { + match name { + "survival" => GameType::SURVIVAL, + "creative" => GameType::CREATIVE, + "adventure" => GameType::ADVENTURE, + "spectator" => GameType::SPECTATOR, + _ => panic!("Unknown game type name: {}", name), + } + } +} diff --git a/azalea-core/src/lib.rs b/azalea-core/src/lib.rs index dbe08afb..887d1686 100644 --- a/azalea-core/src/lib.rs +++ b/azalea-core/src/lib.rs @@ -1,5 +1,6 @@ //! Random miscellaneous things like UUIDs that don't deserve their own crate. +pub mod game_type; pub mod resource_location; pub mod serializable_uuid; |
