#minecraft-server #graphite-minecraft #binary #serialization #binary-encoding #guarantees #19

graphite_binary

Efficient binary serialization for the graphite_minecraft project

1 unstable release

0.1.0 Sep 11, 2022

#2156 in Encoding

Download history 30/week @ 2024-07-22 26/week @ 2024-07-29 30/week @ 2024-08-05 21/week @ 2024-08-12 23/week @ 2024-08-19 25/week @ 2024-08-26 21/week @ 2024-09-02 28/week @ 2024-09-09 26/week @ 2024-09-16 41/week @ 2024-09-23 21/week @ 2024-09-30 1/week @ 2024-10-07 26/week @ 2024-10-14 8/week @ 2024-10-21 14/week @ 2024-10-28 21/week @ 2024-11-04

69 downloads per month
Used in 11 crates (9 directly)

Apache-2.0

76KB
2K SLoC

Graphite -- CURRENTLY ON HIATUS

1.19.1 Minecraft Server

TODO

  • Complete protocol with all 1.19.1 Minecraft packets
  • Command dispatch system
  • Viewable objects (entities)
  • Allow multiple players to connect (and see each other)
  • Base lib crate that reexports everything
  • ItemStacks with NBT
  • Add layer for modifying the NBT of items easily
  • Player Input Handling (Left/Right Click Air/Block)
  • TextComponent things & macro
  • Allow chunk/world modification
  • Complete missing block placement (walls, double blocks, candles, etc.)
  • "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

Dependencies

~0.5–1MB
~21K SLoC