aa0307bb
1.10 Bukkit如何实现输入两个指令 分别开启关闭同一个runTaskTimer计时器

首先,已经写好了两个类
DemoRunnable1 extends BukkitRunnable
DemoRunnable2 extends BukkitRunnable


目标是:
①输入/test 1可以开启一号计时器
(这一步做好了)
if(args[0].equalsIgnoreCase("1")) {       

    DemoRunnable d1 = new DemoRunnable();
    d1.runTaskTimer(...);
}


②输入/test 2可以开启二号计时器
(这一步做好了)

if(args[0].equalsIgnoreCase("2")) {       

  DemoRunnable d2 = new DemoRunnable();
  d2.runTaskTimer(...);

}


③输入/test cancel可以同时关闭上面两个计时器(如果开启了的话)


问题就是卡在③了


William_Shi
本帖最后由 William_Shi 于 2020-6-21 13:37 编辑

你要记住一点
只要是BukkitScheduler,BukkitRunnable等等任务调度
全都有返回值的
也就是BukkitTask
BukkitTask类有一个cancel方法
可以取消任务

所以你得这个就很简单了
直接存起来你的俩BukkitTask
在合适的时机cancel掉
比如说
BukkitTask task =

new BukkitRunnable(){

@Override
public void run(){



xxx


}


}.runTask(xxx);


然后task.cancel();

南柯郡守
.getTaskID()
.cancelTask(id)