pocketmine\level\Level::getCollisionBlocks PHP Метод

getCollisionBlocks() публичный Метод

public getCollisionBlocks ( AxisAlignedBB $bb, boolean $targetFirst = false ) : array
$bb pocketmine\math\AxisAlignedBB
$targetFirst boolean
Результат array
    public function getCollisionBlocks(AxisAlignedBB $bb, bool $targetFirst = false) : array
    {
        $minX = Math::floorFloat($bb->minX);
        $minY = Math::floorFloat($bb->minY);
        $minZ = Math::floorFloat($bb->minZ);
        $maxX = Math::ceilFloat($bb->maxX);
        $maxY = Math::ceilFloat($bb->maxY);
        $maxZ = Math::ceilFloat($bb->maxZ);
        $collides = [];
        if ($targetFirst) {
            for ($z = $minZ; $z <= $maxZ; ++$z) {
                for ($x = $minX; $x <= $maxX; ++$x) {
                    for ($y = $minY; $y <= $maxY; ++$y) {
                        $block = $this->getBlock($this->temporalVector->setComponents($x, $y, $z));
                        if ($block->getId() !== 0 and $block->collidesWithBB($bb)) {
                            return [$block];
                        }
                    }
                }
            }
        } else {
            for ($z = $minZ; $z <= $maxZ; ++$z) {
                for ($x = $minX; $x <= $maxX; ++$x) {
                    for ($y = $minY; $y <= $maxY; ++$y) {
                        $block = $this->getBlock($this->temporalVector->setComponents($x, $y, $z));
                        if ($block->getId() !== 0 and $block->collidesWithBB($bb)) {
                            $collides[] = $block;
                        }
                    }
                }
            }
        }
        return $collides;
    }
Level