Pocketmine-MP非公式日本語wikiです。Pocketmine-MPに関する情報を発信しています。

×

スケジューラーとは

Schedulerを利用すると遅延処理などを実装することが出来ます
他にも何秒ごとに実行などもできます。とても便利です。

使用例

今回はサーバーに入ったら1秒毎に時間を表示するプラグインを作ります。

<?php
namespace main;

use pocketmine\plugin\PluginBase;
use pocketmine\Player;
use pocketmine\event\Listener;

use pocketmine\event\player\PlayerJoinEvent;

use pocketmine\scheduler\PluginTask;//これをuseしてください
class main extends PluginBase implements Listener{
	
	public function onEnable(){ //サーバー起動時の処理
		$this->getServer()->getPluginManager()->registerEvents($this,$this);
	}

	public function onjoin(PlayerJoinEvent $event){//プレイヤーがサーバーに入った時の処理
		$player = $event->getPlayer(); //イベントからプレイヤー取得
		$task = new time($this, $player);//インスタンス作成
		$this->getServer()->getScheduler()->scheduleRepeatingTask($task, 20);

		/*今回は1秒毎に実行するので20(1Tick×20)にしています
		scheduleRepeatingTaskをscheduleDelayedTaskに
		変えると何秒後に実行する!というものになります*/
	}
}
class time extends PluginTask{//PluginTaskを継承したクラスです。phpファイルを分けてもできます
   public function __construct(PluginBase $owner, Player $player) {
      parent::__construct($owner);
      $this->player = $player;//Playerデータを引き継ぎます
   }

   public function onRun($currentTick){
      $time=date("Y年m月j日 H時i分s秒");//時間を取得
      $this->player->sendTip($time);
   }
}

簡単にスケジューラーを使うには

難しすぎて分からない...

分かるんだけどもっと簡単に出来ないかな?

実はCallbackTaskを使用して簡単にコードを書くことが出来ます。今回は起動してからXX分後にサーバーを止めるコードです。
<?php
namespace main;

use pocketmine\plugin\PluginBase;
use pocketmine\scheduler\CallbackTask;//追加でこれをuseします

class main extends PluginBase{
	
	public function onEnable(){ //サーバー起動時の処理
		$this->getServer()->getPluginManager()->registerEvents($this,$this);
                $this->getServer()->getScheduler()->scheduleDelayedTask(
                new CallbackTask([$this,"StopTask"]), 20 * 60 * XX);
                //XXを分に自由に変えてください
	}
        public function StopTask(){
                $this->getServer()->shutdown();//サーバーを止めます
        }
}

メニュー

トップページ
メンバー募集メンバーページ

カウンター

訪問者数

アクセス数

フリーエリア



メンバーのみ編集できます