Example #1
0
 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);
     }
 }
Example #2
0
 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);
     }
 }
Example #3
0
 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);
     }
 }
Example #6
0
 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();
         }
     }
 }
Example #7
0
 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;
             }
         }
     }
 }
Example #8
0
 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;
         }
     }
 }