graphite_minecraft 0.1.0

Library for crafting high-performance Minecraft servers
# Graphite

1.19.1 Minecraft Server

# TODO

- [ ] Complete `protocol` with all 1.19.1 Minecraft packets 
- [x] Command dispatch system
- [x] Viewable objects (entities)
- [x] Allow multiple players to connect (and see each other)
- [ ] Base lib crate that reexports everything
- [ ] ItemStacks with NBT
- [x] Player Input Handling (Left/Right Click Air/Block)
- [ ] TextComponent things & macro
- [ ] Allow chunk/world modification
- [ ] "Extras" subproject - raycasting, collision, ...

# Subprojects

- `example_server`: Example server using various Graphite components
- `server`: The minecraft server. Entities, chunks, players, all that good stuff
- `concierge`: Component that accepts new connections, handles status and login. Can be used to create proxies, servers, etc.
- `protocol`: The minecraft protocol
- `net`: Networking components and utilities
- `binary`: Zero-copy serialization
- `command`: Command dispatch and low-level creation
- `command_derive`: Attribute macro to easily create commands
- `sticky`: Collection(s) that guarantee the memory-location of its contents

# Warning

Project is currently under heavy development, many things are completely non-functional

# Building

Make sure to run `git submodule update --init --recursive` before building/running

# How to run the example server

!!! Currently Graphite only supports modern versions of Linux with io\_uring !!!  
(An alternative network backend will be available eventually, but is not a priority)  

```
$ cargo run --bin example_server
```