/** * Set the Vanish mode on or off * * @param Player $player * @param bool $state * @param bool $noPacket * @return bool */ public function setVanish(Player $player, $state, $noPacket = false) { if (!is_bool($state)) { return false; } if ($this->invisibilityEffect === null) { $effect = new Effect(Effect::INVISIBILITY, "Vanish", 127, 131, 146); $effect->setDuration(1728000); // 24 hours... Well... No one will play more than this, so I think its OK xD $this->invisibilityEffect = $effect; } $this->getServer()->getPluginManager()->callEvent($ev = new PlayerVanishEvent($this, $player, $state, $noPacket)); if ($ev->isCancelled()) { return false; } $state = $ev->willVanish(); $player->setDataFlag(Entity::DATA_FLAGS, Entity::DATA_FLAG_INVISIBLE, $state); $player->setDataProperty(Entity::DATA_SHOW_NAMETAG, Entity::DATA_TYPE_BYTE, $state ? 0 : 1); /** @var Player[] $pl */ $pl = []; foreach ($player->getLevel()->getPlayers() as $p) { if ($state || !$state && !in_array($p->getName(), $ev->getHiddenFor())) { $pl[] = $p; } } $noPacket = $ev->noPacket(); if ($this->isVanished($player) && $ev->noPacket() !== ($priority = $this->hasNoPacket($player))) { $noPacket = $priority; } if (!$noPacket) { if (!$state) { $pk = new MobEffectPacket(); $pk->eid = $player->getId(); $pk->eventId = MobEffectPacket::EVENT_REMOVE; $pk->effectId = $this->invisibilityEffect->getId(); } else { $pk = new MobEffectPacket(); $pk->eid = $player->getId(); $pk->effectId = $this->invisibilityEffect->getId(); $pk->amplifier = $this->invisibilityEffect->getAmplifier(); $pk->particles = $this->invisibilityEffect->isVisible(); $pk->duration = $this->invisibilityEffect->getDuration(); $pk->eventId = MobEffectPacket::EVENT_ADD; } $this->getServer()->broadcastPacket($pl, $pk); } else { if (!$state) { foreach ($pl as $p) { $p->showPlayer($player); } } else { foreach ($pl as $p) { $p->hidePlayer($player); } } } $this->getSession($player)->setVanish($state, !$state ? $ev->noPacket() : $noPacket); return true; }
private function initialHuman(Player $player) { $player->setDataFlag($player::DATA_PLAYER_FLAGS, $player::DATA_PLAYER_FLAG_SLEEP, false); $player->setDataProperty($player::DATA_PLAYER_BED_POSITION, $player::DATA_TYPE_POS, [0, 0, 0]); $inventory = new PlayerInventory($player); $this->setPrivateVariableData($player, 'inventory', $inventory); if ($player instanceof Player) { $player->addWindow($inventory, 0); } if (!$player instanceof Player) { if (isset($player->namedtag->NameTag)) { $player->setNameTag($player->namedtag["NameTag"]); } if (isset($player->namedtag->Skin) and $player->namedtag->Skin instanceof CompoundTag) { $player->setSkin($player->namedtag->Skin["Data"], $player->namedtag->Skin["Slim"] > 0); } $this->setPrivateVariableData($player, 'uuid', UUID::fromData($player->getId(), $player->getSkinData(), $player->getNameTag())); } if (isset($player->namedtag->Inventory) and $player->namedtag->Inventory instanceof ListTag) { foreach ($player->namedtag->Inventory as $item) { if ($item["Slot"] >= 0 and $item["Slot"] < 9) { // Hotbar $player->inventory->setHotbarSlotIndex($item["Slot"], isset($item["TrueSlot"]) ? $item["TrueSlot"] : -1); } elseif ($item["Slot"] >= 100 and $item["Slot"] < 104) { // Armor $player->getInventory()->setItem($player->getInventory()->getSize() + $item["Slot"] - 100, NBT::getItemHelper($item)); } else { $player->getInventory()->setItem($item["Slot"] - 9, NBT::getItemHelper($item)); } } } $this->initialEntity($player); }
public function disableSneak(Player $player) { unset($this->players[$player->getName()]); $player->setDataFlag(Entity::DATA_FLAGS, Entity::DATA_FLAG_SNEAKING, false); }
public function disableSneak(Player $player) { unset($this->players[$player->getName()]); $player->setDataFlag(Entity::DATA_FLAGS, Entity::DATA_FLAG_SNEAKING, false); $player->sendMessage(TextFormat::GOLD . "You have Disabled sneaking!"); }