public function despawnFromAll(Level $level = null) { foreach ($level instanceof Level ? $level->getPlayers() : Server::getInstance()->getOnlinePlayers() as $player) { $this->despawnFrom($player); } }
public function spawnLevelItemCases(Level $level) { if (!isset($this->cases[$level->getName()])) { return; } $ps = $level->getPlayers(); if (!count($ps)) { return; } foreach (array_keys($this->cases[$level->getName()]) as $cid) { $this->sndItemCase($level, $cid, $ps); } }
/** * Allow to switch between levels Vanished! * You need to teleport the player to a different level in order to call this event * * @param Player $player * @param Level $origin * @param Level $target */ public function switchLevelVanish(Player $player, Level $origin, Level $target) { if ($origin->getName() !== $target->getName() && $this->isVanished($player)) { // This will be used if the specified player has "noPacket" enabled. // A temporal check will be used for "the other players". $noPacket = $this->hasNoPacket($player); // Just as prevention if any player has "noPacket" disabled... $pk = new MobEffectPacket(); $pk->effectId = $this->invisibilityEffect->getId(); $pk->amplifier = $this->invisibilityEffect->getAmplifier(); $pk->particles = $this->invisibilityEffect->isVisible(); $pk->duration = $this->invisibilityEffect->getDuration(); // Show to origin's players $pk->eventId = MobEffectPacket::EVENT_REMOVE; foreach ($origin->getPlayers() as $p) { if ($p !== $player) { if ($this->isVanished($player)) { if (!$noPacket) { $pk->eid = $player->getId(); $p->dataPacket($pk); } else { $p->showPlayer($player); } } if ($this->isVanished($p)) { if (!$this->hasNoPacket($p)) { $pk->eid = $p->getId(); $player->dataPacket($pk); } else { $player->showPlayer($p); } } } } // Hide to target's players $pk->eventId = MobEffectPacket::EVENT_ADD; foreach ($target->getPlayers() as $p) { if ($p !== $player) { if ($this->isVanished($player)) { if (!$noPacket) { $pk->eid = $player->getId(); $p->dataPacket($pk); } else { $p->hidePlayer($player); } } if ($this->isVanished($p)) { if (!$this->hasNoPacket($p)) { $pk->eid = $p->getId(); $player->dataPacket($pk); } else { $player->hidePlayer($p); } } } } } }
public function updateBlock2(Block $block, Level $level, $blockType) { $players = $level->getPlayers(); foreach ($players as $p) { $pk = new UpdateBlockPacket(); $pk->x = $block->getX(); $pk->y = $block->getY(); $pk->z = $block->getZ(); $pk->block = $blockType; $pk->meta = 0; $p->dataPacket($pk); $level->setBlockIdAt($block->getX(), $block->getY(), $block->getZ(), $blockType); $pos = new Position($block->x, $block->y, $block->z); $block = $level->getBlock($pos, true); $direct = true; $update = true; $level->setBlock($pos, $block, $direct, $update); } }
/** * @param CommandSender $sender * @param Level $level */ public function sendLevelInfo(CommandSender $sender, Level $level) { $sender->sendMessage("Name: " . $level->getName()); $sender->sendMessage("Id: " . $level->getId()); $sender->sendMessage("Entities: " . count($level->getEntities())); $sender->sendMessage("Players: " . count($level->getPlayers())); $sender->sendMessage("Tiles: " . count($level->getTiles())); $sender->sendMessage("Chunks: " . count($level->getChunks())); $sender->sendMessage("Loaders: " . count($level->getLoaders())); $sender->sendMessage("Spawn: " . $level->getSafeSpawn()->getFloorX() . ":" . $level->getSafeSpawn()->getFloorY() . ":" . $level->getSafeSpawn()->getFloorZ()); $sender->sendMessage("Time: " . $level->getTime()); $sender->sendMessage("Tick-rate: " . $level->getTickRate()); $sender->sendMessage("Tick-rate-time: " . $level->getTickRateTime()); $sender->sendMessage("Seed: " . $level->getSeed()); $sender->sendMessage("Is-auto-saving: " . ($level->getAutoSave() ? TextFormat::GREEN . "yes" : TextFormat::RED . "no")); $sender->sendMessage("Is-generated: " . ($level->getServer()->isLevelGenerated($level->getName()) ? TextFormat::GREEN . "yes" : TextFormat::RED . "no")); $sender->sendMessage("Is-loaded: " . ($level->getServer()->isLevelLoaded($level->getName()) ? TextFormat::GREEN . "yes" : TextFormat::RED . "no")); }