protected function switchLevel(Level $targetLevel)
{
$oldLevel = $this->level;
if (parent::switchLevel($targetLevel)) {
foreach ($this->usedChunks as $index => $d) {
Level::getXZ($index, $X, $Z);
$this->unloadChunk($X, $Z, $oldLevel);
}
$this->usedChunks = [];
$pk = new SetTimePacket();
$pk->time = $this->level->getTime();
$pk->started = $this->level->stopTime == false;
$this->dataPacket($pk);
if ($targetLevel->getDimension() != $oldLevel->getDimension()) {
$pk = new ChangeDimensionPacket();
$pk->dimension = $targetLevel->getDimension();
$pk->x = $this->x;
$pk->y = $this->y;
$pk->z = $this->z;
$this->dataPacket($pk);
$this->shouldSendStatus = true;
}
$targetLevel->getWeather()->sendWeather($this);
if ($this->spawned) {
$this->spawnToAll();
}
}
}