BlockFactory: remove $solid

this is premature optimization and will run into problems once we enter the flattening.
This commit is contained in:
Dylan K. Taylor 2018-09-20 16:26:15 +01:00
parent 19e68f98a7
commit 9b4d82630b
4 changed files with 9 additions and 13 deletions

View File

@ -33,8 +33,6 @@ class BlockFactory{
/** @var \SplFixedArray<Block> */ /** @var \SplFixedArray<Block> */
private static $fullList = null; private static $fullList = null;
/** @var \SplFixedArray<bool> */
public static $solid = null;
/** @var \SplFixedArray<int> */ /** @var \SplFixedArray<int> */
public static $lightFilter = null; public static $lightFilter = null;
/** @var \SplFixedArray<bool> */ /** @var \SplFixedArray<bool> */
@ -59,7 +57,6 @@ class BlockFactory{
self::$fullList = new \SplFixedArray(4096); self::$fullList = new \SplFixedArray(4096);
self::$lightFilter = \SplFixedArray::fromArray(array_fill(0, 256, 1)); self::$lightFilter = \SplFixedArray::fromArray(array_fill(0, 256, 1));
self::$solid = \SplFixedArray::fromArray(array_fill(0, 256, false));
self::$diffusesSkyLight = \SplFixedArray::fromArray(array_fill(0, 256, false)); self::$diffusesSkyLight = \SplFixedArray::fromArray(array_fill(0, 256, false));
self::$blastResistance = \SplFixedArray::fromArray(array_fill(0, 256, 0)); self::$blastResistance = \SplFixedArray::fromArray(array_fill(0, 256, 0));
@ -341,7 +338,6 @@ class BlockFactory{
self::$fullList[($id << 4) | $meta] = $variant; self::$fullList[($id << 4) | $meta] = $variant;
} }
self::$solid[$id] = $block->isSolid();
self::$lightFilter[$id] = min(15, $block->getLightFilter() + 1); //opacity plus 1 standard light filter self::$lightFilter[$id] = min(15, $block->getLightFilter() + 1); //opacity plus 1 standard light filter
self::$diffusesSkyLight[$id] = $block->diffusesSkyLight(); self::$diffusesSkyLight[$id] = $block->diffusesSkyLight();
self::$blastResistance[$id] = $block->getBlastResistance(); self::$blastResistance[$id] = $block->getBlastResistance();

View File

@ -1194,13 +1194,13 @@ abstract class Entity extends Location implements Metadatable, EntityIds{
$diffY = $y - $floorY; $diffY = $y - $floorY;
$diffZ = $z - $floorZ; $diffZ = $z - $floorZ;
if(BlockFactory::$solid[$this->level->getBlockIdAt($floorX, $floorY, $floorZ)]){ if($this->level->getBlockAt($floorX, $floorY, $floorZ)->isSolid()){
$westNonSolid = !BlockFactory::$solid[$this->level->getBlockIdAt($floorX - 1, $floorY, $floorZ)]; $westNonSolid = !$this->level->getBlockAt($floorX - 1, $floorY, $floorZ)->isSolid();
$eastNonSolid = !BlockFactory::$solid[$this->level->getBlockIdAt($floorX + 1, $floorY, $floorZ)]; $eastNonSolid = !$this->level->getBlockAt($floorX + 1, $floorY, $floorZ)->isSolid();
$downNonSolid = !BlockFactory::$solid[$this->level->getBlockIdAt($floorX, $floorY - 1, $floorZ)]; $downNonSolid = !$this->level->getBlockAt($floorX, $floorY - 1, $floorZ)->isSolid();
$upNonSolid = !BlockFactory::$solid[$this->level->getBlockIdAt($floorX, $floorY + 1, $floorZ)]; $upNonSolid = !$this->level->getBlockAt($floorX, $floorY + 1, $floorZ)->isSolid();
$northNonSolid = !BlockFactory::$solid[$this->level->getBlockIdAt($floorX, $floorY, $floorZ - 1)]; $northNonSolid = !$this->level->getBlockAt($floorX, $floorY, $floorZ - 1)->isSolid();
$southNonSolid = !BlockFactory::$solid[$this->level->getBlockIdAt($floorX, $floorY, $floorZ + 1)]; $southNonSolid = !$this->level->getBlockAt($floorX, $floorY, $floorZ + 1)->isSolid();
$direction = -1; $direction = -1;
$limit = 9999; $limit = 9999;

View File

@ -61,7 +61,7 @@ class SpruceTree extends Tree{
continue; continue;
} }
if(!BlockFactory::$solid[$level->getBlockIdAt($xx, $yyy, $zz)]){ if(!BlockFactory::get($level->getBlockIdAt($xx, $yyy, $zz))->isSolid()){
$level->setBlockIdAt($xx, $yyy, $zz, $this->leafBlock); $level->setBlockIdAt($xx, $yyy, $zz, $this->leafBlock);
$level->setBlockDataAt($xx, $yyy, $zz, $this->type); $level->setBlockDataAt($xx, $yyy, $zz, $this->type);
} }

View File

@ -109,7 +109,7 @@ abstract class Tree{
if($xOff === $mid and $zOff === $mid and ($yOff === 0 or $random->nextBoundedInt(2) === 0)){ if($xOff === $mid and $zOff === $mid and ($yOff === 0 or $random->nextBoundedInt(2) === 0)){
continue; continue;
} }
if(!BlockFactory::$solid[$level->getBlockIdAt($xx, $yy, $zz)]){ if(!BlockFactory::get($level->getBlockIdAt($xx, $yy, $zz))->isSolid()){
$level->setBlockIdAt($xx, $yy, $zz, $this->leafBlock); $level->setBlockIdAt($xx, $yy, $zz, $this->leafBlock);
$level->setBlockDataAt($xx, $yy, $zz, $this->type); $level->setBlockDataAt($xx, $yy, $zz, $this->type);
} }