Restructure

This commit is contained in:
Garen Tyler 2021-03-01 19:34:55 -07:00
parent 737a1de7af
commit 253ab0802a
11 changed files with 62 additions and 42 deletions

View File

@ -1,3 +1,18 @@
[2020-12-17 19:37:46][Composition][INFO] Starting server... [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::net][INFO] Network server started!
[2020-12-17 19:37:46][Composition][INFO] Done! Start took 1.175717ms [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

1
src/entity/mod.rs Normal file
View File

@ -0,0 +1 @@

32
src/lib.rs Normal file
View File

@ -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
}

View File

@ -1,39 +1,11 @@
#![allow(unused_imports)] use log::info;
#![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 std::time::{Duration, Instant}; use std::time::{Duration, Instant};
pub fn main() { pub fn main() {
let start_time = Instant::now(); let start_time = Instant::now();
composition::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();
info!("Starting server..."); info!("Starting server...");
let mut server = composition::start_server();
// Start the network.
let network = NetworkServer::new("0.0.0.0:25565");
let mut server = GameServer { network: network };
info!("Done! Start took {:?}", start_time.elapsed()); info!("Done! Start took {:?}", start_time.elapsed());
// The main server loop. // The main server loop.

View File

@ -1012,7 +1012,7 @@ pub mod numbers {
} }
impl MCType for MCVarInt { impl MCType for MCVarInt {
fn read(t: &mut TcpStream) -> std::io::Result<Self> { fn read(t: &mut TcpStream) -> std::io::Result<Self> {
let mut numRead = 0; let mut num_read = 0;
let mut result = 0i32; let mut result = 0i32;
let mut read = 0u8; let mut read = 0u8;
let mut run_once = false; let mut run_once = false;
@ -1020,9 +1020,9 @@ pub mod numbers {
run_once = true; run_once = true;
read = read_byte(t)?; read = read_byte(t)?;
let value = (read & 0b01111111) as i32; let value = (read & 0b01111111) as i32;
result |= value << (7 * numRead); result |= value << (7 * num_read);
numRead += 1; num_read += 1;
if numRead > 5 { if num_read > 5 {
return Err(io_error("MCVarInt is too big")); return Err(io_error("MCVarInt is too big"));
} }
} }

View File

@ -1,8 +1,7 @@
use crate::net::{NetworkClient, NetworkClientState, NetworkServer}; pub mod net;
use log::{debug, error, info, warn};
pub struct GameServer { pub struct GameServer {
pub network: NetworkServer, pub network: net::NetworkServer,
} }
impl GameServer { impl GameServer {
pub fn update(&mut self) { pub fn update(&mut self) {

View File

@ -1,11 +1,11 @@
pub mod packets; pub mod packets;
use crate::mctypes::*; use crate::mctypes::*;
use log::{debug, error, info, warn}; use log::{debug, info};
use packets::*; use packets::*;
use std::net::{TcpListener, TcpStream, ToSocketAddrs};
use std::sync::mpsc::{self, Receiver, Sender, TryRecvError};
use serde_json::json; use serde_json::json;
use std::net::{TcpListener, TcpStream, ToSocketAddrs};
use std::sync::mpsc::{self, Receiver, TryRecvError};
pub struct NetworkServer { pub struct NetworkServer {
pub clients: Vec<NetworkClient>, pub clients: Vec<NetworkClient>,
@ -114,7 +114,7 @@ impl NetworkClient {
"description": { "description": {
"text": "Hello world!" "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(); }).to_string().into();
statusresponse.write(&mut self.stream).unwrap(); statusresponse.write(&mut self.stream).unwrap();
debug!("Sending status response: StatusResponse"); debug!("Sending status response: StatusResponse");

1
src/world/mod.rs Normal file
View File

@ -0,0 +1 @@