1mod local;
8mod query;
9mod state;
10
11pub use local::{BlockArea, BlockKind, ClickMode, LocalState, NearbyEntity};
12pub use query::{
13 BlockHit, BlockInfo, EntityInfo, Face, PlacedBlock, PlayerInfo, Rotation, ScreenSlot,
14 SlotStack, Stack, entity_flags,
15};
16pub use state::{join_state, split_state};
17
18#[derive(Debug, Clone, Copy, PartialEq, Eq, yog_data::Schema)]
20#[data(view)]
21pub struct BlockPos {
22 pub x: i32,
23 pub y: i32,
24 pub z: i32,
25}
26
27#[derive(Debug, Clone, Copy, PartialEq, Default, yog_data::Schema)]
29#[data(view)]
30pub struct Point {
31 pub x: f64,
32 pub y: f64,
33 pub z: f64,
34}
35
36impl BlockPos {
37 pub const fn new(x: i32, y: i32, z: i32) -> Self {
38 Self { x, y, z }
39 }
40}
41
42impl From<(i32, i32, i32)> for BlockPos {
43 fn from((x, y, z): (i32, i32, i32)) -> Self {
44 Self { x, y, z }
45 }
46}
47
48impl From<(f64, f64, f64)> for Point {
49 fn from((x, y, z): (f64, f64, f64)) -> Self {
50 Self { x, y, z }
51 }
52}
53
54impl From<BlockPos> for Point {
55 fn from(p: BlockPos) -> Self {
57 Self {
58 x: f64::from(p.x),
59 y: f64::from(p.y),
60 z: f64::from(p.z),
61 }
62 }
63}