EFFECT_NIGHT плагин

Подскажите пожалуйста, как сделать чтобы после смерти эффект ночного видения не пропадал?

<?php namespace FixLight; use pocketmine\{Player, Server}; use pocketmine\event\player\{PlayerJoinEvent, PlayerRespawnEvent}; use pocketmine\plugin\PluginBase; use pocketmine\event\Listener; use pocketmine\entity\Effect; Class main extends PluginBase implements Listener{ public function onEnable(){ $this->getServer()->getPluginManager()->registerEvents($this, $this); } public function onJoin(PlayerJoinEvent $e){ $player = $e->getPlayer(); $player->addEffect(Effect::getEffect(16)->setVisible(false)->setAmplifier(1)->setDuration(20 * 9999999)); } public function onResp(PlayerRespawnEvent $e){ $player = $e->getPlayer(); $player->addEffect(Effect::getEffect(16)->setVisible(false)->setAmplifier(1)->setDuration(20 * 9999999)); } }

Khm

1 лайк

При респавне игроку эффект выдается сразу же (ещё до того, пока сервер что-то сделает). И уже после выдачи эффекта, сервер начинает его регенить, тпхать на спавн, и удалять эффекты разумеется ). (сам сталкивался с такой проблемой)

Для того что-бы это исправить, тебе надо запралировать выдачу эффекта как минимум на 1 тик (я рекомендую 5)

use pocketmine\scheduler\CallbackTask;
public function onRespawn(PlayerRespawnEvent $event) {

    $player = $event->getPlayer();

    $this->getServer()->getScheduler()->scheduleDelayedTask(new CallbackTask (array($this, "giveEffect"), array($player)), 5);

}

public function giveEffect($player) {

    $player->addEffect(Effect::getEffect(16)->setVisible(false)->setAmplifier(1)->setDuration(20 * 9999999));

}

Спасиб

Нажми на Вопрос решен

1 лайк