mirror of
https://github.com/italicsjenga/valence.git
synced 2024-12-23 14:31:30 +11:00
Add a null state to some IDs
This commit is contained in:
parent
622f15e71d
commit
04ce5366c8
|
@ -86,8 +86,13 @@ impl Clients {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Debug)]
|
||||
pub struct ClientId(Key);
|
||||
|
||||
impl ClientId {
|
||||
pub const NULL: Self = Self(Key::NULL);
|
||||
}
|
||||
|
||||
/// Represents a client connected to the server after logging in.
|
||||
pub struct Client {
|
||||
/// Setting this to `None` disconnects the client.
|
||||
|
@ -98,8 +103,8 @@ pub struct Client {
|
|||
uuid: Uuid,
|
||||
username: String,
|
||||
textures: Option<SignedPlayerTextures>,
|
||||
new_world: Option<WorldId>,
|
||||
old_world: Option<WorldId>,
|
||||
new_world: WorldId,
|
||||
old_world: WorldId,
|
||||
on_ground: bool,
|
||||
new_position: Vec3<f64>,
|
||||
old_position: Vec3<f64>,
|
||||
|
@ -157,8 +162,8 @@ impl Client {
|
|||
uuid: ncd.uuid,
|
||||
username: ncd.username,
|
||||
textures: ncd.textures,
|
||||
new_world: None,
|
||||
old_world: None,
|
||||
new_world: WorldId::default(),
|
||||
old_world: WorldId::default(),
|
||||
on_ground: false,
|
||||
new_position: Vec3::default(),
|
||||
old_position: Vec3::default(),
|
||||
|
@ -203,12 +208,12 @@ impl Client {
|
|||
self.textures.as_ref()
|
||||
}
|
||||
|
||||
pub fn world(&self) -> Option<WorldId> {
|
||||
pub fn world(&self) -> WorldId {
|
||||
self.new_world
|
||||
}
|
||||
|
||||
pub fn set_world(&mut self, world: WorldId) {
|
||||
self.new_world = Some(world);
|
||||
self.new_world = world;
|
||||
}
|
||||
|
||||
/// Sends a system message to the player.
|
||||
|
@ -573,7 +578,7 @@ impl Client {
|
|||
return;
|
||||
}
|
||||
|
||||
let world = match self.new_world.and_then(|id| worlds.get(id)) {
|
||||
let world = match worlds.get(self.new_world) {
|
||||
Some(world) => world,
|
||||
None => {
|
||||
log::warn!(
|
||||
|
|
|
@ -164,10 +164,12 @@ impl Entities {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
|
||||
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Debug)]
|
||||
pub struct EntityId(Key);
|
||||
|
||||
impl EntityId {
|
||||
pub const NULL: Self = Self(Key::NULL);
|
||||
|
||||
pub(crate) fn to_network_id(self) -> i32 {
|
||||
self.0.version().get() as i32
|
||||
}
|
||||
|
|
|
@ -23,6 +23,22 @@ pub struct Key {
|
|||
version: NonZeroU32,
|
||||
}
|
||||
|
||||
impl Key {
|
||||
pub const NULL: Self = Self {
|
||||
index: u32::MAX,
|
||||
version: match NonZeroU32::new(u32::MAX) {
|
||||
Some(n) => n,
|
||||
None => unreachable!(),
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
impl Default for Key {
|
||||
fn default() -> Self {
|
||||
Self::NULL
|
||||
}
|
||||
}
|
||||
|
||||
impl Key {
|
||||
pub fn new(index: u32, version: NonZeroU32) -> Self {
|
||||
Self { index, version }
|
||||
|
|
|
@ -11,9 +11,13 @@ pub struct Worlds {
|
|||
server: SharedServer,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
|
||||
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Debug)]
|
||||
pub struct WorldId(Key);
|
||||
|
||||
impl WorldId {
|
||||
pub const NULL: Self = Self(Key::NULL);
|
||||
}
|
||||
|
||||
impl Worlds {
|
||||
pub(crate) fn new(server: SharedServer) -> Self {
|
||||
Self {
|
||||
|
|
Loading…
Reference in a new issue