summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTiger Wang <ziwei.tiger@outlook.com>2020-07-29 00:39:55 +0200
committerTiger Wang <ziwei.tiger@outlook.com>2020-08-02 16:52:06 +0200
commitfd5191854df621402cfe1203daceb68851c88af7 (patch)
tree42c85d35e600cff359aaa18b70624c9d0a80fb34
parentEnsure updating relatives calls the correct base case (diff)
downloadcuberite-fd5191854df621402cfe1203daceb68851c88af7.tar
cuberite-fd5191854df621402cfe1203daceb68851c88af7.tar.gz
cuberite-fd5191854df621402cfe1203daceb68851c88af7.tar.bz2
cuberite-fd5191854df621402cfe1203daceb68851c88af7.tar.lz
cuberite-fd5191854df621402cfe1203daceb68851c88af7.tar.xz
cuberite-fd5191854df621402cfe1203daceb68851c88af7.tar.zst
cuberite-fd5191854df621402cfe1203daceb68851c88af7.zip
-rw-r--r--src/Blocks/BlockHandler.cpp20
-rw-r--r--src/Chunk.cpp4
2 files changed, 12 insertions, 12 deletions
diff --git a/src/Blocks/BlockHandler.cpp b/src/Blocks/BlockHandler.cpp
index 5d6609836..b7e746418 100644
--- a/src/Blocks/BlockHandler.cpp
+++ b/src/Blocks/BlockHandler.cpp
@@ -585,22 +585,18 @@ void cBlockHandler::Check(
cChunk & a_Chunk
)
{
- if (!CanBeAt(a_ChunkInterface, a_RelPos, a_Chunk))
+ if (CanBeAt(a_ChunkInterface, a_RelPos, a_Chunk))
{
- if (DoesDropOnUnsuitable())
- {
- a_ChunkInterface.DropBlockAsPickups(a_Chunk.RelativeToAbsolute(a_RelPos));
- }
- else
- {
- a_Chunk.SetBlock(a_RelPos, E_BLOCK_AIR, 0);
- }
+ return;
+ }
+
+ if (DoesDropOnUnsuitable())
+ {
+ a_ChunkInterface.DropBlockAsPickups(a_Chunk.RelativeToAbsolute(a_RelPos));
}
else
{
- // Wake up the simulators for this block:
- auto absPos = a_Chunk.RelativeToAbsolute(a_RelPos);
- a_Chunk.GetWorld()->GetSimulatorManager()->WakeUp(absPos, &a_Chunk);
+ a_Chunk.SetBlock(a_RelPos, E_BLOCK_AIR, 0);
}
}
diff --git a/src/Chunk.cpp b/src/Chunk.cpp
index fb37ce3b3..9544899f7 100644
--- a/src/Chunk.cpp
+++ b/src/Chunk.cpp
@@ -1314,6 +1314,10 @@ void cChunk::SetBlock(Vector3i a_RelPos, BLOCKTYPE a_BlockType, NIBBLETYPE a_Blo
m_ToTickBlocks.push_back(a_RelPos);
QueueTickBlockNeighbors(a_RelPos);
+ // TODO: use relative coordinates, cChunk reference
+ // Wake up the simulators for this block:
+ GetWorld()->GetSimulatorManager()->WakeUp(RelativeToAbsolute(a_RelPos), this);
+
// If there was a block entity, remove it:
cBlockEntity * BlockEntity = GetBlockEntityRel(a_RelPos);
if (BlockEntity != nullptr)