*変更点
変更点は以下の2つです。
*対応方法
・スケジューラAPI
---------------------
------------------
・API変更について
変更点は以下の2つです。
- スケジューラAPI
- APIバージョンのALPHAを廃止
*対応方法
・スケジューラAPI
以下のようにコードを置き換えます。
なお、実行しているクラスはPluginBaseを継承しているものとします。
・DelayedTask, RepeatingTask, DelayedRepeatingTaskを使用していた場合:
PHP:
use pocketmine\scheduler\PluginTask;
$task = new class($this) extends PluginTask {
public function onRun(int $tick) {
$plugin = $this->getOwner();// 過去はプラグインメインクラスをこう呼び出せました
// 処理
}
}
$this->getServer()->getScheduler()->scheduleDelayedTask($task, $tick);
$this->getServer()->getScheduler()->scheduleRepeatingTask($task, $tick);
$this->getServer()->getScheduler()->scheduleDelayedRepeatingTask($task, $delayTick, $repeatTick);
↓ getServer()を介する必要がなくなりました。
↓ また、PluginTaskクラスは廃止されたので、代わりにTaskクラスを継承する必要があります。
PHP:
use pocketmine\plugin\Plugin;
use pocketmine\scheduler\Task;
$task = new class($this) extends Task {
public __construct(Plugin $owner) {
$this->owner = $owner;// メインクラスを使いたい場合は手動で代入し、
}
public function onRun(int $tick) {
$plugin = $this->owner;// メンバ変数を呼び出す必要があります
// 処理
}
}
$this->getScheduler()->scheduleDelayedTask($task, $tick);
$this->getScheduler()->scheduleRepeatingTask($task, $tick);
$this->getScheduler()->scheduleDelayedRepeatingTask($task, $delayTick, $repeatTick);
・scheduleAsyncTask(非同期)を使用していた場合:
PHP:
use pocketmine\scheduler\AsyncTask;
use pocketmine\Server;
$task = new class extends AsyncTask {
public function onRun() {
// 処理
}
public function onCompletion(Server $server) {
// 完了時処理
}
}
$this->getServer()->getScheduler()->scheduleAsyncTask($task);
↓ 呼び出すコードを変更する必要があります
PHP:
use pocketmine\scheduler\AsyncTask;
use pocketmine\Server;
$task = new class extends AsyncTask {
public function onRun() {
// 処理
}
public function onCompletion(Server $server) {
// 完了時処理
}
}
$this->getServer()->getAsyncPool()->submitTask($task);
・API変更について
3.0.0のDevToolsを自分でビルドし....は面倒なのでビルドしておきました。
予めプラグインのplugin.ymlのAPIを3.0.0に合わせてから使用して下さい。
最後の編集: