1.19.1 high-performance Minecraft server

Related tags

Games Graphite
Overview

Graphite

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
  • 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

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
Comments
  • no readme

    no readme

    a README.md is a great way to tell people what the heck your project is, how to help build it, and how to test what you’ve made. once you’re at the point where others can help, i’d highly recommend making one

    opened by ryleu 3
  • Rewrite it in rust

    Rewrite it in rust

    Rust is blazingly fast and memory-efficient: with no runtime or garbage collector, it can power performance-critical services, run on embedded devices, and easily integrate with other languages.

    Rust’s rich type system and ownership model guarantee memory-safety and thread-safety — enabling you to eliminate many classes of bugs at compile-time.

    Rust has great documentation, a friendly compiler with useful error messages, and top-notch tooling — an integrated package manager and build tool, smart multi-editor support with auto-completion and type inspections, an auto-formatter, and more.

    opened by SuperCuber 1
  • Replace `serde_nbt` with `valence_nbt` in the benchmarks

    Replace `serde_nbt` with `valence_nbt` in the benchmarks

    valence_nbt supersedes serde_nbt.

    Results from my computer

    graphite_parse_bigtest  time:   [1.6939 µs]
    valence_parse_bigtest   time:   [2.7973 µs]
    quartz_parse_bigtest    time:   [3.5792 µs]
    
    graphite_write_bigtest  time:   [493.81 ns]
    valence_write_bigtest   time:   [970.85 ns]
    quartz_write_bigtest    time:   [929.17 ns]
    
    graphite_find_bigtest   time:   [23.825 ns]
    valence_find_bigtest    time:   [59.474 ns]
    quartz_find_bigtest     time:   [50.074 ns]
    
    opened by rj00a 0
  • Potential OOM bug/exploit in graphite NBT

    Potential OOM bug/exploit in graphite NBT

    In crates/graphite_binary/src/nbt/decode.rs the read_list function uses Vec::with_capacity(length as _). However, length has no upper bound. I believe malicious input could potentially allocate i32::MAX * sizeof(usize) bytes.

    The other read functions are correctly bounded.

    opened by rj00a 0
  • Transmute between `Vec` types in graphite NBT

    Transmute between `Vec` types in graphite NBT

    In crates/graphite_binary/src/nbt/decode.rs there is this

    let vec: Vec<u8> = arr_bytes.into();
    Ok(unsafe { std::mem::transmute(vec) })
    

    Transmuting between Vec types is incorrect because #[repr(Rust)] types make no guarantee about their layout. The Rustonomicon has this to say:

    So how do you know if the layouts are the same? For repr(C) types and repr(transparent) types, layout is precisely defined. But for your run-of-the-mill repr(Rust), it is not. Even different instances of the same generic type can have wildly different layout. Vec<i32> and Vec<u32> might have their fields in the same order, or they might not. The details of what exactly is and is not guaranteed for data layout are still being worked out over at the UCG WG.

    opened by rj00a 0
Owner
null
1.19.1 high-performance Minecraft server

Graphite 1.19.1 Minecraft Server TODO Complete protocol with all 1.19.1 Minecraft packets Command dispatch system Viewable objects (entities) Allow mu

null 119 Sep 12, 2022
A high-performance, high-reliability observability data pipeline.

Quickstart • Docs • Guides • Integrations • Chat • Download What is Vector? Vector is a high-performance, end-to-end (agent & aggregator) observabilit

Timber 11.2k Sep 17, 2022
A simple scanner that loops through ips and checks if a minecraft server is running on port 25565

scanolotl Scanolotl is a simple scanner that loops through ips and checks if a minecraft server is running on port 25565. Scanolotl can also preform a

JustFr33z 3 Jul 28, 2022
Automatically download minecraft server jars in one line

MCDL Automatically download minecraft server jars in one line (or one click) Installation Download (Windows, Linux) Install via cargo: cargo install m

Isaac Hirschfeld 1 Oct 26, 2021
💤 Put your Minecraft server to rest when idle.

?? Put your Minecraft server to rest when idle.

Tim Visée 262 Sep 10, 2022
A simple, very minimal Minecraft server implementation in Rust.

A simple, very minimal Minecraft server implementation in Rust. For a simple Minecraft server that isn't supposed to do much (for example, a limbo ser

Chris 7 Aug 17, 2022
ULE - Minecraft's server core written in Rust

ULE - Minecraft's server core written in Rust This's server core fully written in Rust-Lang and using more custom code for best perfomance and control

null 11 Jul 16, 2022
This is a Minecraft Classic server written in Rust powered by tokio and classicl.

classicl_server Introduction This is a Minecraft Classic server written in Rust powered by tokio and classicl. Installation Cargo The project can be i

null 2 Aug 17, 2022
kytan: High Performance Peer-to-Peer VPN in Rust

kytan: High Performance Peer-to-Peer VPN kytan is a high performance peer to peer VPN written in Rust. The goal is to to minimize the hassle of config

Chang Lan 343 Sep 5, 2022
A high performance blockchain kernel for enterprise users.

English | 简体中文 What is CITA CITA is a fast and scalable blockchain kernel for enterprises. CITA supports both native contract and EVM contract, by whi

CITAHub 1.3k Sep 14, 2022
High performance and distributed KV store w/ REST API. 🦀

About Lucid KV High performance and distributed KV store w/ REST API. ?? Introduction Lucid is an high performance, secure and distributed key-value s

Lucid ᵏᵛ 284 Sep 20, 2022
A high-performance observability data pipeline.

Get Started • Docs • Guides • Integrations • Chat • Download What is Vector? Vector is a high-performance, end-to-end (agent & aggregator) observabili

Timber 11.2k Sep 20, 2022
High-performance runtime for data analytics applications

Weld Documentation Weld is a language and runtime for improving the performance of data-intensive applications. It optimizes across libraries and func

Weld 2.8k Sep 16, 2022
Rust high performance xml reader and writer

quick-xml High performance xml pull reader/writer. The reader: is almost zero-copy (use of Cow whenever possible) is easy on memory allocation (the AP

Johann Tuffe 746 Sep 26, 2022
High-performance browser-grade HTML5 parser

html5ever API Documentation html5ever is an HTML parser developed as part of the Servo project. It can parse and serialize HTML according to the WHATW

Servo 1.6k Sep 14, 2022
High performance Rust ECS library

Legion aims to be a feature rich high performance Entity component system (ECS) library for Rust game projects with minimal boilerplate. Getting Start

Amethyst Engine 1.4k Sep 20, 2022
High-performance log search engine.

NOTE: This project is under development, please do not depend on it yet as things may break. MinSQL MinSQL is a log search engine designed with simpli

High Performance, Kubernetes Native Object Storage 359 Sep 5, 2022
An extremely high performance matching engine written in Rust.

Galois Introduction Galois is an extremely high performance matching engine written in Rust, typically used for the crypto currency exchange service.

UINB Tech 60 Aug 17, 2022
High-performance link shortener

shorty High-performance link shortener written in Rust ?? Hosting In addition to being easy to build from source, shorty is available as a Docker imag

Caleb Denio 42 Jun 7, 2022
High-performance runtime for data analytics applications

Weld Documentation Weld is a language and runtime for improving the performance of data-intensive applications. It optimizes across libraries and func

Weld 2.8k Sep 22, 2022