quectocraft/src/main.rs

62 lines
1.7 KiB
Rust

use std::borrow::Cow;
use std::time::Duration;
use std::io::Write;
use chrono::Utc;
use env_logger::Env;
use log::info;
use mlua::Lua;
use network::NetworkServer;
use plugins::Plugins;
mod plugins;
mod protocol;
mod network;
pub const VERSION: &'static str = std::env!("CARGO_PKG_VERSION");
fn main() {
env_logger::Builder::from_env(
Env::default().default_filter_or("info")
).format(|buf, record| {
let now = Utc::now().format("%Y-%m-%d %H:%M:%S");
let mut target = Cow::Borrowed(record.target());
if target.starts_with("quectocraft") {
target = Cow::Owned(record.target().replacen("quectocraft", "qc", 1));
}
let color = match record.level() {
log::Level::Error => "\x1b[31m",
log::Level::Warn => "\x1b[33m",
log::Level::Info => "\x1b[32m",
log::Level::Debug => "\x1b[37m",
log::Level::Trace => "\x1b[37m",
};
writeln!(buf, "\x1b[90m[\x1b[37m{} {color}{}\x1b[37m {}\x1b[90m]\x1b[0m {}", now, record.level(), target, record.args())
}).init();
info!("Starting Quectocraft version {}", VERSION);
let lua = Lua::new();
let mut plugins = Plugins::new(&lua).expect("Error initializing lua environment");
std::fs::create_dir_all("plugins").expect("Couldn't create the plugins directory");
plugins.load_plugins();
let mut server = NetworkServer::new("127.0.0.1:25565".to_owned(), plugins);
let sleep_dur = Duration::from_millis(5);
let mut i = 0;
loop {
server.get_new_clients();
server.handle_connections();
if i % 1024 == 0 {
server.send_keep_alive();
i = 0;
}
i += 1;
std::thread::sleep(sleep_dur);
}
}