First commit: test to fill some area
[minecraft_maze.git] / src / main.rs
1 use std::{ fs::File, io::prelude::* };
2
3 use ron::{ de::from_reader, ser::{ to_string_pretty, PrettyConfig } };
4 use serde::{ Deserialize, Serialize };
5
6 #[derive(Clone)]
7 enum BlockType {
8 Empty,
9 Dirt,
10 }
11
12 mod consts {
13 pub const FILE_CONF: &str = "conf.ron";
14 }
15
16 #[derive(Debug, Deserialize, Serialize)]
17 struct Config {
18 #[serde(default = "empty_string")]
19 server_address: String,
20
21 #[serde(default = "empty_string")]
22 rcon_password: String,
23 }
24
25 fn empty_string() -> String { "".to_owned() }
26
27 impl Config {
28 fn default() -> Self {
29 Config { server_address: String::from("127.0.0.1"), rcon_password: String::from("") }
30 }
31 }
32
33 fn load_config() -> Config {
34 match File::open(consts::FILE_CONF) {
35 Ok(file) => from_reader(file).unwrap_or_else(|_| panic!("Failed to open configuration file {}", consts::FILE_CONF)),
36 Err(_) => {
37 let mut file = File::create(consts::FILE_CONF) .unwrap();
38 let default_config = Config::default();
39 file.write_all(to_string_pretty(&default_config, PrettyConfig::new()).unwrap().as_bytes()).unwrap(); // We do not use 'to_writer' because it can't pretty format the output.
40 default_config
41 }
42 }
43 }
44
45 fn main() {
46 println!("Minecraft generator");
47
48 let config = load_config();
49
50 let m = 5;
51 let n = 5;
52
53 let mut maze = vec![vec![BlockType::Dirt; n]; m];
54
55 let conf = load_config();
56
57 let mut client = minecraft_client_rs::Client::new(format!("{}:25575", config.server_address)).unwrap();
58
59 // List of block: https://minecraft-ids.grahamedgecombe.com/
60
61 match client.authenticate(conf.rcon_password) {
62 Ok(_) => {
63 //match client.send_command("fill 233 71 -241 233 71 -241 dirt replace".to_string()) {
64 match client.send_command("fill 233 70 -241 284 70 -289 air replace".to_string()) {
65 Ok(resp) =>
66 println!("Response: {}", resp.body),
67 Err(e) => {
68 println!("Error from 'list' command: {:?}", e);
69 },
70 }
71 },
72 Err(e) => {
73 println!("Authentication error: {:?}", e);
74 },
75 };
76
77 client.close().unwrap();
78 }