Merge pull request #779 from mc-server/tntburnexplode
TNT explodes when consumed by fire
This commit is contained in:
commit
411c4ddd79
@ -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++)
|
for (size_t i = 0; i < ARRAYCOUNT(gNeighborCoords); i++)
|
||||||
{
|
{
|
||||||
BLOCKTYPE BlockType;
|
BLOCKTYPE BlockType;
|
||||||
NIBBLETYPE BlockMeta;
|
int X = a_RelX + gNeighborCoords[i].x;
|
||||||
if (!a_Chunk->UnboundedRelGetBlock(a_RelX + gNeighborCoords[i].x, a_RelY + gNeighborCoords[i].y, a_RelZ + gNeighborCoords[i].z, BlockType, BlockMeta))
|
int Z = a_RelZ + gNeighborCoords[i].z;
|
||||||
|
|
||||||
|
cChunkPtr Neighbour = a_Chunk->GetRelNeighborChunkAdjustCoords(X, Z);
|
||||||
|
if (Neighbour == NULL)
|
||||||
{
|
{
|
||||||
// Neighbor not accessible, ignore it
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
BlockType = Neighbour->GetBlock(X, a_RelY + gCrossCoords[i].y, Z);
|
||||||
|
|
||||||
if (!IsFuel(BlockType))
|
if (!IsFuel(BlockType))
|
||||||
{
|
{
|
||||||
continue;
|
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);
|
bool ShouldReplaceFuel = (m_World.GetTickRandomNumber(MAX_CHANCE_REPLACE_FUEL) < m_ReplaceFuelChance);
|
||||||
a_Chunk->UnboundedRelSetBlock(
|
Neighbour->SetBlock(X, a_RelY + gNeighborCoords[i].y, Z, ShouldReplaceFuel ? E_BLOCK_FIRE : E_BLOCK_AIR, 0);
|
||||||
a_RelX + gNeighborCoords[i].x, a_RelY + gNeighborCoords[i].y, a_RelZ + gNeighborCoords[i].z,
|
|
||||||
ShouldReplaceFuel ? E_BLOCK_FIRE : E_BLOCK_AIR, 0
|
|
||||||
);
|
|
||||||
} // for i - Coords[]
|
} // for i - Coords[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user