New permission: essentials.teleport.timer.move - allow players to move during tp delay

This commit is contained in:
KHobbits 2012-09-29 23:48:59 +01:00
parent 3083ba2627
commit 872bc4df4c

View file

@ -95,17 +95,17 @@ public class Teleport implements Runnable, ITeleport
return; return;
} }
if (Math.round(teleportUser.getLocation().getX() * MOVE_CONSTANT) != initX if (!user.isAuthorized("essentials.teleport.timer.move")
|| Math.round(teleportUser.getLocation().getY() * MOVE_CONSTANT) != initY && (Math.round(teleportUser.getLocation().getX() * MOVE_CONSTANT) != initX
|| Math.round(teleportUser.getLocation().getZ() * MOVE_CONSTANT) != initZ || Math.round(teleportUser.getLocation().getY() * MOVE_CONSTANT) != initY
|| teleportUser.getHealth() < health) || Math.round(teleportUser.getLocation().getZ() * MOVE_CONSTANT) != initZ
{ // user moved, cancel teleport || teleportUser.getHealth() < health))
{
// 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(); long now = System.currentTimeMillis();
if (now > started + delay) if (now > started + delay)
{ {
@ -207,7 +207,7 @@ public class Teleport implements Runnable, ITeleport
teleTimer = -1; teleTimer = -1;
} }
} }
//The now function is used when you want to skip tp delay when teleporting someone to a location or player. //The now function is used when you want to skip tp delay when teleporting someone to a location or player.
public void now(Location loc, boolean cooldown, TeleportCause cause) throws Exception public void now(Location loc, boolean cooldown, TeleportCause cause) throws Exception
{ {
@ -301,8 +301,9 @@ public class Teleport implements Runnable, ITeleport
teleTimer = ess.scheduleSyncRepeatingTask(this, 10, 10); teleTimer = ess.scheduleSyncRepeatingTask(this, 10, 10);
} }
private void warnUser(final IUser user) { private void warnUser(final IUser user)
{
Calendar c = new GregorianCalendar(); Calendar c = new GregorianCalendar();
c.add(Calendar.SECOND, (int)delay); c.add(Calendar.SECOND, (int)delay);
c.add(Calendar.MILLISECOND, (int)((delay * 1000.0) % 1000.0)); c.add(Calendar.MILLISECOND, (int)((delay * 1000.0) % 1000.0));