Java Bukkit延迟与另一个类中的Schedule

时间:2017-05-15 01:53:37

标签: java this scheduler bukkit

我试图在bukkit插件中延迟命令。这是用于它的实际调度程序。

public class Particle implements CommandExecutor
{

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] arg) {

    if (sender instanceof Player)
    {
            Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable(){

            @Override
            public void run() {
                player.sendMessage("blabla");

            }

        }, 12);
return true;
}

return false;
}

这就是我将Particle类实现到插件中的方法。

public void onEnable(){
    this.getCommand("part").setExecutor(new Particle());
}

因为这个调度程序在一个类中,我需要对我的插件的引用,我不能在scheduleSyncDelayedTask使用“this”(这个,新的Runnable(){ 我该使用什么来获取对我的插件的引用?

2 个答案:

答案 0 :(得分:1)

您可以将引用传递给JavaPlugin类作为侦听器的构造函数

private JavaPlugin plugin;


public Particle(JavaPlugin plugin){
    this.plugin = plugin;
}

@Override
public boolean onCommand(/* Do your thing*/){
    Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, /*...*/);
}

然后,将侦听器设置为Particle

的新实例
setExecutor(new Particle(this), /*...*/);

答案 1 :(得分:0)

我自己解决了这个问题。对于那些正在寻找同样事物的人。你需要改变

Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable(){

Bukkit.getScheduler().scheduleSyncDelayedTask(JavaPlugin.getProvidingPlugin(<NameOfTheClassYouAreIn.class), new Runnable(){