aboutsummaryrefslogtreecommitdiff
path: root/azalea
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2025-03-13 21:01:37 +0000
committermat <git@matdoes.dev>2025-03-13 21:01:37 +0000
commit713b3121676fd422a666e30b5f0f25b280b4ecc6 (patch)
treef4a89ecb0f2b5930d041d103844415e0355f079f /azalea
parent249fa55a53d3011cd0223c0dc5673e9a7b81db8e (diff)
downloadazalea-drasl-713b3121676fd422a666e30b5f0f25b280b4ecc6.tar.xz
correctly accept resource packs while in config state
Diffstat (limited to 'azalea')
-rw-r--r--azalea/src/accept_resource_packs.rs54
1 files changed, 40 insertions, 14 deletions
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<ResourcePackEvent>,
mut send_packet_events: EventWriter<SendPacketEvent>,
+ mut send_config_packet_events: EventWriter<SendConfigPacketEvent>,
+ query_in_config_state: Query<Option<&InConfigState>>,
) {
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,
+ },
+ ));
+ }
}
}