aboutsummaryrefslogtreecommitdiff
path: root/azalea/src/accept_resource_packs.rs
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2023-09-14 17:00:24 -0500
committermat <git@matdoes.dev>2023-09-14 17:00:27 -0500
commit3621acab758c8bd00ee08feee307a02512f234c8 (patch)
tree57e6de3e621f65c84f45bf50f27973c66de03a07 /azalea/src/accept_resource_packs.rs
parent83784d5a350168edaade4620122c2c6d46bc81a2 (diff)
downloadazalea-drasl-3621acab758c8bd00ee08feee307a02512f234c8.tar.xz
AcceptResourcePacksPlugin
Diffstat (limited to 'azalea/src/accept_resource_packs.rs')
-rw-r--r--azalea/src/accept_resource_packs.rs45
1 files changed, 45 insertions, 0 deletions
diff --git a/azalea/src/accept_resource_packs.rs b/azalea/src/accept_resource_packs.rs
new file mode 100644
index 00000000..67d8aa65
--- /dev/null
+++ b/azalea/src/accept_resource_packs.rs
@@ -0,0 +1,45 @@
+use crate::app::{App, Plugin};
+use azalea_client::packet_handling::{death_event_on_0_health, ResourcePackEvent};
+use azalea_client::respawn::perform_respawn;
+use azalea_client::SendPacketEvent;
+use azalea_protocol::packets::game::serverbound_resource_pack_packet::{
+ self, ServerboundResourcePackPacket,
+};
+use bevy_app::Update;
+use bevy_ecs::prelude::*;
+
+/// A plugin that makes it so bots automatically accept resource packs.
+#[derive(Clone, Default)]
+pub struct AcceptResourcePacksPlugin;
+impl Plugin for AcceptResourcePacksPlugin {
+ fn build(&self, app: &mut App) {
+ app.add_systems(
+ Update,
+ accept_resource_pack
+ .before(perform_respawn)
+ .after(death_event_on_0_health),
+ );
+ }
+}
+
+fn accept_resource_pack(
+ mut events: EventReader<ResourcePackEvent>,
+ mut send_packet_events: EventWriter<SendPacketEvent>,
+) {
+ for event in events.iter() {
+ send_packet_events.send(SendPacketEvent {
+ entity: event.entity,
+ packet: ServerboundResourcePackPacket {
+ action: serverbound_resource_pack_packet::Action::Accepted,
+ }
+ .get(),
+ });
+ send_packet_events.send(SendPacketEvent {
+ entity: event.entity,
+ packet: ServerboundResourcePackPacket {
+ action: serverbound_resource_pack_packet::Action::SuccessfullyLoaded,
+ }
+ .get(),
+ });
+ }
+}