summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKHobbits <rob@khobbits.co.uk>2013-04-22 00:11:13 +0100
committerKHobbits <rob@khobbits.co.uk>2013-04-22 00:11:13 +0100
commitbb9c62e4def528c24be992e6e2b0314ad22639eb (patch)
tree0bd610474584e4ef6bad5e13ffbac7bd71cdefd7
parentdf159a3defde2bffc3c59d487fda795999fa88e4 (diff)
downloadEssentials-bb9c62e4def528c24be992e6e2b0314ad22639eb.tar
Essentials-bb9c62e4def528c24be992e6e2b0314ad22639eb.tar.gz
Essentials-bb9c62e4def528c24be992e6e2b0314ad22639eb.tar.lz
Essentials-bb9c62e4def528c24be992e6e2b0314ad22639eb.tar.xz
Essentials-bb9c62e4def528c24be992e6e2b0314ad22639eb.zip
Minor TP and timer tweaks.
-rw-r--r--Essentials/src/com/earth2me/essentials/Essentials.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsTimer.java12
-rw-r--r--Essentials/src/com/earth2me/essentials/Teleport.java82
-rw-r--r--Essentials/src/com/earth2me/essentials/metrics/MetricsListener.java2
4 files changed, 56 insertions, 42 deletions
diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java
index 1a867f195..d9b1af096 100644
--- a/Essentials/src/com/earth2me/essentials/Essentials.java
+++ b/Essentials/src/com/earth2me/essentials/Essentials.java
@@ -225,7 +225,7 @@ public class Essentials extends JavaPlugin implements IEssentials
final MetricsStarter metricsStarter = new MetricsStarter(this);
if (metricsStarter.getStart() != null && metricsStarter.getStart() == true)
{
- getScheduler().runTaskLaterAsynchronously(this, metricsStarter, 1);
+ runTaskLaterAsynchronously(metricsStarter, 1);
}
else if (metricsStarter.getStart() != null && metricsStarter.getStart() == false)
{
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsTimer.java b/Essentials/src/com/earth2me/essentials/EssentialsTimer.java
index 2c98b6553..fe04c1cbc 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsTimer.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsTimer.java
@@ -52,8 +52,10 @@ public class EssentialsTimer implements Runnable
skip1--;
continue;
}
- if (count % 10 == 0) {
- if (System.nanoTime() - startTime > maxTime / 2) {
+ if (count % 10 == 0)
+ {
+ if (System.nanoTime() - startTime > maxTime / 2)
+ {
skip1 = count - 1;
break;
}
@@ -81,8 +83,10 @@ public class EssentialsTimer implements Runnable
skip2--;
continue;
}
- if (count % 10 == 0) {
- if (System.nanoTime() - startTime > maxTime) {
+ if (count % 10 == 0)
+ {
+ if (System.nanoTime() - startTime > maxTime)
+ {
skip2 = count - 1;
break;
}
diff --git a/Essentials/src/com/earth2me/essentials/Teleport.java b/Essentials/src/com/earth2me/essentials/Teleport.java
index 11f6811db..f295aef1a 100644
--- a/Essentials/src/com/earth2me/essentials/Teleport.java
+++ b/Essentials/src/com/earth2me/essentials/Teleport.java
@@ -14,30 +14,30 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
public class Teleport implements Runnable, ITeleport
{
private static final double MOVE_CONSTANT = 0.3;
-
-
+
+
private class Target
{
private final Location location;
private final String name;
-
+
Target(Location location)
{
this.location = location;
this.name = null;
}
-
+
Target(Player entity)
{
this.name = entity.getName();
this.location = null;
}
-
+
public Location getLocation()
{
if (this.name != null)
{
-
+
return ess.getServer().getPlayerExact(name).getLocation();
}
return location;
@@ -57,16 +57,17 @@ public class Teleport implements Runnable, ITeleport
private long initZ;
private Target teleportTarget;
private boolean respawn;
+ private boolean canMove;
private Trade chargeFor;
private final IEssentials ess;
private static final Logger logger = Logger.getLogger("Minecraft");
private TeleportCause cause;
-
+
private void initTimer(long delay, Target target, Trade chargeFor, TeleportCause cause)
{
initTimer(delay, user, target, chargeFor, cause, false);
}
-
+
private void initTimer(long delay, IUser teleportUser, Target target, Trade chargeFor, TeleportCause cause, boolean respawn)
{
this.started = System.currentTimeMillis();
@@ -80,35 +81,48 @@ public class Teleport implements Runnable, ITeleport
this.chargeFor = chargeFor;
this.cause = cause;
this.respawn = respawn;
+
+ this.canMove = user.isAuthorized("essentials.teleport.timer.move");
+
+ teleTimer = ess.scheduleSyncRepeatingTask(this, 10, 10);
}
-
+
@Override
public void run()
{
-
+
if (user == null || !user.isOnline() || user.getLocation() == null)
{
cancel(false);
return;
}
- if (teleportUser == null || !teleportUser.isOnline() || teleportUser.getLocation() == null)
+
+ if (teleportUser == null || !teleportUser.isOnline())
+ {
+ cancel(false);
+ return;
+ }
+
+ final Location currLocation = teleportUser.getLocation();
+ if (currLocation == null)
{
cancel(false);
return;
}
-
- if (!user.isAuthorized("essentials.teleport.timer.move")
- && (Math.round(teleportUser.getLocation().getX() * MOVE_CONSTANT) != initX
- || Math.round(teleportUser.getLocation().getY() * MOVE_CONSTANT) != initY
- || Math.round(teleportUser.getLocation().getZ() * MOVE_CONSTANT) != initZ
+
+ 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))
{
// user moved, cancel teleport
cancel(true);
return;
}
+
health = teleportUser.getHealth(); // in case user healed, then later gets injured
- long now = System.currentTimeMillis();
+ final long now = System.currentTimeMillis();
if (now > started + tpdelay)
{
try
@@ -146,13 +160,13 @@ public class Teleport implements Runnable, ITeleport
}
}
}
-
+
public Teleport(IUser user, IEssentials ess)
{
this.user = user;
this.ess = ess;
}
-
+
public void cooldown(boolean check) throws Exception
{
final Calendar time = new GregorianCalendar();
@@ -168,7 +182,7 @@ public class Teleport implements Runnable, ITeleport
// When was the last teleport used?
final Long lastTime = user.getLastTeleportTimestamp();
-
+
if (lastTime > time.getTimeInMillis())
{
// This is to make sure time didn't get messed up on last kit use.
@@ -225,7 +239,7 @@ public class Teleport implements Runnable, ITeleport
}
now(new Target(loc), cause);
}
-
+
public void now(Player entity, boolean cooldown, TeleportCause cause) throws Exception
{
if (cooldown)
@@ -234,7 +248,7 @@ public class Teleport implements Runnable, ITeleport
}
now(new Target(entity), cause);
}
-
+
private void now(Target target, TeleportCause cause) throws Exception
{
cancel(false);
@@ -249,21 +263,21 @@ public class Teleport implements Runnable, ITeleport
{
teleport(loc, chargeFor, TeleportCause.PLUGIN);
}
-
+
public void teleport(Location loc, Trade chargeFor, TeleportCause cause) throws Exception
{
teleport(new Target(loc), chargeFor, cause);
}
-
+
public void teleport(Player entity, Trade chargeFor, TeleportCause cause) throws Exception
{
teleport(new Target(entity), chargeFor, cause);
}
-
+
private void teleport(Target target, Trade chargeFor, TeleportCause cause) throws Exception
{
double delay = ess.getSettings().getTeleportDelay();
-
+
if (chargeFor != null)
{
chargeFor.isAffordableFor(user);
@@ -279,12 +293,10 @@ public class Teleport implements Runnable, ITeleport
}
return;
}
-
+
cancel(false);
warnUser(user, delay);
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
@@ -292,7 +304,7 @@ public class Teleport implements Runnable, ITeleport
{
Target target = new Target(user);
double delay = ess.getSettings().getTeleportDelay();
-
+
if (chargeFor != null)
{
chargeFor.isAffordableFor(user);
@@ -308,13 +320,12 @@ public class Teleport implements Runnable, ITeleport
}
return;
}
-
+
cancel(false);
warnUser(otherUser, delay);
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)
{
Calendar c = new GregorianCalendar();
@@ -342,13 +353,12 @@ public class Teleport implements Runnable, ITeleport
}
return;
}
-
+
cancel(false);
warnUser(user, delay);
initTimer((long)(delay * 1000.0), user, null, chargeFor, cause, true);
- teleTimer = ess.scheduleSyncRepeatingTask(this, 10, 10);
}
-
+
public void respawn(TeleportCause cause) throws Exception
{
final Player player = user.getBase();
diff --git a/Essentials/src/com/earth2me/essentials/metrics/MetricsListener.java b/Essentials/src/com/earth2me/essentials/metrics/MetricsListener.java
index e9b9a2947..695426529 100644
--- a/Essentials/src/com/earth2me/essentials/metrics/MetricsListener.java
+++ b/Essentials/src/com/earth2me/essentials/metrics/MetricsListener.java
@@ -33,7 +33,7 @@ public class MetricsListener implements Listener
player.sendMessage("To opt out, run /essentials opt-out");
ess.getLogger().log(Level.INFO, "[Metrics] Admin join - Starting 5 minute opt-out period.");
ess.getSettings().setMetricsEnabled(true);
- ess.getScheduler().runTaskLaterAsynchronously(ess, starter, 5 * 1200);
+ ess.runTaskLaterAsynchronously(starter, 5 * 1200);
}
}
}