1
0

Fix explosion interaction with block entities. (#4052)

* WriteBlockArea: Fix erasing of block entities.

* cChunkMap::DoExplosionAt destroys block entities
This commit is contained in:
peterbell10
2017-09-27 22:22:15 +01:00
committed by Alexander Harkness
parent 4b14a5b4c1
commit 8866a28cf8
2 changed files with 17 additions and 3 deletions

View File

@@ -19,6 +19,7 @@
#include "Blocks/ChunkInterface.h"
#include "Entities/Pickup.h"
#include "DeadlockDetect.h"
#include "BlockEntities/BlockEntity.h"
#ifndef _WIN32
#include <cstdlib> // abs
@@ -1763,6 +1764,18 @@ void cChunkMap::DoExplosionAt(double a_ExplosionSize, double a_BlockX, double a_
}
}
// Destroy any block entities
if (cBlockEntity::IsBlockEntityBlockType(Block))
{
Vector3i BlockPos(bx + x, by + y, bz + z);
DoWithBlockEntityAt(BlockPos.x, BlockPos.y, BlockPos.z, [](cBlockEntity & a_BE)
{
a_BE.Destroy();
return true;
}
);
}
area.SetBlockTypeMeta(bx + x, by + y, bz + z, E_BLOCK_AIR, 0);
a_BlocksAffected.push_back(Vector3i(bx + x, by + y, bz + z));
break;