valence_protocol/
biome_pos.rs
1use valence_math::DVec3;
2
3use crate::BlockPos;
4
5#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Default, Debug)]
6pub struct BiomePos {
7 pub x: i32,
8 pub y: i32,
9 pub z: i32,
10}
11
12impl BiomePos {
13 pub const fn new(x: i32, y: i32, z: i32) -> Self {
14 Self { x, y, z }
15 }
16}
17
18impl From<BlockPos> for BiomePos {
19 fn from(pos: BlockPos) -> Self {
20 Self {
21 x: pos.x.div_euclid(4),
22 y: pos.y.div_euclid(4),
23 z: pos.z.div_euclid(4),
24 }
25 }
26}
27
28impl From<DVec3> for BiomePos {
29 fn from(pos: DVec3) -> Self {
30 Self {
31 x: (pos.x / 4.0).floor() as i32,
32 y: (pos.y / 4.0).floor() as i32,
33 z: (pos.z / 4.0).floor() as i32,
34 }
35 }
36}