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
63
64
65
66
|
use mt_net::{ReceiverExt, SenderExt, ToCltPkt, ToSrvPkt};
#[tokio::main]
async fn main() {
let (tx, mut rx, worker) = mt_net::connect(&std::env::args().nth(1).expect("missing argument"))
.await
.unwrap();
let mut auth = mt_auth::Auth::new(tx.clone(), "texmodbot", "owo", "en_US");
let worker = tokio::spawn(worker.run());
loop {
tokio::select! {
pkt = rx.recv() => match pkt {
None => break,
Some(Err(e)) => eprintln!("{e}"),
Some(Ok(pkt)) => {
use ToCltPkt::*;
auth.handle_pkt(&pkt).await;
match pkt {
NodeDefs(defs) => {
defs.0
.values()
.flat_map(|def| {
std::iter::empty()
.chain(&def.tiles)
.chain(&def.special_tiles)
.chain(&def.overlay_tiles)
})
.map(|tile| &tile.texture.name)
.for_each(|texture| {
if !texture.is_empty() {
println!("{texture}");
}
});
}
Kick(reason) => {
eprintln!("kicked: {reason}");
}
_ => {}
}
}
},
_ = auth.poll() => {
tx
.send(&ToSrvPkt::CltReady {
major: 0,
minor: 0,
patch: 0,
reserved: 0,
version: "https://github.com/LizzyFleckenstein03/texmodbot".into(),
formspec: 4,
})
.await
.unwrap();
},
_ = tokio::signal::ctrl_c() => {
tx.close();
}
}
}
worker.await.unwrap();
}
|