diff --git a/MCServer/Plugins/TransAPI b/MCServer/Plugins/TransAPI index da272372..52e1de43 160000 --- a/MCServer/Plugins/TransAPI +++ b/MCServer/Plugins/TransAPI @@ -1 +1 @@ -Subproject commit da272372406e0990235b008dba73b7bfbda040e8 +Subproject commit 52e1de4332a026e58fda843aae98c1f51e57199e diff --git a/src/Simulator/FireSimulator.cpp b/src/Simulator/FireSimulator.cpp index ac3fb969..03e4f6e4 100644 --- a/src/Simulator/FireSimulator.cpp +++ b/src/Simulator/FireSimulator.cpp @@ -135,7 +135,11 @@ void cFireSimulator::SimulateChunk(float a_Dt, int a_ChunkX, int a_ChunkZ, cChun itr = Data.erase(itr); continue; } - a_Chunk->SetMeta(idx, BlockMeta + 1); + + if((itr->y > 0) && (!DoesBurnForever(a_Chunk->GetBlock(itr->x, itr->y - 1, itr->z)))) + { + a_Chunk->SetMeta(idx, BlockMeta + 1); + } itr->Data = GetBurnStepTime(a_Chunk, itr->x, itr->y, itr->z); // TODO: Add some randomness into this } // for itr - Data[] } @@ -176,7 +180,7 @@ bool cFireSimulator::IsFuel(BLOCKTYPE a_BlockType) -bool cFireSimulator::IsForever(BLOCKTYPE a_BlockType) +bool cFireSimulator::DoesBurnForever(BLOCKTYPE a_BlockType) { return (a_BlockType == E_BLOCK_NETHERRACK); } @@ -225,7 +229,7 @@ int cFireSimulator::GetBurnStepTime(cChunk * a_Chunk, int a_RelX, int a_RelY, in if (a_RelY > 0) { BLOCKTYPE BlockBelow = a_Chunk->GetBlock(a_RelX, a_RelY - 1, a_RelZ); - if (IsForever(BlockBelow)) + if (DoesBurnForever(BlockBelow)) { // Is burning atop of netherrack, burn forever (re-check in 10 sec) return 10000; diff --git a/src/Simulator/FireSimulator.h b/src/Simulator/FireSimulator.h index a788ed32..66c31b44 100644 --- a/src/Simulator/FireSimulator.h +++ b/src/Simulator/FireSimulator.h @@ -28,7 +28,7 @@ public: virtual bool IsAllowedBlock(BLOCKTYPE a_BlockType) override; static bool IsFuel (BLOCKTYPE a_BlockType); - static bool IsForever(BLOCKTYPE a_BlockType); + static bool DoesBurnForever(BLOCKTYPE a_BlockType); protected: /// Time (in msec) that a fire block takes to burn with a fuel block into the next step