diff options
Diffstat (limited to 'src/main/java/com/sosnitzka/taiga/util')
| -rw-r--r-- | src/main/java/com/sosnitzka/taiga/util/TickTask.java | 28 | ||||
| -rw-r--r-- | src/main/java/com/sosnitzka/taiga/util/TickTaskHandler.java | 39 |
2 files changed, 67 insertions, 0 deletions
diff --git a/src/main/java/com/sosnitzka/taiga/util/TickTask.java b/src/main/java/com/sosnitzka/taiga/util/TickTask.java new file mode 100644 index 0000000..a928c68 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/util/TickTask.java @@ -0,0 +1,28 @@ +package com.sosnitzka.taiga.util; + + +public class TickTask { + private Runnable task; + private int targetTicks = 0; + private int ticks; + + public TickTask(int targetTicks, Runnable runnable) { + this.task = runnable; + this.targetTicks = targetTicks; + } + + public TickTask(Runnable runnable) { + this.task = runnable; + this.targetTicks = 1; + } + + public boolean tickRun() { + ticks++; + + if (ticks >= targetTicks) { + this.task.run(); + return true; + } + return false; + } +} diff --git a/src/main/java/com/sosnitzka/taiga/util/TickTaskHandler.java b/src/main/java/com/sosnitzka/taiga/util/TickTaskHandler.java new file mode 100644 index 0000000..c11921e --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/util/TickTaskHandler.java @@ -0,0 +1,39 @@ +package com.sosnitzka.taiga.util; + + +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class TickTaskHandler { + private List<TickTask> tickTasks = new ArrayList<TickTask>(); + + + private TickTaskHandler() { + } + + public static TickTaskHandler getInstance() { + return InstanceHolder.INSTANCE; + } + + @SubscribeEvent + public void onTick(TickEvent.ServerTickEvent e) { + for (Iterator<TickTask> iterator = tickTasks.iterator(); iterator.hasNext(); ) { + TickTask task = iterator.next(); + if (task.tickRun()) { + iterator.remove(); + } + } + } + + public void addTask(TickTask tickTask) { + tickTasks.add(tickTask); + } + + private static final class InstanceHolder { + static final TickTaskHandler INSTANCE = new TickTaskHandler(); + } +} |
