mirror of
https://github.com/Pumpkin-MC/Pumpkin.git
synced 2026-08-31 08:22:33 +00:00
Fix client id increment (#1087)
* fix: client id increment (passing &mut u64) * clippy
This commit is contained in:
@@ -13,6 +13,7 @@ use plugin::PluginManager;
|
||||
use plugin::server::server_command::ServerCommandEvent;
|
||||
use pumpkin_config::{BASIC_CONFIG, advanced_config};
|
||||
use pumpkin_macros::send_cancellable;
|
||||
use pumpkin_protocol::ConnectionState::Play;
|
||||
use pumpkin_util::permission::{PermissionManager, PermissionRegistry};
|
||||
use pumpkin_util::text::TextComponent;
|
||||
use rustyline_async::{Readline, ReadlineEvent};
|
||||
@@ -270,12 +271,12 @@ impl PumpkinServer {
|
||||
|
||||
pub async fn start(&self) {
|
||||
let tasks = Arc::new(TaskTracker::new());
|
||||
let master_client_id: u64 = 0;
|
||||
let mut master_client_id: u64 = 0;
|
||||
let bedrock_clients = Arc::new(Mutex::new(HashMap::new()));
|
||||
|
||||
while !SHOULD_STOP.load(Ordering::Relaxed) {
|
||||
if !self
|
||||
.unified_listener_task(master_client_id, &tasks, &bedrock_clients)
|
||||
.unified_listener_task(&mut master_client_id, &tasks, &bedrock_clients)
|
||||
.await
|
||||
{
|
||||
break;
|
||||
@@ -321,10 +322,9 @@ impl PumpkinServer {
|
||||
}
|
||||
}
|
||||
|
||||
#[expect(unused_assignments)]
|
||||
pub async fn unified_listener_task(
|
||||
&self,
|
||||
mut master_client_id_counter: u64,
|
||||
master_client_id_counter: &mut u64,
|
||||
tasks: &Arc<TaskTracker>,
|
||||
bedrock_clients: &Arc<Mutex<HashMap<SocketAddr, Arc<BedrockClient>>>>,
|
||||
) -> bool {
|
||||
@@ -339,8 +339,8 @@ impl PumpkinServer {
|
||||
log::warn!("Failed to set TCP_NODELAY: {e}");
|
||||
}
|
||||
|
||||
let client_id = master_client_id_counter;
|
||||
master_client_id_counter += 1;
|
||||
let client_id = *master_client_id_counter;
|
||||
*master_client_id_counter += 1;
|
||||
|
||||
let formatted_address = if BASIC_CONFIG.scrub_ips {
|
||||
scrub_address(&format!("{client_addr}"))
|
||||
@@ -356,24 +356,26 @@ impl PumpkinServer {
|
||||
let server_clone = self.server.clone();
|
||||
|
||||
tasks.spawn(async move {
|
||||
java_client.process_packets(&server_clone).await;
|
||||
java_client.close();
|
||||
java_client.await_tasks().await;
|
||||
java_client.process_packets(&server_clone).await;
|
||||
java_client.close();
|
||||
java_client.await_tasks().await;
|
||||
|
||||
let player = java_client.player.lock().await;
|
||||
if let Some(player) = player.as_ref() {
|
||||
log::debug!("Cleaning up player for id {client_id}");
|
||||
let player = java_client.player.lock().await;
|
||||
if let Some(player) = player.as_ref() {
|
||||
log::debug!("Cleaning up player for id {client_id}");
|
||||
|
||||
if let Err(e) = server_clone.player_data_storage
|
||||
.handle_player_leave(player)
|
||||
.await
|
||||
{
|
||||
log::error!("Failed to save player data on disconnect: {e}");
|
||||
}
|
||||
|
||||
player.remove().await;
|
||||
server_clone.remove_player(player).await;
|
||||
if let Err(e) = server_clone.player_data_storage
|
||||
.handle_player_leave(player)
|
||||
.await
|
||||
{
|
||||
log::error!("Failed to save player data on disconnect: {e}");
|
||||
}
|
||||
|
||||
player.remove().await;
|
||||
server_clone.remove_player(player).await;
|
||||
} else if java_client.connection_state.load() == Play {
|
||||
log::error!("No player found for id {client_id}. This should not happen!");
|
||||
}
|
||||
});
|
||||
}
|
||||
Err(e) => {
|
||||
@@ -406,7 +408,7 @@ impl PumpkinServer {
|
||||
client.process_packet(&server, reader).await;
|
||||
});
|
||||
} else if let Ok(packet) = BedrockClient::is_connection_request(&mut Cursor::new(&udp_buf[4..len])) {
|
||||
master_client_id_counter += 1;
|
||||
*master_client_id_counter += 1;
|
||||
|
||||
let mut platform = BedrockClient::new(self.udp_socket.clone(), client_addr, be_clients);
|
||||
platform.handle_connection_request(packet).await;
|
||||
|
||||
Reference in New Issue
Block a user