Lightyear setup (#55)
This commit is contained in:
45
crates/server/src/server.rs
Normal file
45
crates/server/src/server.rs
Normal file
@@ -0,0 +1,45 @@
|
||||
use bevy::prelude::*;
|
||||
use lightyear::prelude::{
|
||||
server::{NetcodeConfig, NetcodeServer, ServerUdpIo},
|
||||
*,
|
||||
};
|
||||
use shared::utils::commands::IsServer;
|
||||
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
|
||||
|
||||
pub fn plugin(app: &mut App) {
|
||||
app.init_resource::<IsServer>();
|
||||
|
||||
app.add_systems(Startup, start_server);
|
||||
app.add_observer(handle_new_client);
|
||||
}
|
||||
|
||||
fn handle_new_client(
|
||||
trigger: Trigger<OnAdd, Connected>,
|
||||
mut commands: Commands,
|
||||
id: Query<&PeerAddr>,
|
||||
) -> Result {
|
||||
let id = id.get(trigger.target())?;
|
||||
|
||||
info!("Client connected on IP: {}", id.ip());
|
||||
|
||||
commands
|
||||
.entity(trigger.target())
|
||||
.insert(ReplicationSender::default());
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn start_server(mut commands: Commands) -> Result {
|
||||
let server_addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 25565);
|
||||
|
||||
commands
|
||||
.spawn((
|
||||
Name::from("Server"),
|
||||
LocalAddr(server_addr),
|
||||
ServerUdpIo::default(),
|
||||
NetcodeServer::new(NetcodeConfig::default()),
|
||||
))
|
||||
.trigger(server::Start);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user