2016-06-21 4 views
1

안녕하세요 어떤 아이디어로 scheduleSyncDelayedTask를 만드는 방법으로 이전 작업을 취소하고 다시 실행 취소해야합니까?Bukkit runnable tips

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

당신이 조금 더 질문을 설명 할 수 있습니까? 지금 당장은 2 개의 작업이 생성되고, 후자는 이전 작업을 취소하는 것처럼 보입니다. 그게 네가 원하는게 아니야? –

+0

기본적으로 나는 여러 시작 시간에 여러 가지 작업을 계획하고 싶습니다. 따라서이를 취소해야합니다. 하지만 현재 첫 번째 scheduleSyncDelayedTask 완전히 다른 scheduleSyncRepeatingTask를 중지하면 타이머를 안타 때, 나는 그 taskID 새로운 것들에 재 할당되고 있기 때문에, 나는 많은 방법을 shedule 많은 작업을하고 scheduleSyncDelayedTask 나중에 사용하여 그들을 막을 방법이 있는지 묻는 오전 것 같아요. – elving

+0

이 코드가 올바르게 컴파일 되었습니까? 내가 볼 수있는 것부터, final이 아닌 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을 사용할 수 있습니다 그것은 만드는이 때문에 작업을 쉽게 생성 할 수 있습니다 자기 취소 해