Skip to content

Commit a9f6454

Browse files
committed
Fix: Wrong polling logic
1 parent f74f77a commit a9f6454

File tree

2 files changed

+17
-33
lines changed

2 files changed

+17
-33
lines changed

pumpkin/src/client/mod.rs

-1
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,6 @@ impl Client {
387387
let mut dec = self.dec.lock().await;
388388
if let Ok(packet) = dec.decode() {
389389
if let Some(packet) = packet {
390-
dbg!("a");
391390
self.add_packet(packet).await;
392391
return;
393392
}

pumpkin/src/main.rs

+17-32
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ use client::Client;
2222
use pumpkin_protocol::client::play::CKeepAlive;
2323
use pumpkin_protocol::ConnectionState;
2424
use server::Server;
25-
use std::collections::HashMap;
2625
use std::io::{self};
2726
use std::time::Duration;
2827

@@ -128,9 +127,6 @@ async fn main() -> io::Result<()> {
128127
let use_console = ADVANCED_CONFIG.commands.use_console;
129128
let rcon = ADVANCED_CONFIG.rcon.clone();
130129

131-
let players: Arc<tokio::sync::Mutex<HashMap<usize, Arc<Player>>>> =
132-
Arc::new(tokio::sync::Mutex::new(HashMap::new()));
133-
134130
let server = Arc::new(Server::new());
135131
log::info!("Started Server took {}ms", time.elapsed().as_millis());
136132
log::info!("You now can connect to the server, Listening on {}", addr);
@@ -212,45 +208,34 @@ async fn main() -> io::Result<()> {
212208
});
213209
}
214210

215-
let players = players.clone();
216211
let server = server.clone();
217212
tokio::spawn(async move {
218-
let mut players = players.lock().await; // Move ownership of players
219213
let server = &server; // Reference to server
220-
// poll Player
221-
if let Some(player) = players.get_mut(&id) {
214+
while !client.closed.load(std::sync::atomic::Ordering::Relaxed)
215+
&& !client
216+
.make_player
217+
.load(std::sync::atomic::Ordering::Relaxed)
218+
{
219+
client.process_packets(server).await;
220+
client.poll().await;
221+
}
222+
if client
223+
.make_player
224+
.load(std::sync::atomic::Ordering::Relaxed)
225+
{
226+
let id = client.id;
227+
let (player, world) = server.add_player(id, client).await;
228+
world.spawn_player(&BASIC_CONFIG, player.clone()).await;
229+
// poll Player
222230
while !player
223231
.client
224232
.closed
225233
.load(std::sync::atomic::Ordering::Relaxed)
226234
{
227-
dbg!("a");
228235
player.process_packets(server).await;
229236
player.client.poll().await;
230237
}
231-
if let Some(player) = players.remove(&id) {
232-
dbg!("removed player");
233-
player.remove().await;
234-
}
235-
} else {
236-
// Poll current Clients (non players)
237-
while !client.closed.load(std::sync::atomic::Ordering::Relaxed)
238-
&& !client
239-
.make_player
240-
.load(std::sync::atomic::Ordering::Relaxed)
241-
{
242-
client.process_packets(server).await;
243-
client.poll().await;
244-
}
245-
if client
246-
.make_player
247-
.load(std::sync::atomic::Ordering::Relaxed)
248-
{
249-
let id = client.id;
250-
let (player, world) = server.add_player(id, client).await;
251-
players.insert(id, player.clone());
252-
world.spawn_player(&BASIC_CONFIG, player).await;
253-
}
238+
player.remove().await;
254239
}
255240
});
256241
}

0 commit comments

Comments
 (0)