diff options
author | Mattes D <github@xoft.cz> | 2014-06-03 19:02:40 +0200 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2014-06-03 19:02:40 +0200 |
commit | 0c5492946b84aefe4f5d366d14de0ceb5e97b189 (patch) | |
tree | 37c13749e6050794ada0a1e1d42c9d998f3c8040 /src/World.cpp | |
parent | docs/Generator: Shrunk the hand-drawn images by 50 %. (diff) | |
parent | Merge remote-tracking branch 'origin/pistonfixes' (diff) | |
download | cuberite-0c5492946b84aefe4f5d366d14de0ceb5e97b189.tar cuberite-0c5492946b84aefe4f5d366d14de0ceb5e97b189.tar.gz cuberite-0c5492946b84aefe4f5d366d14de0ceb5e97b189.tar.bz2 cuberite-0c5492946b84aefe4f5d366d14de0ceb5e97b189.tar.lz cuberite-0c5492946b84aefe4f5d366d14de0ceb5e97b189.tar.xz cuberite-0c5492946b84aefe4f5d366d14de0ceb5e97b189.tar.zst cuberite-0c5492946b84aefe4f5d366d14de0ceb5e97b189.zip |
Diffstat (limited to 'src/World.cpp')
-rw-r--r-- | src/World.cpp | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/src/World.cpp b/src/World.cpp index 807065bfa..88e9c32e6 100644 --- a/src/World.cpp +++ b/src/World.cpp @@ -1551,9 +1551,9 @@ bool cWorld::SetAreaBiome(const cCuboid & a_Area, EMCSBiome a_Biome) -void cWorld::SetBlock(int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) +void cWorld::SetBlock(int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta, bool a_SendToClients) { - m_ChunkMap->SetBlock(*this, a_BlockX, a_BlockY, a_BlockZ, a_BlockType, a_BlockMeta); + m_ChunkMap->SetBlock(*this, a_BlockX, a_BlockY, a_BlockZ, a_BlockType, a_BlockMeta, a_SendToClients); } @@ -3128,6 +3128,49 @@ void cWorld::cTaskUnloadUnusedChunks::Run(cWorld & a_World) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// cWorld::cTaskSendBlockTo + +cWorld::cTaskSendBlockToAllPlayers::cTaskSendBlockToAllPlayers(std::vector<Vector3i> & a_SendQueue) : + m_SendQueue(a_SendQueue) +{ +} + +void cWorld::cTaskSendBlockToAllPlayers::Run(cWorld & a_World) +{ + class cPlayerCallback : + public cPlayerListCallback + { + public: + cPlayerCallback(std::vector<Vector3i> & a_SendQueue, cWorld & a_World) : + m_SendQueue(a_SendQueue), + m_World(a_World) + { + } + + virtual bool Item(cPlayer * a_Player) + { + for (std::vector<Vector3i>::const_iterator itr = m_SendQueue.begin(); itr != m_SendQueue.end(); ++itr) + { + m_World.SendBlockTo(itr->x, itr->y, itr->z, a_Player); + } + return false; + } + + private: + + std::vector<Vector3i> m_SendQueue; + cWorld & m_World; + + } PlayerCallback(m_SendQueue, a_World); + + a_World.ForEachPlayer(PlayerCallback); +} + + + + + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // cWorld::cChunkGeneratorCallbacks: cWorld::cChunkGeneratorCallbacks::cChunkGeneratorCallbacks(cWorld & a_World) : |