Minor TP and timer tweaks.

This commit is contained in:
KHobbits 2013-04-22 00:11:13 +01:00
parent f48871ff29
commit dfc62bca76
4 changed files with 56 additions and 42 deletions

View file

@ -225,7 +225,7 @@ public class Essentials extends JavaPlugin implements IEssentials
final MetricsStarter metricsStarter = new MetricsStarter(this); final MetricsStarter metricsStarter = new MetricsStarter(this);
if (metricsStarter.getStart() != null && metricsStarter.getStart() == true) if (metricsStarter.getStart() != null && metricsStarter.getStart() == true)
{ {
getScheduler().runTaskLaterAsynchronously(this, metricsStarter, 1); runTaskLaterAsynchronously(metricsStarter, 1);
} }
else if (metricsStarter.getStart() != null && metricsStarter.getStart() == false) else if (metricsStarter.getStart() != null && metricsStarter.getStart() == false)
{ {

View file

@ -52,8 +52,10 @@ public class EssentialsTimer implements Runnable
skip1--; skip1--;
continue; continue;
} }
if (count % 10 == 0) { if (count % 10 == 0)
if (System.nanoTime() - startTime > maxTime / 2) { {
if (System.nanoTime() - startTime > maxTime / 2)
{
skip1 = count - 1; skip1 = count - 1;
break; break;
} }
@ -81,8 +83,10 @@ public class EssentialsTimer implements Runnable
skip2--; skip2--;
continue; continue;
} }
if (count % 10 == 0) { if (count % 10 == 0)
if (System.nanoTime() - startTime > maxTime) { {
if (System.nanoTime() - startTime > maxTime)
{
skip2 = count - 1; skip2 = count - 1;
break; break;
} }

View file

@ -57,6 +57,7 @@ public class Teleport implements Runnable, ITeleport
private long initZ; private long initZ;
private Target teleportTarget; private Target teleportTarget;
private boolean respawn; private boolean respawn;
private boolean canMove;
private Trade chargeFor; private Trade chargeFor;
private final IEssentials ess; private final IEssentials ess;
private static final Logger logger = Logger.getLogger("Minecraft"); private static final Logger logger = Logger.getLogger("Minecraft");
@ -80,6 +81,10 @@ public class Teleport implements Runnable, ITeleport
this.chargeFor = chargeFor; this.chargeFor = chargeFor;
this.cause = cause; this.cause = cause;
this.respawn = respawn; this.respawn = respawn;
this.canMove = user.isAuthorized("essentials.teleport.timer.move");
teleTimer = ess.scheduleSyncRepeatingTask(this, 10, 10);
} }
@Override @Override
@ -91,24 +96,33 @@ public class Teleport implements Runnable, ITeleport
cancel(false); cancel(false);
return; return;
} }
if (teleportUser == null || !teleportUser.isOnline() || teleportUser.getLocation() == null)
if (teleportUser == null || !teleportUser.isOnline())
{ {
cancel(false); cancel(false);
return; return;
} }
if (!user.isAuthorized("essentials.teleport.timer.move") final Location currLocation = teleportUser.getLocation();
&& (Math.round(teleportUser.getLocation().getX() * MOVE_CONSTANT) != initX if (currLocation == null)
|| Math.round(teleportUser.getLocation().getY() * MOVE_CONSTANT) != initY {
|| Math.round(teleportUser.getLocation().getZ() * MOVE_CONSTANT) != initZ cancel(false);
return;
}
if (!canMove
&& (Math.round(currLocation.getX() * MOVE_CONSTANT) != initX
|| Math.round(currLocation.getY() * MOVE_CONSTANT) != initY
|| Math.round(currLocation.getZ() * MOVE_CONSTANT) != initZ
|| teleportUser.getHealth() < health)) || teleportUser.getHealth() < health))
{ {
// user moved, cancel teleport // user moved, cancel teleport
cancel(true); cancel(true);
return; return;
} }
health = teleportUser.getHealth(); // in case user healed, then later gets injured health = teleportUser.getHealth(); // in case user healed, then later gets injured
long now = System.currentTimeMillis(); final long now = System.currentTimeMillis();
if (now > started + tpdelay) if (now > started + tpdelay)
{ {
try try
@ -283,8 +297,6 @@ public class Teleport implements Runnable, ITeleport
cancel(false); cancel(false);
warnUser(user, delay); warnUser(user, delay);
initTimer((long)(delay * 1000.0), target, chargeFor, cause); initTimer((long)(delay * 1000.0), target, chargeFor, cause);
teleTimer = ess.scheduleSyncRepeatingTask(this, 10, 10);
} }
//The teleportToMe function is a wrapper used to handle teleporting players to them, like /tphere //The teleportToMe function is a wrapper used to handle teleporting players to them, like /tphere
@ -312,7 +324,6 @@ public class Teleport implements Runnable, ITeleport
cancel(false); cancel(false);
warnUser(otherUser, delay); warnUser(otherUser, delay);
initTimer((long)(delay * 1000.0), otherUser, target, chargeFor, cause, false); initTimer((long)(delay * 1000.0), otherUser, target, chargeFor, cause, false);
teleTimer = ess.scheduleSyncRepeatingTask(this, 10, 10);
} }
private void warnUser(final IUser user, final double delay) private void warnUser(final IUser user, final double delay)
@ -346,7 +357,6 @@ public class Teleport implements Runnable, ITeleport
cancel(false); cancel(false);
warnUser(user, delay); warnUser(user, delay);
initTimer((long)(delay * 1000.0), user, null, chargeFor, cause, true); initTimer((long)(delay * 1000.0), user, null, chargeFor, cause, true);
teleTimer = ess.scheduleSyncRepeatingTask(this, 10, 10);
} }
public void respawn(TeleportCause cause) throws Exception public void respawn(TeleportCause cause) throws Exception

View file

@ -33,7 +33,7 @@ public class MetricsListener implements Listener
player.sendMessage("To opt out, run /essentials opt-out"); player.sendMessage("To opt out, run /essentials opt-out");
ess.getLogger().log(Level.INFO, "[Metrics] Admin join - Starting 5 minute opt-out period."); ess.getLogger().log(Level.INFO, "[Metrics] Admin join - Starting 5 minute opt-out period.");
ess.getSettings().setMetricsEnabled(true); ess.getSettings().setMetricsEnabled(true);
ess.getScheduler().runTaskLaterAsynchronously(ess, starter, 5 * 1200); ess.runTaskLaterAsynchronously(starter, 5 * 1200);
} }
} }
} }