2013-08-25 15:36:29 +02:00
|
|
|
/**
|
|
|
|
* 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
|
2013-04-13 16:35:13 +02:00
|
|
|
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
|
|
|
*/
|
|
|
|
package buildcraft.api.core;
|
|
|
|
|
|
|
|
import net.minecraft.world.World;
|
|
|
|
|
2013-12-01 07:41:01 +01:00
|
|
|
public class SafeTimeTracker
|
|
|
|
{
|
2013-04-13 16:35:13 +02:00
|
|
|
|
2013-08-08 19:10:11 +02:00
|
|
|
private long lastMark = Long.MIN_VALUE;
|
2013-08-25 15:36:29 +02:00
|
|
|
private long duration = -1;
|
2013-04-13 16:35:13 +02:00
|
|
|
|
|
|
|
/**
|
2013-12-01 07:41:01 +01:00
|
|
|
* Return true if a given delay has passed since last time marked was called successfully.
|
2013-04-13 16:35:13 +02:00
|
|
|
*/
|
2013-12-01 07:41:01 +01:00
|
|
|
public boolean markTimeIfDelay(World world, long delay)
|
|
|
|
{
|
2013-04-13 16:35:13 +02:00
|
|
|
if (world == null)
|
|
|
|
return false;
|
|
|
|
|
2013-08-25 15:36:29 +02:00
|
|
|
long currentTime = world.getTotalWorldTime();
|
2013-04-13 16:35:13 +02:00
|
|
|
|
2013-12-01 07:41:01 +01:00
|
|
|
if (currentTime < lastMark)
|
|
|
|
{
|
2013-04-13 16:35:13 +02:00
|
|
|
lastMark = currentTime;
|
|
|
|
return false;
|
2013-12-01 07:41:01 +01:00
|
|
|
}
|
|
|
|
else if (lastMark + delay <= currentTime)
|
|
|
|
{
|
2013-08-08 19:10:11 +02:00
|
|
|
duration = currentTime - lastMark;
|
2013-08-25 15:36:29 +02:00
|
|
|
lastMark = currentTime;
|
2013-04-13 16:35:13 +02:00
|
|
|
return true;
|
2013-12-01 07:41:01 +01:00
|
|
|
}
|
|
|
|
else
|
2013-04-13 16:35:13 +02:00
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
2013-08-25 15:36:29 +02:00
|
|
|
|
2013-12-01 07:41:01 +01:00
|
|
|
public long durationOfLastDelay()
|
|
|
|
{
|
2013-08-25 15:36:29 +02:00
|
|
|
return duration > 0 ? duration : 0;
|
2013-08-08 19:10:11 +02:00
|
|
|
}
|
2013-04-13 16:35:13 +02:00
|
|
|
|
2013-12-01 07:41:01 +01:00
|
|
|
public void markTime(World world)
|
|
|
|
{
|
2013-08-25 15:36:29 +02:00
|
|
|
lastMark = world.getTotalWorldTime();
|
2013-04-13 16:35:13 +02:00
|
|
|
}
|
|
|
|
}
|