2016-06-21 21 views
1

你好任何想法如何使scheduleSyncDelayedTask,所以它不取消以前的任務,應該運行並稍後取消?Bukkit可運行提示

for(int x = 0; x < 8; x++){ 
    int taskID = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(Main.getPlugin(), new Runnable() {   
     @Override 
     public void run() {     
      CreateItems.createItemsOnStand2(player, bedna, listitems);  
     } 
    }, 30*x , 2+x); 

    Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.getPlugin(), new Runnable() { 
     public void run() { 
      Bukkit.getScheduler().cancelTask(taskID); 
     } 
    }, (x==0) ? 30 : 30*x);  
} 
+0

你能解釋一下你的問題多一點?現在,看起來你有兩個任務正在創建,後者取消了前者。這不是你想要的嗎? –

+0

基本上我想在不同的開始時間收集幾個任務,這些任務應該相應地取消。但目前當第一個scheduleSyncDelayedTask命中它的計時器時,它只是完全停止了其他scheduleSyncRepeatingTask,我猜它是因爲taskID被重新分配給了新的,所以我問是否有辦法處理許多任務,並在稍後使用scheduleSyncDelayedTask來阻止它們。 – elving

+0

你確定這段代碼編譯好嗎?從我所看到的,你應該得到一個有關taskID不是最終的編譯器錯誤。 –

回答

3

您可以使用任務調度

new BukkitRunnable() { 
    @Override 
    public void run() { 
     //Code you need running 
     this.cancel(); //Cancelling 
    } 
}.runTaskTimer(pluginInstance, delayTime, repeatingTime); 



new BukkitRunnable() { 
    @Override 
    public void run() { 
     //Code you need running 
     this.cancel(); //Cancelling 
    } 
}.runTaskLater(pluginInstance, delayTime); 

BukkitRunnables這使得它如此的任務可以輕鬆創建和自撤銷