From 11024a856fd2399aa61631756093d5e49c8a4c43 Mon Sep 17 00:00:00 2001 From: Garen Tyler Date: Wed, 3 May 2023 21:56:07 -0600 Subject: [PATCH] Update README and add feature "update_1_20" to main crate --- Cargo.toml | 4 ++++ README.md | 29 +++++++++++++++++++++----- crates/composition-protocol/Cargo.toml | 8 +++---- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 3091b55..51b5ddf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,6 +24,10 @@ description = "An extremely fast Minecraft server" license = "MIT" build = "build.rs" +[features] +default = [] +update_1_20 = ["composition-protocol/update_1_20"] + [dependencies] base64 = "0.21.0" clap = { version = "4.2.7", features = ["derive"] } diff --git a/README.md b/README.md index 2f19222..bb1c464 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,39 @@ # Composition Composition is a new Minecraft server written from the ground-up in Rust. -Composition is targeting Minecraft version 1.19.3, protocol version 761. +Composition is targeting Minecraft version 1.19.4, protocol version 762. The main goal is to get a working server, then optimize for speed (multi-threading/kubernetes/etc). +## Features +- [x] Server status (favicon included) +- [ ] Authentication +- [ ] Encryption/compression +- [ ] Flat world generation +- [ ] More complex world generation +- [ ] Chat +- [ ] Player movement +- [ ] Collisions +- [ ] World updates (placing/breaking blocks) +- [ ] World saving (probably custom format) +- [ ] Entities +- [ ] Items and inventory +- [ ] Crafting +- [ ] Commands & console input +- [ ] Plugins ([WASM](https://webassembly.org/)) +- [ ] Future ideas (k8s, mods, anti-cheat, etc.) + ## Project Structure Composition is broken up into multiple crates to speed up build times and improve modularity. -- `src/main.rs` is a wrapper around `composition-core` that sets up logging among other things. +- `src/main.rs` implements the main server logic, such as handling clients and loading world chunks. + It also sets up logging and loads the main configuration. This is the main binary that is exported with `cargo build`. -- `composition-core` implements the main server logic, such as handling clients and loading world chunks. -- `composition-protocol` handles the types and packets needed for network communication. +- `composition-protocol` handles the types and packets needed for network communication as well as general Minecraft types, such as entities, items, and blocks. The library was designed to be able to used by anyone looking to implement a Minecraft server. -- `composition-config` handles the server configuration files and command line argument parsing. +- `composition-world` generates the world and updates the entities and blocks within it. In the future, the world might be extracted into its own server so that multiple "server cores" can process players on the same world. ## Useful Resources - [Protocol Specification](https://wiki.vg/Protocol) - [Normal Login Sequence](https://wiki.vg/Protocol_FAQ#What.27s_the_normal_login_sequence_for_a_client.3F) - [Server Ping](https://wiki.vg/Server_List_Ping) - [Map Format](https://wiki.vg/Map_Format) + diff --git a/crates/composition-protocol/Cargo.toml b/crates/composition-protocol/Cargo.toml index 582de1f..1199b1a 100644 --- a/crates/composition-protocol/Cargo.toml +++ b/crates/composition-protocol/Cargo.toml @@ -6,6 +6,10 @@ authors = ["Garen Tyler "] description = "The Minecraft protocol implemented in a network-agnostic way" license = "MIT" +[features] +default = [] +update_1_20 = [] + [dependencies] anyhow = { workspace = true } byteorder = { workspace = true } @@ -13,7 +17,3 @@ composition-parsing = { workspace = true } serde = { workspace = true } thiserror = { workspace = true } tracing = { workspace = true } - -[features] -default = [] -update_1_20 = []