【マイクラ】Timer など非同期 時に イベント送信する方法

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());
            }
        });
    }