diff options
Diffstat (limited to 'azalea/src')
| -rw-r--r-- | azalea/src/accept_resource_packs.rs | 45 | ||||
| -rw-r--r-- | azalea/src/bot.rs | 2 | ||||
| -rw-r--r-- | azalea/src/lib.rs | 1 |
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; |
