[Help] Is it possible to run some code in some time?

Discussion in 'Plugin Development' started by Cheesepro, Nov 7, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    Cheesepro

    So I know how to make a delay in bukkit by using Bukkit.getServer().getScheduler().scheduleSyncDelayedTask, but I dont know how to run some lines of code in sometime. For example: loop p.sendMessage("example"), for 20 sec. And stop running after the 20 sec. is it possible? Thank you!

    I found out by using .scheduleSyncRepeatingTask I can repeat some code, but it is going for ever... is there a way to "break;" it?
     
  2. Offline

    EgyptianKing

    Cheesepro
    Can you further explain what you mean?
     
  3. Offline

    Cheesepro

  4. Offline

    guitargun

    Cheesepro you can make a second scheduler below your first as a delayed task that cancels you repeating task after 20 seconds.
     
  5. Offline

    Walruski

  6. Offline

    Cheesepro

  7. Offline

    Konato_K

    Cheesepro When you make a new task it returns a BukkitTask with a cancel method.
     
  8. Offline

    Cheesepro

    Konato_K guitargun Walruski
    Some thing like this? But this one will loop forever in the .scheduleSyncRepeatingTask with no delay
    Code:java
    1. final BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
    2. final int taskid = scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
    3. @Override
    4. public void run() {
    5. for(Block block : cuboid){
    6. world.playEffect(block.getLocation(), Effect.MOBSPAWNER_FLAMES, 10);
    7. p.sendMessage("inside");
    8. }
    9. }
    10. }, 0L, 20L);
    11.  
    12. scheduler.scheduleSyncDelayedTask(this, new Runnable() {
    13. @Override
    14. public void run() {
    15. Bukkit.getScheduler().cancelTask(taskid);
    16. p.sendMessage("inside break");
    17. }
    18. }, 600L);
    19.  
     
Thread Status:
Not open for further replies.

Share This Page