diff options
| author | mat <github@matdoes.dev> | 2022-10-23 16:51:49 -0500 |
|---|---|---|
| committer | mat <github@matdoes.dev> | 2022-10-23 16:51:49 -0500 |
| commit | 2eade86cf7a12a6ec64496aedbfc3d3a3bd44e1a (patch) | |
| tree | c010d3f02beaec29741b723a1bc6e7eaad59e193 /azalea/examples/mine_a_chunk.rs | |
| parent | a9ff79a10553026b0fa32f0e31f1e0442467ca78 (diff) | |
| download | azalea-drasl-2eade86cf7a12a6ec64496aedbfc3d3a3bd44e1a.tar.xz | |
make `handle` cleaner
Arc<Event> -> Event, Arc<Mutex<State>> -> State
Items in State now need to have interior mutability (i.e. Arc<Mutex<T>>), but it's a worthwhile tradeoff since it allows the user to customize it for each field
Diffstat (limited to 'azalea/examples/mine_a_chunk.rs')
| -rw-r--r-- | azalea/examples/mine_a_chunk.rs | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/azalea/examples/mine_a_chunk.rs b/azalea/examples/mine_a_chunk.rs index bc576513..5f1dabe1 100644 --- a/azalea/examples/mine_a_chunk.rs +++ b/azalea/examples/mine_a_chunk.rs @@ -1,4 +1,4 @@ -use azalea::{pathfinder, Account, Accounts, Client, Event}; +use azalea::{pathfinder, Account, Accounts, Client, Event, Swarm}; use parking_lot::Mutex; use std::sync::Arc; @@ -7,31 +7,31 @@ async fn main() { let accounts = Accounts::new(); for i in 0..10 { - accounts.add(Account::offline(format!("bot{}", i))); + accounts.add(Account::offline(&format!("bot{}", i))); } - azalea::start_group(azalea::GroupOptions { + azalea::start_swarm(azalea::SwarmOptions { accounts, address: "localhost", - group_state: Arc::new(Mutex::new(State::default())), + swarm_state: Arc::new(Mutex::new(State::default())), state: State::default(), - group_plugins: vec![Arc::new(pathfinder::Plugin::default())], + swarm_plugins: vec![Arc::new(pathfinder::Plugin::default())], plugins: vec![], handle: Box::new(handle), - group_handle: Box::new(handle), + swarm_handle: Box::new(swarm_handle), }) .await .unwrap(); } -#[derive(Default)] +#[derive(Default, Clone)] struct State {} -#[derive(Default)] -struct GroupState {} +#[derive(Default, Clone)] +struct SwarmState {} async fn handle(bot: Client, event: Arc<Event>, state: Arc<Mutex<State>>) -> anyhow::Result<()> { match event { @@ -41,26 +41,27 @@ async fn handle(bot: Client, event: Arc<Event>, state: Arc<Mutex<State>>) -> any Ok(()) } -async fn group_handle( - bots: Swarm, +async fn swarm_handle( + swarm: Swarm, event: Arc<Event>, - state: Arc<Mutex<GroupState>>, + state: Arc<Mutex<SwarmState>>, ) -> anyhow::Result<()> { match *event { Event::Login => { - bots.goto(azalea::BlockPos::new(0, 70, 0)).await; + swarm.goto(azalea::BlockPos::new(0, 70, 0)).await; // or bots.goto_goal(pathfinder::Goals::Goto(azalea::BlockPos(0, 70, 0))).await; // destroy the blocks in this area and then leave - bots.fill( - azalea::Selection::Range( - azalea::BlockPos::new(0, 0, 0), - azalea::BlockPos::new(16, 255, 16), - ), - azalea::block::Air, - ) - .await; + swarm + .fill( + azalea::Selection::Range( + azalea::BlockPos::new(0, 0, 0), + azalea::BlockPos::new(16, 255, 16), + ), + azalea::block::Air, + ) + .await; } _ => {} } |
