diff options
author | Howaner <franzi.moos@googlemail.com> | 2014-03-15 02:46:18 +0100 |
---|---|---|
committer | Howaner <franzi.moos@googlemail.com> | 2014-03-15 02:46:18 +0100 |
commit | 8316ae330ec06b19caf678b9d499afd198fe5a06 (patch) | |
tree | 9e120574de49e90f970910ffe743e8169d762ceb /src/Simulator/FireSimulator.cpp | |
parent | Add item frame saving. (diff) | |
parent | Ignoring all config and SQLite files in the output folder. (diff) | |
download | cuberite-8316ae330ec06b19caf678b9d499afd198fe5a06.tar cuberite-8316ae330ec06b19caf678b9d499afd198fe5a06.tar.gz cuberite-8316ae330ec06b19caf678b9d499afd198fe5a06.tar.bz2 cuberite-8316ae330ec06b19caf678b9d499afd198fe5a06.tar.lz cuberite-8316ae330ec06b19caf678b9d499afd198fe5a06.tar.xz cuberite-8316ae330ec06b19caf678b9d499afd198fe5a06.tar.zst cuberite-8316ae330ec06b19caf678b9d499afd198fe5a06.zip |
Diffstat (limited to '')
-rw-r--r-- | src/Simulator/FireSimulator.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/Simulator/FireSimulator.cpp b/src/Simulator/FireSimulator.cpp index 4967c83f9..26712e6e6 100644 --- a/src/Simulator/FireSimulator.cpp +++ b/src/Simulator/FireSimulator.cpp @@ -334,21 +334,33 @@ void cFireSimulator::RemoveFuelNeighbors(cChunk * a_Chunk, int a_RelX, int a_Rel for (size_t i = 0; i < ARRAYCOUNT(gNeighborCoords); i++) { BLOCKTYPE BlockType; - NIBBLETYPE BlockMeta; - if (!a_Chunk->UnboundedRelGetBlock(a_RelX + gNeighborCoords[i].x, a_RelY + gNeighborCoords[i].y, a_RelZ + gNeighborCoords[i].z, BlockType, BlockMeta)) + int X = a_RelX + gNeighborCoords[i].x; + int Z = a_RelZ + gNeighborCoords[i].z; + + cChunkPtr Neighbour = a_Chunk->GetRelNeighborChunkAdjustCoords(X, Z); + if (Neighbour == NULL) { - // Neighbor not accessible, ignore it continue; } + BlockType = Neighbour->GetBlock(X, a_RelY + gCrossCoords[i].y, Z); + if (!IsFuel(BlockType)) { continue; } + + if (BlockType == E_BLOCK_TNT) + { + int AbsX = X + Neighbour->GetPosX() * cChunkDef::Width; + int AbsZ = Z + Neighbour->GetPosZ() * cChunkDef::Width; + + m_World.SpawnPrimedTNT(AbsX, a_RelY + gNeighborCoords[i].y, AbsZ, 0); + Neighbour->SetBlock(X, a_RelY + gNeighborCoords[i].y, Z, E_BLOCK_AIR, 0); + return; + } + bool ShouldReplaceFuel = (m_World.GetTickRandomNumber(MAX_CHANCE_REPLACE_FUEL) < m_ReplaceFuelChance); - a_Chunk->UnboundedRelSetBlock( - a_RelX + gNeighborCoords[i].x, a_RelY + gNeighborCoords[i].y, a_RelZ + gNeighborCoords[i].z, - ShouldReplaceFuel ? E_BLOCK_FIRE : E_BLOCK_AIR, 0 - ); + Neighbour->SetBlock(X, a_RelY + gNeighborCoords[i].y, Z, ShouldReplaceFuel ? E_BLOCK_FIRE : E_BLOCK_AIR, 0); } // for i - Coords[] } |