blob: 0f3ea31a5ae588fd39c2a7d0c4903a793c619d86 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
use azalea_client::{Account, Event};
use azalea_core::PositionXYZ;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Hello, world!");
// let address = "95.111.249.143:10000";
let address = "localhost:25565";
// let response = azalea_client::ping::ping_server(&address.try_into().unwrap())
// .await
// .unwrap();
// println!("{}", response.description.to_ansi(None));
let account = Account::offline("bot");
let (mut client, mut rx) = account.join(&address.try_into().unwrap()).await.unwrap();
println!("connected");
while let Some(e) = &rx.recv().await {
match e {
// TODO: have a "loaded" or "ready" event that fires when all chunks are loaded
Event::Login => {}
// Event::GameTick => {
// let world = client.world();
// if let Some(b) = world.find_one_entity(|e| {
// e.uuid == uuid::uuid!("6536bfed-8695-48fd-83a1-ecd24cf2a0fd")
// }) {
// // let world = state.world.as_ref().unwrap();
// // world.
// println!("{:?}", b);
// }
// // world.get_block_state(state.player.entity.pos);
// // println!("{}", p.message.to_ansi(None));
// // if p.message.to_ansi(None) == "<py5> ok" {
// // let state = client.state.lock();
// // let world = state.world.as_ref().unwrap();
// // let c = world.get_block_state(&BlockPos::new(5, 78, -2)).unwrap();
// // println!("block state: {:?}", c);
// // }
// }
Event::Chat(_m) => {
let new_pos = {
let dimension_lock = client.dimension.lock().unwrap();
let dimension = dimension_lock.as_ref().unwrap();
let player = client.player.lock().unwrap();
let entity = player
.entity(dimension)
.expect("Player entity is not in world");
entity.pos().add_y(0.5)
};
println!("{:?}", new_pos);
client.move_to(new_pos).await.unwrap();
}
_ => {}
}
}
println!("done");
Ok(())
}
|