aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/craft_dig_straight_down.rs6
-rw-r--r--examples/pvp.rs33
2 files changed, 36 insertions, 3 deletions
diff --git a/examples/craft_dig_straight_down.rs b/examples/craft_dig_straight_down.rs
index 1d1a89f6..54bf0015 100644
--- a/examples/craft_dig_straight_down.rs
+++ b/examples/craft_dig_straight_down.rs
@@ -8,12 +8,12 @@ bot.join("localhost".try_into().unwrap()).await.unwrap();
loop {
match bot.next().await {
Event::Message(m) {
- if m.username == bot.username { return };
+ if m.username == bot.player.username { return };
if m.message = "go" {
bot.goto_goal(
pathfinder::Goals::NearXZ(5, azalea::BlockXZ(0, 0))
).await;
- let chest = bot.open_chest(&bot.world.find_one_block(|b| b.id == "minecraft:chest")).await.unwrap();
+ let chest = bot.open_container(&bot.world.find_one_block(|b| b.id == "minecraft:chest")).await.unwrap();
bot.take_amount(&chest, 5, |i| i.id == "#minecraft:planks").await;
// when rust adds async drop this won't be necessary
chest.close().await;
@@ -25,7 +25,7 @@ loop {
bot.hold(&pickaxe);
loop {
- if let Err(e) = bot.dig(bot.feet_coords().down(1)).await {
+ if let Err(e) = bot.dig(bot.entity.feet_pos().down(1)).await {
println!("{:?}", e);
break;
}
diff --git a/examples/pvp.rs b/examples/pvp.rs
new file mode 100644
index 00000000..61382ecd
--- /dev/null
+++ b/examples/pvp.rs
@@ -0,0 +1,33 @@
+use azalea::{Account, Accounts, Event, pathfinder};
+
+#[tokio::main]
+async fn main() {
+ let accounts = Accounts::new();
+ for i in 0..10 {
+ accounts.add(Account::offline(format!("bot{}", i)));
+ }
+
+ let bots = accounts.join("localhost".try_into().unwrap()).await.unwrap();
+
+ match bots.next().await {
+ Event::Tick {
+ // choose an arbitrary player within render distance to target
+ if let Some(target) = bots.world.find_one_entity(|e| e.id == "minecraft:player") {
+ for bot in bots {
+ bot.tick_goto_goal(
+ pathfinder::Goals::Reach(target.bounding_box)
+ );
+ // if target.bounding_box.distance(bot.eyes) < bot.reach_distance() {
+ if bot.entity.can_reach(target.bounding_box) {
+ bot.swing();
+ }
+ if !h.using_held_item() && bot.state.lock().await.hunger <= 17 {
+ bot.hold(azalea::ItemGroup::Food);
+ tokio::task::spawn(bot.use_held_item());
+ }
+ }
+ }
+ },
+ _ => {}
+ }
+}