From 253ab0802ad781f588f8851ab17b0c6e46f1b4ca Mon Sep 17 00:00:00 2001 From: Garen Tyler Date: Mon, 1 Mar 2021 19:34:55 -0700 Subject: [PATCH] Restructure --- output.log | 15 +++++++++ src/entity/mod.rs | 1 + src/lib.rs | 32 +++++++++++++++++++ src/main.rs | 34 ++------------------- src/mctypes.rs | 8 ++--- src/server/mod.rs | 5 ++- src/{ => server}/net/mod.rs | 8 ++--- src/{ => server}/net/packets/clientbound.rs | 0 src/{ => server}/net/packets/mod.rs | 0 src/{ => server}/net/packets/serverbound.rs | 0 src/world/mod.rs | 1 + 11 files changed, 62 insertions(+), 42 deletions(-) create mode 100644 src/entity/mod.rs create mode 100644 src/lib.rs rename src/{ => server}/net/mod.rs (97%) rename src/{ => server}/net/packets/clientbound.rs (100%) rename src/{ => server}/net/packets/mod.rs (100%) rename src/{ => server}/net/packets/serverbound.rs (100%) create mode 100644 src/world/mod.rs diff --git a/output.log b/output.log index ef12edb..5657d0b 100644 --- a/output.log +++ b/output.log @@ -1,3 +1,18 @@ [2020-12-17 19:37:46][Composition][INFO] Starting server... [2020-12-17 19:37:46][Composition::net][INFO] Network server started! [2020-12-17 19:37:46][Composition][INFO] Done! Start took 1.175717ms +[2021-03-01 19:29:47][composition][INFO] Starting server... +[2021-03-01 19:29:47][composition::server::net][INFO] Network server started! +[2021-03-01 19:29:47][composition][INFO] Done! Start took 899.375µs +[2021-03-01 19:32:40][composition][INFO] Starting server... +[2021-03-01 19:32:40][composition::server::net][INFO] Network server started! +[2021-03-01 19:32:40][composition][INFO] Done! Start took 916.834µs +[2021-03-01 19:32:52][composition][INFO] Starting server... +[2021-03-01 19:32:52][composition::server::net][INFO] Network server started! +[2021-03-01 19:32:52][composition][INFO] Done! Start took 943.171µs +[2021-03-01 19:33:27][composition][INFO] Starting server... +[2021-03-01 19:33:27][composition::server::net][INFO] Network server started! +[2021-03-01 19:33:27][composition][INFO] Done! Start took 845.987µs +[2021-03-01 19:33:44][composition][INFO] Starting server... +[2021-03-01 19:33:44][composition::server::net][INFO] Network server started! +[2021-03-01 19:33:44][composition][INFO] Done! Start took 715.677µs diff --git a/src/entity/mod.rs b/src/entity/mod.rs new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/entity/mod.rs @@ -0,0 +1 @@ + diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..5486b09 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,32 @@ +pub mod entity; +pub mod mctypes; +pub mod server; +pub mod world; + +pub use mctypes::*; + +pub fn init() { + // Set up fern logging. + fern::Dispatch::new() + .format(move |out, message, record| { + out.finish(format_args!( + "[{date}][{target}][{level}] {message}", + date = chrono::Local::now().format("%Y-%m-%d %H:%M:%S"), + target = record.target(), + level = record.level(), + message = message, + )) + }) + .level(log::LevelFilter::Debug) + .chain(std::io::stdout()) + .chain(fern::log_file("output.log").unwrap()) + .apply() + .unwrap(); +} + +pub fn start_server() -> server::GameServer { + // Start the network. + let network = server::net::NetworkServer::new("0.0.0.0:25565"); + let server = server::GameServer { network: network }; + server +} diff --git a/src/main.rs b/src/main.rs index 9efe440..65c1c21 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,39 +1,11 @@ -#![allow(unused_imports)] -#![allow(non_snake_case)] - -pub mod mctypes; -pub mod net; -pub mod server; - -use log::{debug, error, info, warn}; -use net::NetworkServer; -use server::GameServer; +use log::info; use std::time::{Duration, Instant}; pub fn main() { let start_time = Instant::now(); - - // Set up fern logging. - fern::Dispatch::new() - .format(move |out, message, record| { - out.finish(format_args!( - "[{date}][{target}][{level}] {message}", - date = chrono::Local::now().format("%Y-%m-%d %H:%M:%S"), - target = record.target(), - level = record.level(), - message = message, - )) - }) - .level(log::LevelFilter::Debug) - .chain(std::io::stdout()) - .chain(fern::log_file("output.log").unwrap()) - .apply() - .unwrap(); + composition::init(); info!("Starting server..."); - - // Start the network. - let network = NetworkServer::new("0.0.0.0:25565"); - let mut server = GameServer { network: network }; + let mut server = composition::start_server(); info!("Done! Start took {:?}", start_time.elapsed()); // The main server loop. diff --git a/src/mctypes.rs b/src/mctypes.rs index b02671e..68371f3 100644 --- a/src/mctypes.rs +++ b/src/mctypes.rs @@ -1012,7 +1012,7 @@ pub mod numbers { } impl MCType for MCVarInt { fn read(t: &mut TcpStream) -> std::io::Result { - let mut numRead = 0; + let mut num_read = 0; let mut result = 0i32; let mut read = 0u8; let mut run_once = false; @@ -1020,9 +1020,9 @@ pub mod numbers { run_once = true; read = read_byte(t)?; let value = (read & 0b01111111) as i32; - result |= value << (7 * numRead); - numRead += 1; - if numRead > 5 { + result |= value << (7 * num_read); + num_read += 1; + if num_read > 5 { return Err(io_error("MCVarInt is too big")); } } diff --git a/src/server/mod.rs b/src/server/mod.rs index a9a4333..dd083b1 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -1,8 +1,7 @@ -use crate::net::{NetworkClient, NetworkClientState, NetworkServer}; -use log::{debug, error, info, warn}; +pub mod net; pub struct GameServer { - pub network: NetworkServer, + pub network: net::NetworkServer, } impl GameServer { pub fn update(&mut self) { diff --git a/src/net/mod.rs b/src/server/net/mod.rs similarity index 97% rename from src/net/mod.rs rename to src/server/net/mod.rs index df6af22..18a085a 100644 --- a/src/net/mod.rs +++ b/src/server/net/mod.rs @@ -1,11 +1,11 @@ pub mod packets; use crate::mctypes::*; -use log::{debug, error, info, warn}; +use log::{debug, info}; use packets::*; -use std::net::{TcpListener, TcpStream, ToSocketAddrs}; -use std::sync::mpsc::{self, Receiver, Sender, TryRecvError}; use serde_json::json; +use std::net::{TcpListener, TcpStream, ToSocketAddrs}; +use std::sync::mpsc::{self, Receiver, TryRecvError}; pub struct NetworkServer { pub clients: Vec, @@ -114,7 +114,7 @@ impl NetworkClient { "description": { "text": "Hello world!" }, - "favicon": format!("data:image/png;base64,{}", radix64::STD.encode(include_bytes!("../server-icon.png"))) + "favicon": format!("data:image/png;base64,{}", radix64::STD.encode(include_bytes!("../../server-icon.png"))) }).to_string().into(); statusresponse.write(&mut self.stream).unwrap(); debug!("Sending status response: StatusResponse"); diff --git a/src/net/packets/clientbound.rs b/src/server/net/packets/clientbound.rs similarity index 100% rename from src/net/packets/clientbound.rs rename to src/server/net/packets/clientbound.rs diff --git a/src/net/packets/mod.rs b/src/server/net/packets/mod.rs similarity index 100% rename from src/net/packets/mod.rs rename to src/server/net/packets/mod.rs diff --git a/src/net/packets/serverbound.rs b/src/server/net/packets/serverbound.rs similarity index 100% rename from src/net/packets/serverbound.rs rename to src/server/net/packets/serverbound.rs diff --git a/src/world/mod.rs b/src/world/mod.rs new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/world/mod.rs @@ -0,0 +1 @@ +