diff --git a/src/Engine/Network/Client.cpp b/src/Engine/Network/Client.cpp index d88becdb..d6aece06 100644 --- a/src/Engine/Network/Client.cpp +++ b/src/Engine/Network/Client.cpp @@ -178,15 +178,22 @@ void Client::parseKick() void Client::parseSpawnEvents() { + std::vector tempSpawn; for (int i = 0; i < m_PlayerSpawnEvents.size(); i++) { Events::PlayerSpawned e; - e.Player = EntityWrapper(m_World, m_ServerIDToClientID[m_PlayerSpawnEvents[i].Player.ID]); - e.Spawner = EntityWrapper(m_World, m_ServerIDToClientID[m_PlayerSpawnEvents[i].Spawner.ID]); + if (!serverClientMapsHasEntity(m_PlayerSpawnEvents.at(i).Player.ID) || + !serverClientMapsHasEntity(m_PlayerSpawnEvents.at(i).Spawner.ID)) { + tempSpawn.push_back(m_PlayerSpawnEvents.at(i)); + continue; + } + e.Player = EntityWrapper(m_World, m_ServerIDToClientID.at(m_PlayerSpawnEvents.at(i).Player.ID)); + e.Spawner = EntityWrapper(m_World, m_ServerIDToClientID.at(m_PlayerSpawnEvents.at(i).Spawner.ID)); e.PlayerID = -1; - e.PlayerName = m_PlayerSpawnEvents[i].PlayerName; + e.PlayerName = m_PlayerSpawnEvents.at(i).PlayerName; m_EventBroker->Publish(e); } - m_PlayerSpawnEvents.clear(); + m_PlayerSpawnEvents = tempSpawn; + // m_PlayerSpawnEvents.clear(); } void Client::parsePlayersSpawned(Packet& packet)