package mods.eln.server;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.TickEvent.Phase;
import cpw.mods.fml.common.gameevent.TickEvent.ServerTickEvent;
import net.minecraftforge.common.MinecraftForge;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class DelayedTaskManager {
LinkedList<ITask> tasks = new LinkedList<DelayedTaskManager.ITask>();
public DelayedTaskManager() {
MinecraftForge.EVENT_BUS.register(this);
FMLCommonHandler.instance().bus().register(this);
}
public void clear() {
tasks.clear();
}
@SubscribeEvent
public void tick(ServerTickEvent event) {
if (event.phase != Phase.END) return;
List<ITask> cpy = new ArrayList<DelayedTaskManager.ITask>(tasks);
tasks.clear();
for (ITask t : cpy) {
t.run();
}
}
interface ITask {
void run();
}
public void add(ITask t) {
tasks.add(t);
}
}