Guest User

Untitled

a guest
Jan 19th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. <?php
  2. namespace SOFe\YieldTask;
  3. use pocketmine\plugin\Plugin;
  4. use pocketmine\scheduler\PluginTask;
  5. class YieldTask extends PluginTask{
  6. const UNIT_TICKS = 1;
  7. const UNIT_SECONDS = 20;
  8. const UNIT_MINUTES = 1200;
  9. private $generator;
  10. private $factor;
  11. public function __construct(Plugin $owner, $generator, int $unit = self::UNIT_SECONDS){
  12. if(is_callable($generator)) $generator = $generator();
  13. if(!($generator instanceof \Generator)) throw new \InvalidArgumentException;
  14. parent::__construct($owner);
  15. $this->generator = $generator;
  16. $this->factor = $unit;
  17. $this->owner->getServer()->getScheduler()->scheduleDelayedTask($this, $this->generator->current() * $this->factor);
  18. }
  19. public function onRun(int $tick){
  20. $this->generator->next();
  21. $this->owner->getServer()->getScheduler()->scheduleDelayedTask($this, $this->generator->current() * $this->factor);
  22. }
  23. }
Add Comment
Please, Sign In to add comment