diff options
| author | mat <git@matdoes.dev> | 2023-12-16 14:29:49 -0600 |
|---|---|---|
| committer | mat <git@matdoes.dev> | 2023-12-16 14:29:49 -0600 |
| commit | a069ffe9827dc554cbb749f5e7d88c2d36906c3d (patch) | |
| tree | 9c6a7b8ecf281a5addba0c6b825f9771c0b17ca9 /azalea-core | |
| parent | 92d33ad0a325b8cb7c78e13a344621e34fb4bd99 (diff) | |
| download | azalea-drasl-a069ffe9827dc554cbb749f5e7d88c2d36906c3d.tar.xz | |
fix non-u8 gamemodes
love you wynncraft
Diffstat (limited to 'azalea-core')
| -rw-r--r-- | azalea-core/src/game_type.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/azalea-core/src/game_type.rs b/azalea-core/src/game_type.rs index 118fdbb9..99f0c0fe 100644 --- a/azalea-core/src/game_type.rs +++ b/azalea-core/src/game_type.rs @@ -1,5 +1,6 @@ -use azalea_buf::{BufReadError, McBufReadable, McBufWritable}; +use azalea_buf::{BufReadError, McBufReadable, McBufVarReadable, McBufWritable}; use std::io::{Cursor, Write}; +use tracing::warn; /// A Minecraft gamemode, like survival or creative. #[derive(Hash, Copy, Clone, Debug, Default, Eq, PartialEq)] @@ -93,8 +94,15 @@ impl GameMode { impl McBufReadable for GameMode { fn read_from(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> { - let id = u8::read_from(buf)?; - Ok(GameMode::from_id(id).unwrap_or_default()) + let id = u32::var_read_from(buf)?; + let id = id.try_into().unwrap_or_else(|_| { + warn!("Unknown game mode id {id}, defaulting to survival"); + 0 + }); + Ok(GameMode::from_id(id).unwrap_or_else(|| { + warn!("Unknown game mode id {id}, defaulting to survival"); + GameMode::Survival + })) } } |
