From c51a4b9469fee0314d1b849206d1cf1c7c1240e4 Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Tue, 10 Apr 2012 11:22:11 +0000 Subject: Added the "/regeneratechunk" command that regenerates either current chunk or a chunk specified with x, z parameters. TODO: permissions - we don't want guests erasing our chunks! git-svn-id: http://mc-server.googlecode.com/svn/trunk@454 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cChunk.cpp | 44 +++++++++++++++----------------------------- 1 file changed, 15 insertions(+), 29 deletions(-) (limited to 'source/cChunk.cpp') diff --git a/source/cChunk.cpp b/source/cChunk.cpp index 54fbf4b94..597568a76 100644 --- a/source/cChunk.cpp +++ b/source/cChunk.cpp @@ -67,11 +67,11 @@ sSetBlock::sSetBlock( int a_X, int a_Y, int a_Z, char a_BlockType, char a_BlockM /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // cChunk: -cChunk::cChunk(int a_X, int a_Y, int a_Z, cChunkMap * a_ChunkMap, cWorld * a_World) +cChunk::cChunk(int a_ChunkX, int a_ChunkY, int a_ChunkZ, cChunkMap * a_ChunkMap, cWorld * a_World) : m_bCalculateLighting( false ) - , m_PosX( a_X ) - , m_PosY( a_Y ) - , m_PosZ( a_Z ) + , m_PosX( a_ChunkX ) + , m_PosY( a_ChunkY ) + , m_PosZ( a_ChunkZ ) , m_BlockTickNum( 0 ) , m_BlockTickX( 0 ) , m_BlockTickY( 0 ) @@ -121,38 +121,24 @@ cChunk::~cChunk() -void cChunk::SetValid(bool a_SendToClients) +void cChunk::SetValid(void) { m_IsValid = true; m_World->GetChunkMap()->ChunkValidated(); - - if (!a_SendToClients) - { - return; - } - - if (m_LoadedByClient.empty()) - { - return; - } - - // Sending the chunk here interferes with the lighting done in the tick thread and results in the "invalid compressed data" on the client - /* - cPacket_PreChunk PreChunk; - PreChunk.m_PosX = m_PosX; - PreChunk.m_PosZ = m_PosZ; - PreChunk.m_bLoad = true; - cPacket_MapChunk MapChunk(this); - Broadcast(&PreChunk); - Broadcast(&MapChunk); - - // Let all clients of this chunk know that it has been already sent to the client +} + + + + + +void cChunk::MarkRegenerating(void) +{ + // Tell all clients attached to this chunk that they want this chunk: for (cClientHandleList::iterator itr = m_LoadedByClient.begin(); itr != m_LoadedByClient.end(); ++itr) { - (*itr)->ChunkJustSent(this); + (*itr)->AddWantedChunk(m_PosX, m_PosZ); } // for itr - m_LoadedByClient[] - */ } -- cgit v1.2.3