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); } }
protected function switchLevel(Level $targetLevel) { $oldLevel = $this->level; if (parent::switchLevel($targetLevel)) { foreach ($this->usedChunks as $index => $d) { if (\PHP_INT_SIZE === 8) { $X = $index >> 32 << 32 >> 32; $Z = ($index & 4294967295.0) << 32 >> 32; } else { list($X, $Z) = \explode(":", $index); $X = (int) $X; $Z = (int) $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); } }
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 (WeatherManager::isRegistered($targetLevel)) { $targetLevel->getWeather()->sendWeather($this); } if ($this->server->netherEnabled) { if ($targetLevel == $this->server->netherLevel) { $pk = new ChangeDimensionPacket(); $pk->dimension = ChangeDimensionPacket::DIMENSION_NETHER; $this->dataPacket($pk); $this->shouldSendStatus = true; } elseif ($oldLevel == $this->server->netherLevel) { $pk = new ChangeDimensionPacket(); $pk->dimension = ChangeDimensionPacket::DIMENSION_NORMAL; $this->dataPacket($pk); $this->shouldSendStatus = true; } } } }
protected function switchLevel(Level $targetLevel) { $oldLevel = $this->level; if (parent::switchLevel($targetLevel)) { foreach ($this->usedChunks as $index => $d) { list($X, $Z) = \explode(":", $index); $X = (int) $X; $Z = (int) $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); } }
protected function switchLevel(Level $targetLevel) { $oldLevel = $this->level; if (parent::switchLevel($targetLevel)) { foreach ($this->usedChunks as $index => $d) { $X = $index >> 32 << 32 >> 32; $Z = ($index & 4294967295.0) << 32 >> 32; $this->unloadChunk($X, $Z, $oldLevel); } $this->usedChunks = []; $pk = new SetTimePacket(); $pk->time = $this->level->getTime(); $pk->started = $this->level->stopTime == \false; $this->dataPacket($pk); } }
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(); } } }
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 (!$oldLevel->getDimension() === $this->level->getDimension()) { if ($this->level->getDimension() === ChangeDimensionPacket::NETHER) { $cpk = new ChangeDimensionPacket(); $cpk->x = $this->x; $cpk->y = $this->y; $cpk->z = $this->z; $cpk->dimension = ChangeDimensionPacket::NETHER; $this->dataPacket($cpk); $cpk->unknown = true; } else { $cpk = new ChangeDimensionPacket(); $cpk->x = $this->x; $cpk->y = $this->y; $cpk->z = $this->z; $cpk->dimension = ChangeDimensionPacket::NORMAL; $this->dataPacket($cpk); $cpk->unknown = true; } } } }
public function changeDimension(Level $targetLevel, $isNether = false) { $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(WeatherManager::isRegistered($targetLevel)) $targetLevel->getWeather()->sendWeather($this); if ($isNether) { $pk = new ChangeDimensionPacket(); $pk->dimension = ChangeDimensionPacket::NETHER; $this->dataPacket($pk); $this->shouldSendStatus = true; } else { $pk = new ChangeDimensionPacket(); $pk->dimension = ChangeDimensionPacket::NORMAL; $this->dataPacket($pk); $this->shouldSendStatus = true; } } }