From 2c5f293210a09c99577a6999afd52357c898eaeb Mon Sep 17 00:00:00 2001 From: mat Date: Mon, 2 Jun 2025 06:55:38 -1030 Subject: add Event::ReceiveChunk and find_blocks_in_chunk function --- azalea-client/src/plugins/events.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'azalea-client/src/plugins') diff --git a/azalea-client/src/plugins/events.rs b/azalea-client/src/plugins/events.rs index d9cbf912..36f48a05 100644 --- a/azalea-client/src/plugins/events.rs +++ b/azalea-client/src/plugins/events.rs @@ -4,7 +4,7 @@ use std::sync::Arc; use azalea_chat::FormattedText; -use azalea_core::tick::GameTick; +use azalea_core::{position::ChunkPos, tick::GameTick}; use azalea_entity::{Dead, InLoadedChunk}; use azalea_protocol::packets::game::c_player_combat_kill::ClientboundPlayerCombatKill; use azalea_world::{InstanceName, MinecraftEntityId}; @@ -15,6 +15,7 @@ use tokio::sync::mpsc; use crate::{ chat::{ChatPacket, ChatReceivedEvent}, + chunks::ReceiveChunkEvent, disconnect::DisconnectEvent, packet::game::{ AddPlayerEvent, DeathEvent, KeepAliveEvent, RemovePlayerEvent, UpdatePlayerEvent, @@ -118,6 +119,7 @@ pub enum Event { KeepAlive(u64), /// The client disconnected from the server. Disconnect(Option), + ReceiveChunk(ChunkPos), } /// A component that contains an event sender for events that are only @@ -294,3 +296,17 @@ pub fn disconnect_listener( } } } + +pub fn receive_chunk_listener( + query: Query<&LocalPlayerEvents>, + mut events: EventReader, +) { + for event in events.read() { + if let Ok(local_player_events) = query.get(event.entity) { + let _ = local_player_events.send(Event::ReceiveChunk(ChunkPos::new( + event.packet.x, + event.packet.z, + ))); + } + } +} -- cgit v1.2.3