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");
}