diff options
author | Howaner <franzi.moos@googlemail.com> | 2014-08-20 22:25:05 +0200 |
---|---|---|
committer | Howaner <franzi.moos@googlemail.com> | 2014-08-20 22:25:05 +0200 |
commit | f7774ec33638bfc30cc29c1f70850a6072a31c93 (patch) | |
tree | c2c2896b87de9241b1555e4e2580aa6b3f401870 /src/Chunk.cpp | |
parent | Revert "Removes the fire if the block under the fire was broken." (diff) | |
parent | Merge pull request #1335 from mc-server/CodeFixes (diff) | |
download | cuberite-f7774ec33638bfc30cc29c1f70850a6072a31c93.tar cuberite-f7774ec33638bfc30cc29c1f70850a6072a31c93.tar.gz cuberite-f7774ec33638bfc30cc29c1f70850a6072a31c93.tar.bz2 cuberite-f7774ec33638bfc30cc29c1f70850a6072a31c93.tar.lz cuberite-f7774ec33638bfc30cc29c1f70850a6072a31c93.tar.xz cuberite-f7774ec33638bfc30cc29c1f70850a6072a31c93.tar.zst cuberite-f7774ec33638bfc30cc29c1f70850a6072a31c93.zip |
Diffstat (limited to '')
-rw-r--r-- | src/Chunk.cpp | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/src/Chunk.cpp b/src/Chunk.cpp index a79a485a6..116c0f3a0 100644 --- a/src/Chunk.cpp +++ b/src/Chunk.cpp @@ -1,3 +1,4 @@ + #include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules #ifndef _WIN32 @@ -579,7 +580,7 @@ void cChunk::Tick(float a_Dt) } for (cEntityList::iterator itr = m_Entities.begin(); itr != m_Entities.end();) - { + { if (!((*itr)->IsMob())) // Mobs are ticked inside cWorld::TickMobs() (as we don't have to tick them if they are far away from players) { // Tick all entities in this chunk (except mobs): @@ -594,17 +595,19 @@ void cChunk::Tick(float a_Dt) itr = m_Entities.erase(itr); delete ToDelete; } - else if ((*itr)->IsWorldTravellingFrom(m_World)) // Remove all entities that are travelling to another world: + else if ((*itr)->IsWorldTravellingFrom(m_World)) { + // Remove all entities that are travelling to another world MarkDirty(); (*itr)->SetWorldTravellingFrom(NULL); itr = m_Entities.erase(itr); } - else if ( // If any entity moved out of the chunk, move it to the neighbor: + else if ( ((*itr)->GetChunkX() != m_PosX) || ((*itr)->GetChunkZ() != m_PosZ) ) { + // The entity moved out of the chunk, move it to the neighbor MarkDirty(); MoveEntityToNewChunk(*itr); itr = m_Entities.erase(itr); @@ -885,14 +888,14 @@ void cChunk::ApplyWeatherToTop() SetBlock(X, Height, Z, E_BLOCK_ICE, 0); } else if ( - (m_World->IsDeepSnowEnabled()) && - ( - (TopBlock == E_BLOCK_RED_ROSE) || - (TopBlock == E_BLOCK_YELLOW_FLOWER) || - (TopBlock == E_BLOCK_RED_MUSHROOM) || - (TopBlock == E_BLOCK_BROWN_MUSHROOM) - ) + (m_World->IsDeepSnowEnabled()) && + ( + (TopBlock == E_BLOCK_RED_ROSE) || + (TopBlock == E_BLOCK_YELLOW_FLOWER) || + (TopBlock == E_BLOCK_RED_MUSHROOM) || + (TopBlock == E_BLOCK_BROWN_MUSHROOM) ) + ) { SetBlock(X, Height, Z, E_BLOCK_SNOW, 0); } @@ -2142,10 +2145,14 @@ bool cChunk::DoWithRedstonePoweredEntityAt(int a_BlockX, int a_BlockY, int a_Blo case E_BLOCK_DROPPER: case E_BLOCK_DISPENSER: case E_BLOCK_NOTE_BLOCK: + { break; + } default: + { // There is a block entity here, but of different type. No other block entity can be here, so we can safely bail out return false; + } } if (a_Callback.Item((cRedstonePoweredEntity *)*itr)) |