From 713b3121676fd422a666e30b5f0f25b280b4ecc6 Mon Sep 17 00:00:00 2001 From: mat Date: Thu, 13 Mar 2025 21:01:37 +0000 Subject: correctly accept resource packs while in config state --- azalea/src/accept_resource_packs.rs | 54 +++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 14 deletions(-) (limited to 'azalea/src') diff --git a/azalea/src/accept_resource_packs.rs b/azalea/src/accept_resource_packs.rs index 13deef8e..807ad355 100644 --- a/azalea/src/accept_resource_packs.rs +++ b/azalea/src/accept_resource_packs.rs @@ -1,8 +1,11 @@ +use azalea_client::InConfigState; use azalea_client::chunks::handle_chunk_batch_finished_event; use azalea_client::inventory::InventorySet; +use azalea_client::packet::config::SendConfigPacketEvent; use azalea_client::packet::game::SendPacketEvent; use azalea_client::packet::{death_event_on_0_health, game::ResourcePackEvent}; use azalea_client::respawn::perform_respawn; +use azalea_protocol::packets::config; use azalea_protocol::packets::game::s_resource_pack::{self, ServerboundResourcePack}; use bevy_app::Update; use bevy_ecs::prelude::*; @@ -28,21 +31,44 @@ impl Plugin for AcceptResourcePacksPlugin { fn accept_resource_pack( mut events: EventReader, mut send_packet_events: EventWriter, + mut send_config_packet_events: EventWriter, + query_in_config_state: Query>, ) { for event in events.read() { - send_packet_events.send(SendPacketEvent::new( - event.entity, - ServerboundResourcePack { - id: event.id, - action: s_resource_pack::Action::Accepted, - }, - )); - send_packet_events.send(SendPacketEvent::new( - event.entity, - ServerboundResourcePack { - id: event.id, - action: s_resource_pack::Action::SuccessfullyLoaded, - }, - )); + let Ok(in_config_state_option) = query_in_config_state.get(event.entity) else { + continue; + }; + + if in_config_state_option.is_some() { + send_config_packet_events.send(SendConfigPacketEvent::new( + event.entity, + config::ServerboundResourcePack { + id: event.id, + action: config::s_resource_pack::Action::Accepted, + }, + )); + send_config_packet_events.send(SendConfigPacketEvent::new( + event.entity, + config::ServerboundResourcePack { + id: event.id, + action: config::s_resource_pack::Action::SuccessfullyLoaded, + }, + )); + } else { + send_packet_events.send(SendPacketEvent::new( + event.entity, + ServerboundResourcePack { + id: event.id, + action: s_resource_pack::Action::Accepted, + }, + )); + send_packet_events.send(SendPacketEvent::new( + event.entity, + ServerboundResourcePack { + id: event.id, + action: s_resource_pack::Action::SuccessfullyLoaded, + }, + )); + } } } -- cgit v1.2.3