2017-08-17 40 views
1

我有一個bukkit的問題。我想做一個重複的任務,發送一個消息與一個球員的座標。 謝謝你的幫助!bukkit調度器重複

Bukkit.getScheduler().scheduleAsyncRepeatingTask(this.main, new Runnable() { 

         @Override 
         public void run() { 
          Player tp = Bukkit.getPlayer(args[1]); 
          p.sendMessage("§bThe coordinates of §4" + tp.getName()); 
          p.sendMessage("§eX: " + tp.getLocation().getBlockX()); 
          p.sendMessage("§eY: " + tp.getLocation().getBlockY()); 
          p.sendMessage("§eZ: " + tp.getLocation().getBlockZ()); 
          p.sendMessage("§eD: " + tp.getLocation().getDirection()); 

         } 

        }, 1, 1); 

回答

0

你不應該使用異步任務訪問bukkit API。安排同步任務,而不是,例如使用BukkitRunnable和lambda:

new BukkitRunnable(() -> { 

//Runnable run method, do stuff here 

}).runTaskTimer (plugin, initialDelay, repeatingDelay); 
+0

謝謝!我嘗試了一個同步任務,但它也沒有工作。我沒有使用BukkitRunnable ... –

+0

確保將解決問題的任何答案標記爲正確的解決方案。這有助於未來的用戶與您的問題相同! – Kerooker

0

您還可以使用:

getServer().getScheduler().runTaskTimer(this, new Runnable() { 
     @Override 
     public void run() { 
      //your code here 
     } 
    }, initDelay, period); 

其中:

initDelay - 在初始延遲蜱

週期 - 週期在蜱中的任務之間

+0

謝謝你的幫助! –