Block::readStateFromWorld() now returns the block object that should be used for the target position

this enables changing the block type completely if the situation calls for it.
This commit is contained in:
Dylan K. Taylor
2022-07-16 00:37:32 +01:00
parent b3f8b5ff37
commit 4f2f9b4352
19 changed files with 67 additions and 20 deletions

View File

@@ -824,7 +824,11 @@ class World implements ChunkManager{
}
$block = $this->getBlockAt($x, $y, $z);
$block->readStateFromWorld(); //for blocks like fences, force recalculation of connected AABBs
$replacement = $block->readStateFromWorld(); //for blocks like fences, force recalculation of connected AABBs
if($replacement !== $block){
$replacement->position($this, $x, $y, $z);
$block = $replacement;
}
$ev = new BlockUpdateEvent($block);
$ev->call();
@@ -1548,7 +1552,11 @@ class World implements ChunkManager{
$addToCache = false;
}else{
$dynamicStateRead = true;
$block->readStateFromWorld();
$replacement = $block->readStateFromWorld();
if($replacement !== $block){
$replacement->position($this, $x, $y, $z);
$block = $replacement;
}
$dynamicStateRead = false;
}