aboutsummaryrefslogtreecommitdiff
path: root/azalea/src
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
parent83784d5a350168edaade4620122c2c6d46bc81a2 (diff)
downloadazalea-drasl-3621acab758c8bd00ee08feee307a02512f234c8.tar.xz
AcceptResourcePacksPlugin
Diffstat (limited to 'azalea/src')
-rw-r--r--azalea/src/accept_resource_packs.rs45
-rw-r--r--azalea/src/bot.rs2
-rw-r--r--azalea/src/lib.rs1
3 files changed, 48 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(),
+ });
+ }
+}
diff --git a/azalea/src/bot.rs b/azalea/src/bot.rs
index 4c2a7a21..3b9e7e52 100644
--- a/azalea/src/bot.rs
+++ b/azalea/src/bot.rs
@@ -1,3 +1,4 @@
+use crate::accept_resource_packs::AcceptResourcePacksPlugin;
use crate::app::{App, Plugin, PluginGroup, PluginGroupBuilder};
use crate::auto_respawn::AutoRespawnPlugin;
use crate::container::ContainerPlugin;
@@ -200,5 +201,6 @@ impl PluginGroup for DefaultBotPlugins {
.add(PathfinderPlugin)
.add(ContainerPlugin)
.add(AutoRespawnPlugin)
+ .add(AcceptResourcePacksPlugin)
}
}
diff --git a/azalea/src/lib.rs b/azalea/src/lib.rs
index 0f1ed243..77e4ecf1 100644
--- a/azalea/src/lib.rs
+++ b/azalea/src/lib.rs
@@ -5,6 +5,7 @@
#![feature(type_changing_struct_update)]
#![feature(lazy_cell)]
+pub mod accept_resource_packs;
mod auto_respawn;
mod bot;
pub mod container;