aboutsummaryrefslogtreecommitdiff
path: root/azalea-core/src/position.rs
diff options
context:
space:
mode:
Diffstat (limited to 'azalea-core/src/position.rs')
-rw-r--r--azalea-core/src/position.rs14
1 files changed, 11 insertions, 3 deletions
diff --git a/azalea-core/src/position.rs b/azalea-core/src/position.rs
index cdf4b1b9..80b189ce 100644
--- a/azalea-core/src/position.rs
+++ b/azalea-core/src/position.rs
@@ -314,9 +314,17 @@ pub struct Vec3 {
vec3_impl!(Vec3, f64);
impl simdnbt::FromNbtTag for Vec3 {
fn from_nbt_tag(tag: NbtTag) -> Option<Self> {
- let pos = tag.list()?.doubles()?;
- let [x, y, z] = <[f64; 3]>::try_from(pos).ok()?;
- Some(Self { x, y, z })
+ let pos = tag.list()?;
+ if let Some(pos) = pos.doubles() {
+ let [x, y, z] = <[f64; 3]>::try_from(pos).ok()?;
+ Some(Self { x, y, z })
+ } else if let Some(pos) = pos.floats() {
+ // used on hypixel
+ let [x, y, z] = <[f32; 3]>::try_from(pos).ok()?.map(|f| f as f64);
+ Some(Self { x, y, z })
+ } else {
+ None
+ }
}
}