aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xazalea-client/src/connect.rs7
-rw-r--r--azalea-client/src/entity.rs5
-rw-r--r--azalea-client/src/player.rs2
-rwxr-xr-xazalea-core/src/lib.rs4
-rw-r--r--azalea-core/src/position.rs17
-rw-r--r--azalea-protocol/src/packets/game/clientbound_add_entity_packet.rs1
-rw-r--r--bot/src/main.rs4
7 files changed, 34 insertions, 6 deletions
diff --git a/azalea-client/src/connect.rs b/azalea-client/src/connect.rs
index 4ef3df63..1551ca69 100755
--- a/azalea-client/src/connect.rs
+++ b/azalea-client/src/connect.rs
@@ -1,5 +1,5 @@
use crate::Player;
-use azalea_core::{resource_location::ResourceLocation, ChunkPos};
+use azalea_core::{resource_location::ResourceLocation, ChunkPos, EntityPos};
use azalea_protocol::{
connect::{GameConnection, HandshakeConnection},
packets::{
@@ -351,6 +351,11 @@ impl Client {
}
GamePacket::ClientboundAddEntityPacket(p) => {
println!("Got add entity packet {:?}", p);
+ let pos = EntityPos {
+ x: p.x,
+ y: p.y,
+ z: p.z,
+ };
}
GamePacket::ClientboundSetEntityDataPacket(p) => {
// println!("Got set entity data packet {:?}", p);
diff --git a/azalea-client/src/entity.rs b/azalea-client/src/entity.rs
index ed8aa68d..d91f556f 100644
--- a/azalea-client/src/entity.rs
+++ b/azalea-client/src/entity.rs
@@ -1,5 +1,8 @@
-#[derive(Default)]
+use azalea_core::EntityPos;
+
+#[derive(Default, Debug)]
pub struct Entity {
/// The incremental numerical id of the entity.
pub id: u32,
+ pub pos: EntityPos,
}
diff --git a/azalea-client/src/player.rs b/azalea-client/src/player.rs
index fc54ff93..04d34f6d 100644
--- a/azalea-client/src/player.rs
+++ b/azalea-client/src/player.rs
@@ -1,6 +1,6 @@
use crate::Entity;
-#[derive(Default)]
+#[derive(Default, Debug)]
pub struct Player {
/// The entity attached to the player. There's some useful fields here.
pub entity: Entity,
diff --git a/azalea-core/src/lib.rs b/azalea-core/src/lib.rs
index cdb32ea9..a2632871 100755
--- a/azalea-core/src/lib.rs
+++ b/azalea-core/src/lib.rs
@@ -11,9 +11,7 @@ mod slot;
pub use slot::{Slot, SlotData};
mod position;
-pub use position::{
- BlockPos, ChunkBlockPos, ChunkPos, ChunkSectionBlockPos, ChunkSectionPos, GlobalPos,
-};
+pub use position::*;
mod direction;
pub use direction::Direction;
diff --git a/azalea-core/src/position.rs b/azalea-core/src/position.rs
index d5c97eab..24be5f6a 100644
--- a/azalea-core/src/position.rs
+++ b/azalea-core/src/position.rs
@@ -147,6 +147,23 @@ pub struct GlobalPos {
pub dimension: ResourceLocation,
}
+#[derive(Debug, Clone, Default)]
+pub struct EntityPos {
+ pub x: f64,
+ pub y: f64,
+ pub z: f64,
+}
+
+impl From<&EntityPos> for BlockPos {
+ fn from(pos: &EntityPos) -> Self {
+ BlockPos {
+ x: pos.x as i32,
+ y: pos.y as i32,
+ z: pos.z as i32,
+ }
+ }
+}
+
#[cfg(test)]
mod tests {
use super::*;
diff --git a/azalea-protocol/src/packets/game/clientbound_add_entity_packet.rs b/azalea-protocol/src/packets/game/clientbound_add_entity_packet.rs
index 8a8a713e..9ef7e05c 100644
--- a/azalea-protocol/src/packets/game/clientbound_add_entity_packet.rs
+++ b/azalea-protocol/src/packets/game/clientbound_add_entity_packet.rs
@@ -3,6 +3,7 @@ use uuid::Uuid;
#[derive(Clone, Debug, McBuf, GamePacket)]
pub struct ClientboundAddEntityPacket {
+ /// The id of the entity.
#[var]
pub id: u32,
pub uuid: Uuid,
diff --git a/bot/src/main.rs b/bot/src/main.rs
index cd27ba5a..2618675e 100644
--- a/bot/src/main.rs
+++ b/bot/src/main.rs
@@ -21,6 +21,10 @@ async fn main() {
// TODO: have a "loaded" or "ready" event that fires when all chunks are loaded
Event::Login => {}
Event::Chat(p) => {
+ let state = client.state.lock().await;
+ let world = state.world.as_ref().unwrap();
+ // println!("{:?}", state.player.entity);
+ // world.get_block_state(state.player.entity.pos);
// println!("{}", p.message.to_ansi(None));
// if p.message.to_ansi(None) == "<py5> ok" {
// let state = client.state.lock().await;