From 67fc80439d787a4ecc92d2e0e105e0f0723c26e3 Mon Sep 17 00:00:00 2001 From: Alexander Medvedev Date: Sat, 31 Jan 2026 13:57:26 +0100 Subject: [PATCH] fix: player count overflowing --- pumpkin-protocol/src/java/server/play/player_loaded.rs | 2 ++ pumpkin-protocol/src/java/server/play/player_position.rs | 3 ++- pumpkin-protocol/src/java/server/play/player_rotation.rs | 3 ++- pumpkin-protocol/src/java/server/play/swing_arm.rs | 4 ++-- pumpkin-protocol/src/java/server/play/use_item.rs | 4 ++-- pumpkin-protocol/src/java/server/play/use_item_on.rs | 4 ++-- pumpkin/src/server/connection_cache.rs | 4 ++-- 7 files changed, 14 insertions(+), 10 deletions(-) diff --git a/pumpkin-protocol/src/java/server/play/player_loaded.rs b/pumpkin-protocol/src/java/server/play/player_loaded.rs index 1ba7056f8..fd3d2587b 100644 --- a/pumpkin-protocol/src/java/server/play/player_loaded.rs +++ b/pumpkin-protocol/src/java/server/play/player_loaded.rs @@ -1,5 +1,7 @@ use pumpkin_data::packet::serverbound::PLAY_PLAYER_LOADED; use pumpkin_macros::java_packet; +use serde::{Deserialize, Serialize}; +#[derive(Serialize, Deserialize)] #[java_packet(PLAY_PLAYER_LOADED)] pub struct SPlayerLoaded; diff --git a/pumpkin-protocol/src/java/server/play/player_position.rs b/pumpkin-protocol/src/java/server/play/player_position.rs index f4e4a9028..d5c06ce98 100644 --- a/pumpkin-protocol/src/java/server/play/player_position.rs +++ b/pumpkin-protocol/src/java/server/play/player_position.rs @@ -1,8 +1,9 @@ use pumpkin_data::packet::serverbound::PLAY_MOVE_PLAYER_POS; use pumpkin_macros::java_packet; use pumpkin_util::math::vector3::Vector3; +use serde::{Deserialize, Serialize}; -#[derive(serde::Deserialize)] +#[derive(Deserialize, Serialize)] #[java_packet(PLAY_MOVE_PLAYER_POS)] pub struct SPlayerPosition { pub position: Vector3, diff --git a/pumpkin-protocol/src/java/server/play/player_rotation.rs b/pumpkin-protocol/src/java/server/play/player_rotation.rs index 01c95d067..802d4802a 100644 --- a/pumpkin-protocol/src/java/server/play/player_rotation.rs +++ b/pumpkin-protocol/src/java/server/play/player_rotation.rs @@ -1,7 +1,8 @@ use pumpkin_data::packet::serverbound::PLAY_MOVE_PLAYER_ROT; use pumpkin_macros::java_packet; +use serde::{Deserialize, Serialize}; -#[derive(serde::Deserialize)] +#[derive(Deserialize, Serialize)] #[java_packet(PLAY_MOVE_PLAYER_ROT)] pub struct SPlayerRotation { pub yaw: f32, diff --git a/pumpkin-protocol/src/java/server/play/swing_arm.rs b/pumpkin-protocol/src/java/server/play/swing_arm.rs index 4c6700c43..813ffb3ee 100644 --- a/pumpkin-protocol/src/java/server/play/swing_arm.rs +++ b/pumpkin-protocol/src/java/server/play/swing_arm.rs @@ -1,10 +1,10 @@ use pumpkin_data::packet::serverbound::PLAY_SWING; use pumpkin_macros::java_packet; -use serde::Serialize; +use serde::{Deserialize, Serialize}; use crate::VarInt; -#[derive(serde::Deserialize, Serialize)] +#[derive(Deserialize, Serialize)] #[java_packet(PLAY_SWING)] pub struct SSwingArm { pub hand: VarInt, diff --git a/pumpkin-protocol/src/java/server/play/use_item.rs b/pumpkin-protocol/src/java/server/play/use_item.rs index 8293b2b5c..38c8a936e 100644 --- a/pumpkin-protocol/src/java/server/play/use_item.rs +++ b/pumpkin-protocol/src/java/server/play/use_item.rs @@ -1,10 +1,10 @@ use pumpkin_data::packet::serverbound::PLAY_USE_ITEM; use pumpkin_macros::java_packet; -use serde::Deserialize; +use serde::{Deserialize, Serialize}; use crate::VarInt; -#[derive(Deserialize)] +#[derive(Deserialize, Serialize)] #[java_packet(PLAY_USE_ITEM)] pub struct SUseItem { // 0 for main hand, 1 for off hand diff --git a/pumpkin-protocol/src/java/server/play/use_item_on.rs b/pumpkin-protocol/src/java/server/play/use_item_on.rs index 14c6d7af2..9b23f9b79 100644 --- a/pumpkin-protocol/src/java/server/play/use_item_on.rs +++ b/pumpkin-protocol/src/java/server/play/use_item_on.rs @@ -1,11 +1,11 @@ use pumpkin_data::packet::serverbound::PLAY_USE_ITEM_ON; use pumpkin_macros::java_packet; use pumpkin_util::math::{position::BlockPos, vector3::Vector3}; -use serde::Deserialize; +use serde::{Deserialize, Serialize}; use crate::VarInt; -#[derive(Deserialize)] +#[derive(Deserialize, Serialize)] #[java_packet(PLAY_USE_ITEM_ON)] pub struct SUseItemOn { pub hand: VarInt, diff --git a/pumpkin/src/server/connection_cache.rs b/pumpkin/src/server/connection_cache.rs index 935d66d2d..e990cfed8 100644 --- a/pumpkin/src/server/connection_cache.rs +++ b/pumpkin/src/server/connection_cache.rs @@ -88,7 +88,7 @@ impl CachedStatus { // .compare_exchange(false, true, Ordering::Acquire, Ordering::Relaxed) // .is_ok() // { - players.online += 1; + players.online = players.online.saturating_add(1); // } } @@ -106,7 +106,7 @@ impl CachedStatus { // .compare_exchange(true, false, Ordering::Acquire, Ordering::Relaxed) // .is_ok() // { - players.online -= 1; + players.online = players.online.saturating_sub(1); // } }