Advertisement
Nuubles

Untitled

Mar 15th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.50 KB | None | 0 0
  1. package net.karanteeni.core.timers;
  2.  
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. import java.util.Map.Entry;
  6. import java.util.logging.Level;
  7.  
  8. import org.bukkit.Bukkit;
  9. import org.bukkit.plugin.Plugin;
  10. import org.bukkit.scheduler.BukkitRunnable;
  11. import org.bukkit.scheduler.BukkitTask;
  12.  
  13. import net.karanteeni.core.KaranteeniCore;
  14.  
  15. public class KaranteeniTimerInitiater {
  16.     private final Map<KaranteeniTimer, Integer> listeners = new HashMap<KaranteeniTimer, Integer>();
  17.     private final BukkitTask timer;
  18.     private int tickCount = 0;
  19.     private Plugin plugin = KaranteeniCore.getPlugin(KaranteeniCore.class);
  20.    
  21.     /**
  22.      * Creates and starts the timer
  23.      */
  24.     public KaranteeniTimerInitiater()
  25.     {
  26.         BukkitRunnable timer = new BukkitRunnable() {
  27.             @Override
  28.             public void run() {
  29.                 runTimer();
  30.             }
  31.         };
  32.        
  33.         this.timer = timer.runTaskTimer(plugin, 1, 1);
  34.     }
  35.    
  36.     /**
  37.      * Register a timer to be runned
  38.      * @param timer timer which is called
  39.      * @param tickLimit tickes between each call
  40.      */
  41.     public void registerTimer(KaranteeniTimer timer, int tickLimit) throws IllegalArgumentException
  42.     {
  43.         if(tickLimit > 0)
  44.             listeners.put(timer, tickLimit);
  45.         else
  46.             throw new IllegalArgumentException("Illegal time! Has to be 1-N. " + tickLimit + " given.");
  47.     }
  48.    
  49.     /**
  50.      * Unregister the timer from timers
  51.      * @param timer
  52.      */
  53.     public void unregisterTimer(KaranteeniTimer timer)
  54.     {
  55.         timer.timerStopped();
  56.         listeners.remove(timer);
  57.     }
  58.    
  59.     /**
  60.      * Runs all timers once
  61.      */
  62.     public void runTimer()
  63.     {
  64.         for (Entry<KaranteeniTimer, Integer> entry : listeners.entrySet())
  65.         {
  66.             //Has there been X ticks since last call
  67.             if(tickCount % entry.getValue() == 0)          
  68.             {
  69.                 //The main function of the timer
  70.                 Bukkit.getScheduler().runTask(plugin,
  71.                     new Runnable()
  72.                     {
  73.                         @Override
  74.                         public void run()
  75.                         {
  76.                             try
  77.                             { entry.getKey().runTimer(); }
  78.                             catch(Exception e)
  79.                             { plugin.getLogger().log(Level.WARNING, "An Error happened in timer runnable", e); }
  80.                         }
  81.                     });
  82.             }
  83.             else
  84.             {
  85.                 //Runs the timerWait() function
  86.                 Bukkit.getScheduler().scheduleSyncDelayedTask(plugin,
  87.                     new Runnable()
  88.                     {
  89.                         @Override
  90.                         public void run()
  91.                         {
  92.                             try
  93.                             { entry.getKey().timerWait(); }
  94.                             catch(Exception e)
  95.                             { plugin.getLogger().log(Level.WARNING, "An Error happened in timer waiter runnable", e); }
  96.                         }
  97.                     });
  98.             }
  99.         }
  100.        
  101.         if(tickCount == Integer.MAX_VALUE)
  102.             tickCount = 0;
  103.         ++tickCount;
  104.     }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement