diff --git a/azalea/src/bot.rs b/azalea/src/bot.rs index 1570fa5e..26e35fda 100644 --- a/azalea/src/bot.rs +++ b/azalea/src/bot.rs @@ -33,7 +33,7 @@ impl BotTrait for azalea_client::Client { #[async_trait] impl crate::Plugin for Plugin { - async fn handle(self: Arc, mut bot: Client, event: Arc) { + async fn handle(self: Arc, event: Arc, mut bot: Client) { if let Event::Tick = *event { let mut state = self.state.lock(); if state.jumping_once { diff --git a/azalea/src/lib.rs b/azalea/src/lib.rs index 8ef02e7c..493745cb 100644 --- a/azalea/src/lib.rs +++ b/azalea/src/lib.rs @@ -11,10 +11,9 @@ use thiserror::Error; /// Plugins can keep their own personal state, listen to events, and add new functions to Client. #[async_trait] pub trait Plugin: Send + Sync { - async fn handle(self: Arc, bot: Client, event: Arc); + async fn handle(self: Arc, event: Arc, bot: Client); } -// pub type HeuristicFn = fn(start: &Vertex, current: &Vertex) -> W; pub type HandleFn = fn(Client, Arc, Arc>) -> Fut; pub struct Options @@ -65,18 +64,18 @@ pub async fn start< while let Some(event) = rx.recv().await { // we put it into an Arc so it's cheaper to clone + let event = Arc::new(event); for plugin in &options.plugins { - tokio::spawn(plugin.clone().handle(bot.clone(), event.clone())); + tokio::spawn(plugin.clone().handle(event.clone(), bot.clone())); } - { - let bot_plugin = bot_plugin.clone(); - let bot = bot.clone(); - let event = event.clone(); - tokio::spawn(bot::Plugin::handle(bot_plugin, bot, event)); - }; + tokio::spawn(bot::Plugin::handle( + bot_plugin.clone(), + event.clone(), + bot.clone(), + )); tokio::spawn((options.handle)(bot.clone(), event.clone(), state.clone())); }