World: remove local static recursion guard variable, closes #3125

This commit is contained in:
Dylan K. Taylor 2022-09-02 19:24:09 +01:00
parent f88c4d9a8c
commit ca4b8a5827
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D

View File

@ -171,6 +171,8 @@ class World implements ChunkManager{
/** @var Entity[] */
public $updateEntities = [];
private bool $inDynamicStateRecalculation = false;
/** @var Block[][] */
private array $blockCache = [];
@ -1536,17 +1538,15 @@ class World implements ChunkManager{
$block->position($this, $x, $y, $z);
static $dynamicStateRead = false;
if($dynamicStateRead){
if($this->inDynamicStateRecalculation){
//this call was generated by a parent getBlock() call calculating dynamic stateinfo
//don't calculate dynamic state and don't add to block cache (since it won't have dynamic state calculated).
//this ensures that it's impossible for dynamic state properties to recursively depend on each other.
$addToCache = false;
}else{
$dynamicStateRead = true;
$this->inDynamicStateRecalculation = true;
$block->readStateFromWorld();
$dynamicStateRead = false;
$this->inDynamicStateRecalculation = false;
}
if($addToCache && $relativeBlockHash !== null){