deepslate 0.1.0

A high-performance Minecraft server proxy written in Rust.
Documentation

A high-performance Minecraft server proxy written in Rust.

This crate can be used as a library to build a custom proxy binary with compile-time plugins, or as a dependency of the default deepslate binary.

Usage as a library

use deepslate::Proxy;
use deepslate::event::*;
use deepslate::event::events::*;

struct LobbyPlugin;

impl Plugin for LobbyPlugin {
    fn register(&self, events: &mut EventManager) {
        events.subscribe::<ChooseServerEvent>(PostOrder::NORMAL, |event| {
            event.set_result(ChooseServerResult::Override("lobby".into()));
        });

        events.subscribe::<LoginEvent>(PostOrder::NORMAL, |event| {
            println!("Player logging in: {}", event.player.profile.name);
        });
    }
}

#[tokio::main]
async fn main() {
    let proxy = Proxy::builder()
        .forwarding_secret("your-secret")
        .server("lobby", "127.0.0.1:25566")
        .try_servers(["lobby"])
        .plugin(LobbyPlugin)
        .build()
        .expect("failed to build proxy");
    proxy.run().await.expect("proxy error");
}