public static function fromFastBinary($data, LevelProvider $provider = null)
{
try {
$offset = 0;
$chunk = new Chunk($provider instanceof LevelProvider ? $provider : McRegion::class, null);
$chunk->provider = $provider;
$chunk->x = Binary::readInt(substr($data, $offset, 4));
$offset += 4;
$chunk->z = Binary::readInt(substr($data, $offset, 4));
$offset += 4;
$chunk->blocks = substr($data, $offset, 32768);
$offset += 32768;
$chunk->data = substr($data, $offset, 16384);
$offset += 16384;
$chunk->skyLight = substr($data, $offset, 16384);
$offset += 16384;
$chunk->blockLight = substr($data, $offset, 16384);
$offset += 16384;
$chunk->heightMap = array_values(unpack("C*", substr($data, $offset, 256)));
$offset += 256;
$chunk->biomeColors = array_values(unpack("N*", substr($data, $offset, 1024)));
$offset += 1024;
$flags = ord($data[$offset++]);
$chunk->nbt->TerrainGenerated = new ByteTag("TerrainGenerated", $flags & 0b1);
$chunk->nbt->TerrainPopulated = new ByteTag("TerrainPopulated", $flags >> 1 & 0b1);
$chunk->nbt->LightPopulated = new ByteTag("LightPopulated", $flags >> 2 & 0b1);
return $chunk;
} catch (Throwable $e) {
return null;
}
}