/** * Copyright (c) SpaceToad, 2011 http://www.mod-buildcraft.com * * BuildCraft is distributed under the terms of the Minecraft Mod Public License * 1.0, or MMPL. Please check the contents of the license located in * http://www.mod-buildcraft.com/MMPL-1.0.txt */ package buildcraft.api.core; import net.minecraft.world.World; public class SafeTimeTracker { private long lastMark = Long.MIN_VALUE; private long duration = -1; /** * Return true if a given delay has passed since last time marked was called * successfully. */ public boolean markTimeIfDelay(World world, long delay) { if (world == null) return false; long currentTime = world.getTotalWorldTime(); if (currentTime < lastMark) { lastMark = currentTime; return false; } else if (lastMark + delay <= currentTime) { duration = currentTime - lastMark; lastMark = currentTime; return true; } else return false; } public long durationOfLastDelay() { return duration > 0 ? duration : 0; } public void markTime(World world) { lastMark = world.getTotalWorldTime(); } }