mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-14 09:49:50 +00:00
Fixed lighting issues with subchunks containing no blocks
A subchunk with no blocks is not necessarily empty.
This commit is contained in:
parent
c84ec90398
commit
1c3d89cfef
@ -307,7 +307,7 @@ class Chunk{
|
|||||||
* @param int $level 0-15
|
* @param int $level 0-15
|
||||||
*/
|
*/
|
||||||
public function setBlockSkyLight(int $x, int $y, int $z, int $level){
|
public function setBlockSkyLight(int $x, int $y, int $z, int $level){
|
||||||
if($this->getSubChunk($y >> 4)->setBlockSkyLight($x, $y & 0x0f, $z, $level)){
|
if($this->getSubChunk($y >> 4, true)->setBlockSkyLight($x, $y & 0x0f, $z, $level)){
|
||||||
$this->hasChanged = true;
|
$this->hasChanged = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -334,7 +334,7 @@ class Chunk{
|
|||||||
* @param int $level 0-15
|
* @param int $level 0-15
|
||||||
*/
|
*/
|
||||||
public function setBlockLight(int $x, int $y, int $z, int $level){
|
public function setBlockLight(int $x, int $y, int $z, int $level){
|
||||||
if($this->getSubChunk($y >> 4)->setBlockLight($x, $y & 0x0f, $z, $level)){
|
if($this->getSubChunk($y >> 4, true)->setBlockLight($x, $y & 0x0f, $z, $level)){
|
||||||
$this->hasChanged = true;
|
$this->hasChanged = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,8 +47,11 @@ class SubChunk{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function isEmpty() : bool{
|
public function isEmpty() : bool{
|
||||||
assert(strlen($this->ids) === 4096, "Wrong length of ID array, expecting 4096 bytes, got " . strlen($this->ids));
|
return (
|
||||||
return substr_count($this->ids, "\x00") === 4096;
|
substr_count($this->ids, "\x00") === 4096 and
|
||||||
|
substr_count($this->skyLight, "\xff") === 2048 and
|
||||||
|
substr_count($this->blockLight, "\x00") === 2048
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getBlockId(int $x, int $y, int $z) : int{
|
public function getBlockId(int $x, int $y, int $z) : int{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user