本文整理汇总了PHP中pocketmine\entity\Effect::setDuration方法的典型用法代码示例。如果您正苦于以下问题:PHP Effect::setDuration方法的具体用法?PHP Effect::setDuration怎么用?PHP Effect::setDuration使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pocketmine\entity\Effect
的用法示例。
在下文中一共展示了Effect::setDuration方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: setVanish
/**
* 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;
}