public function __construct($level, Compound $nbt = null)
{
if ($nbt === null) {
$this->provider = $level;
$this->nbt = new Compound("Level", []);
return;
}
$this->nbt = $nbt;
if (isset($this->nbt->Entities) and $this->nbt->Entities instanceof Enum) {
$this->nbt->Entities->setTagType(NBT::TAG_Compound);
} else {
$this->nbt->Entities = new Enum("Entities", []);
$this->nbt->Entities->setTagType(NBT::TAG_Compound);
}
if (isset($this->nbt->TileEntities) and $this->nbt->TileEntities instanceof Enum) {
$this->nbt->TileEntities->setTagType(NBT::TAG_Compound);
} else {
$this->nbt->TileEntities = new Enum("TileEntities", []);
$this->nbt->TileEntities->setTagType(NBT::TAG_Compound);
}
if (isset($this->nbt->TileTicks) and $this->nbt->TileTicks instanceof Enum) {
$this->nbt->TileTicks->setTagType(NBT::TAG_Compound);
} else {
$this->nbt->TileTicks = new Enum("TileTicks", []);
$this->nbt->TileTicks->setTagType(NBT::TAG_Compound);
}
if (!isset($this->nbt->BiomeColors) or !$this->nbt->BiomeColors instanceof IntArray) {
$this->nbt->BiomeColors = new IntArray("BiomeColors", array_fill(0, 256, 0));
}
if (!isset($this->nbt->HeightMap) or !$this->nbt->HeightMap instanceof IntArray) {
$this->nbt->HeightMap = new IntArray("HeightMap", array_fill(0, 256, 0));
}
if (!isset($this->nbt->Blocks)) {
$this->nbt->Blocks = new ByteArray("Blocks", str_repeat("", 32768));
}
if (!isset($this->nbt->Data)) {
$this->nbt->Data = new ByteArray("Data", $half = str_repeat("", 16384));
$this->nbt->SkyLight = new ByteArray("SkyLight", $half);
$this->nbt->BlockLight = new ByteArray("BlockLight", $half);
}
$extraData = [];
if (!isset($this->nbt->ExtraData) or !$this->nbt->ExtraData instanceof ByteArray) {
$this->nbt->ExtraData = new ByteArray("ExtraData", Binary::writeInt(0));
} else {
$stream = new BinaryStream($this->nbt->ExtraData->getValue());
$count = $stream->getInt();
for ($i = 0; $i < $count; ++$i) {
$key = $stream->getInt();
$extraData[$key] = $stream->getShort(false);
}
}
parent::__construct($level, $this->nbt["xPos"], $this->nbt["zPos"], $this->nbt->Blocks->getValue(), $this->nbt->Data->getValue(), $this->nbt->SkyLight->getValue(), $this->nbt->BlockLight->getValue(), $this->nbt->BiomeColors->getValue(), $this->nbt->HeightMap->getValue(), $this->nbt->Entities->getValue(), $this->nbt->TileEntities->getValue());
unset($this->nbt->Blocks);
unset($this->nbt->Data);
unset($this->nbt->SkyLight);
unset($this->nbt->BlockLight);
unset($this->nbt->BiomeColors);
unset($this->nbt->HeightMap);
unset($this->nbt->Biomes);
}