1 use std
::{ fs
::File
, io
::prelude
::* };
3 use ron
::{ de
::from_reader
, ser
::{ to_string_pretty
, PrettyConfig
} };
4 use serde
::{ Deserialize
, Serialize
};
13 pub const FILE_CONF
: &str = "conf.ron";
16 #[derive(Debug, Deserialize, Serialize)]
18 #[serde(default = "empty_string")]
19 server_address
: String
,
21 #[serde(default = "empty_string")]
22 rcon_password
: String
,
25 fn empty_string() -> String
{ "".to_owned() }
28 fn default() -> Self {
29 Config
{ server_address
: String
::from("127.0.0.1"), rcon_password
: String
::from("") }
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
)),
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.
46 println!("Minecraft generator");
48 let config
= load_config();
53 let mut maze
= vec
![vec
![BlockType
::Dirt
; n
]; m
];
55 let conf
= load_config();
57 let mut client
= minecraft_client_rs
::Client
::new(format!("{}:25575", config
.server_address
)).unwrap();
59 // List of block: https://minecraft-ids.grahamedgecombe.com/
61 match client
.authenticate(conf
.rcon_password
) {
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()) {
66 println!("Response: {}", resp
.body
),
68 println!("Error from 'list' command: {:?}", e
);
73 println!("Authentication error: {:?}", e
);
77 client
.close().unwrap();