1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package me.km.scheduler;
- import java.util.HashMap;
- import java.util.concurrent.Executors;
- import java.util.concurrent.ScheduledExecutorService;
- import java.util.concurrent.TimeUnit;
- import me.km.api.Module;
- import net.minecraft.util.text.TextFormatting;
- public class SnuviScheduler extends Module
- {
- private boolean checker;
- private int counter;
- private final HashMap<Integer, SnuviTask> tasks;
-
- public SnuviScheduler(String mname, String prefix, TextFormatting color)
- {
- super(mname, prefix, color);
- counter = 0;
- tasks = new HashMap<>();
- }
-
- public void cancelTask(int id)
- {
- tasks.remove(id);
- }
-
- public int scheduleRepeatingTask(Runnable r, long ticks, long rtimer)
- {
- counter++;
- tasks.put(counter, new SnuviTask(r, ticks, rtimer));
- return counter;
- }
-
- public int scheduleTask(Runnable r, int delay)
- {
- return scheduleRepeatingTask(r, delay, 0);
- }
-
- public void tick()
- {
- checker = false;
- long l = System.currentTimeMillis();
- tasks.values().removeIf(task ->
- {
- if(checker)
- {
- return false;
- }
- if(System.currentTimeMillis() - l > 25)
- {
- checker = true;
- this.sendWarningToConsole("Der Scheduler ist länger als 25 ms gelaufen.");
- return false;
- }
- return task.tick();
- });
- }
-
- public static void scheduleAsyncTask(Runnable r)
- {
- scheduleAsyncTask(r, 1);
- }
-
- public static void scheduleAsyncTask(Runnable r, long ticks)
- {
- ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
- executor.schedule(r, ticks * 50, TimeUnit.MILLISECONDS);
- executor.shutdown();
- }
- }
|