最終更新:
famima2015 2016年06月27日(月) 17:02:16履歴
今回はサーバーに入ったら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();//サーバーを止めます
}
}

最新コメント