use std::sync::atomic::{AtomicBool, Ordering};
pub mod config;
pub mod net;
pub mod proto;
pub mod world;
pub mod chunk;
pub mod entity;
pub mod offline;
pub mod player;
pub mod command;
pub mod server;
static RUNNING: AtomicBool = AtomicBool::new(true);
pub fn main() {
init_tracing();
ctrlc::set_handler(|| RUNNING.store(false, Ordering::Relaxed)).unwrap();
let mut server = server::Server::bind("127.0.0.1:25565".parse().unwrap()).unwrap();
while RUNNING.load(Ordering::Relaxed) {
server.tick_padded().unwrap();
}
server.save();
}
fn init_tracing() {
use tracing_subscriber::util::SubscriberInitExt;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::EnvFilter;
use tracing_flame::FlameLayer;
let filter_layer = EnvFilter::try_from_default_env()
.or_else(|_| EnvFilter::try_new("debug"))
.unwrap();
let fmt_layer = tracing_subscriber::fmt::layer()
.with_target(false);
let (flame_layer, _) = FlameLayer::with_file("./tracing.folded").unwrap();
let flame_layer = flame_layer.with_file_and_line(false);
tracing_subscriber::registry()
.with(filter_layer)
.with(fmt_layer)
.with(flame_layer)
.init();
}