Timer や Thread などの 非同期通信を使った時に、
単純に、Bukkit.dispatchCommand を使用すると、エラーになってしまった。
以下のように、 Bukkit.getServer().getScheduler().callSyncMethod( を使うとよいみたい。
public void test() {
Timer timer = new Timer(false);
TimerTask task = new TimerTask() {
long beforeTime = System.currentTimeMillis();
@Override
public void run() {
long t = System.currentTimeMillis();
System.out.println("前回実行終了時間から今回実行開始されるまでにかかった時間="+(t - beforeTime));
exe();
}
};
timer.scheduleAtFixedRate(task, 0, 30000);
}
public void exe() {
Bukkit.getServer().getScheduler().callSyncMethod(plugin, new Callable<Object>() {
@Override
public Object call() throws Exception {
return Bukkit.dispatchCommand( Bukkit.getServer().getConsoleSender(), "kick " + player.getName());
}
});
}