aboutsummaryrefslogtreecommitdiff
path: root/azalea/src/bot.rs
diff options
context:
space:
mode:
Diffstat (limited to 'azalea/src/bot.rs')
-rw-r--r--azalea/src/bot.rs19
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);
}