private function computeRemoveBlockLight(int $x, int $y, int $z, int $currentLight, \SplQueue $queue, \SplQueue $spreadQueue, array &$visited, array &$spreadVisited)
{
$current = $this->getBlockLightAt($x, $y, $z);
if ($current !== 0 and $current < $currentLight) {
$this->setBlockLightAt($x, $y, $z, 0);
if (!isset($visited[$index = Level::blockHash($x, $y, $z)])) {
$visited[$index] = true;
if ($current > 1) {
$queue->enqueue([new Vector3($x, $y, $z), $current]);
}
}
} elseif ($current >= $currentLight) {
if (!isset($spreadVisited[$index = Level::blockHash($x, $y, $z)])) {
$spreadVisited[$index] = true;
$spreadQueue->enqueue(new Vector3($x, $y, $z));
}
}
}