diff options
Diffstat (limited to 'azalea/src/bot.rs')
| -rw-r--r-- | azalea/src/bot.rs | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/azalea/src/bot.rs b/azalea/src/bot.rs index 26e35fda..566ab1e7 100644 --- a/azalea/src/bot.rs +++ b/azalea/src/bot.rs @@ -3,14 +3,14 @@ use async_trait::async_trait; use parking_lot::Mutex; use std::sync::Arc; -#[derive(Default)] +#[derive(Default, Clone)] pub struct Plugin { - pub state: Arc<Mutex<State>>, + pub state: State, } -#[derive(Default)] +#[derive(Default, Clone)] pub struct State { - jumping_once: bool, + jumping_once: Arc<Mutex<bool>>, } pub trait BotTrait { @@ -18,7 +18,7 @@ pub trait BotTrait { } impl BotTrait for azalea_client::Client { - /// Try to jump next tick. + /// Queue a jump for the next tick. fn jump(&self) { let player_lock = self.player.lock(); let mut dimension_lock = self.dimension.lock(); @@ -33,12 +33,11 @@ impl BotTrait for azalea_client::Client { #[async_trait] impl crate::Plugin for Plugin { - async fn handle(self: Arc<Self>, event: Arc<Event>, mut bot: Client) { - if let Event::Tick = *event { - let mut state = self.state.lock(); - if state.jumping_once { + async fn handle(self: Box<Self>, event: Event, mut bot: Client) { + if let Event::Tick = event { + if *self.state.jumping_once.lock() { if bot.jumping() { - state.jumping_once = false; + *self.state.jumping_once.lock() = false; } else { bot.set_jumping(true); } |
