Allow timeout of /tpa /tpahere requests

Adds new config setting tpa-accept-cancellation
Test #781
This commit is contained in:
ementalo 2011-12-08 23:43:09 +00:00
parent 52b1017bda
commit 95d5217f58
15 changed files with 52 additions and 0 deletions

View file

@ -151,4 +151,6 @@ public interface ISettings extends IConf
public boolean getDisableItemPickupWhileAfk(); public boolean getDisableItemPickupWhileAfk();
public Priority getRespawnPriority(); public Priority getRespawnPriority();
long getTpaAcceptCancellation();
} }

View file

@ -606,4 +606,10 @@ public class Settings implements ISettings
} }
return Priority.Normal; return Priority.Normal;
} }
@Override
public long getTpaAcceptCancellation()
{
return config.getLong("tpa-accept-cancellation", 0);
}
} }

View file

@ -19,6 +19,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
private transient User teleportRequester; private transient User teleportRequester;
private transient boolean teleportRequestHere; private transient boolean teleportRequestHere;
private transient final Teleport teleport; private transient final Teleport teleport;
private transient long teleportRequestTime;
private transient long lastOnlineActivity; private transient long lastOnlineActivity;
private transient long lastActivity = System.currentTimeMillis(); private transient long lastActivity = System.currentTimeMillis();
private boolean hidden = false; private boolean hidden = false;
@ -222,6 +223,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
public void requestTeleport(final User player, final boolean here) public void requestTeleport(final User player, final boolean here)
{ {
teleportRequestTime = System.currentTimeMillis();
teleportRequester = player; teleportRequester = player;
teleportRequestHere = here; teleportRequestHere = here;
} }
@ -537,4 +539,9 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
{ {
return ess.getPermissionsHandler().canBuild(base, getGroup()); return ess.getPermissionsHandler().canBuild(base, getGroup());
} }
public long getTeleportRequestTime()
{
return teleportRequestTime;
}
} }

View file

@ -31,6 +31,10 @@ public class Commandtpa extends EssentialsCommand
player.sendMessage(_("teleportRequest", user.getDisplayName())); player.sendMessage(_("teleportRequest", user.getDisplayName()));
player.sendMessage(_("typeTpaccept")); player.sendMessage(_("typeTpaccept"));
player.sendMessage(_("typeTpdeny")); player.sendMessage(_("typeTpdeny"));
if (ess.getSettings().getTpaAcceptCancellation() != 0)
{
player.sendMessage(_("teleportRequestTimeoutInfo", ess.getSettings().getTpaAcceptCancellation()));
}
} }
user.sendMessage(_("requestSent", player.getDisplayName())); user.sendMessage(_("requestSent", player.getDisplayName()));
} }

View file

@ -50,6 +50,10 @@ public class Commandtpaall extends EssentialsCommand
player.requestTeleport(user, true); player.requestTeleport(user, true);
player.sendMessage(_("teleportHereRequest", user.getDisplayName())); player.sendMessage(_("teleportHereRequest", user.getDisplayName()));
player.sendMessage(_("typeTpaccept")); player.sendMessage(_("typeTpaccept"));
if (ess.getSettings().getTpaAcceptCancellation() != 0)
{
player.sendMessage(_("teleportRequestTimeoutInfo", ess.getSettings().getTpaAcceptCancellation()));
}
} }
catch (Exception ex) catch (Exception ex)
{ {

View file

@ -27,6 +27,13 @@ public class Commandtpaccept extends EssentialsCommand
throw new Exception(_("noPendingRequest")); throw new Exception(_("noPendingRequest"));
} }
long timeout = ess.getSettings().getTpaAcceptCancellation();
if (timeout != 0 && (System.currentTimeMillis() - user.getTeleportRequestTime()) / 1000 > timeout)
{
user.requestTeleport(null, false);
throw new Exception(_("requestTimedOut"));
}
final Trade charge = new Trade(this.getName(), ess); final Trade charge = new Trade(this.getName(), ess);
if (user.isTeleportRequestHere()) if (user.isTeleportRequestHere())
{ {

View file

@ -28,6 +28,10 @@ public class Commandtpahere extends EssentialsCommand
player.requestTeleport(user, true); player.requestTeleport(user, true);
player.sendMessage(_("teleportHereRequest", user.getDisplayName())); player.sendMessage(_("teleportHereRequest", user.getDisplayName()));
player.sendMessage(_("typeTpaccept")); player.sendMessage(_("typeTpaccept"));
if (ess.getSettings().getTpaAcceptCancellation() != 0)
{
player.sendMessage(_("teleportRequestTimeoutInfo", ess.getSettings().getTpaAcceptCancellation()));
}
user.sendMessage(_("requestSent", player.getDisplayName())); user.sendMessage(_("requestSent", player.getDisplayName()));
} }
} }

View file

@ -273,6 +273,10 @@ sethome-multiple:
# essentials.sethome.multiple.staff # essentials.sethome.multiple.staff
staff: 10 staff: 10
#Set timeout in seconds for players to accept tpa before request is cancelled.
#Set to 0 for no timeout
tpa-accept-cancellation: 0
############################################################ ############################################################
# +------------------------------------------------------+ # # +------------------------------------------------------+ #
# | EssentialsEco | # # | EssentialsEco | #

View file

@ -402,3 +402,5 @@ year=year
years=years years=years
youAreHealed=\u00a77You have been healed. youAreHealed=\u00a77You have been healed.
youHaveNewMail=\u00a7cYou have {0} messages!\u00a7f Type \u00a77/mail read\u00a7f to view your mail. youHaveNewMail=\u00a7cYou have {0} messages!\u00a7f Type \u00a77/mail read\u00a7f to view your mail.
requestTimedOut=\u00a7cTeleport request has timed out
teleportRequestTimeoutInfo=\u00a77This request will timeout after {0} seconds.

View file

@ -402,3 +402,5 @@ year=\u00e5r
years=\u00e5r years=\u00e5r
youAreHealed=\u00a77Du er blevet healed. Halleluja! youAreHealed=\u00a77Du er blevet healed. Halleluja!
youHaveNewMail=\u00a7cDu har {0} flaskeposter!\u00a7f Type \u00a77/mail read for at se din flaskepost. youHaveNewMail=\u00a7cDu har {0} flaskeposter!\u00a7f Type \u00a77/mail read for at se din flaskepost.
requestTimedOut=\u00a7cTeleport request has timed out
teleportRequestTimeoutInfo=\u00a77This request will timeout after {0} seconds.

View file

@ -402,3 +402,5 @@ year=Jahr
years=Jahre years=Jahre
youAreHealed=\u00a77Du wurdest geheilt. youAreHealed=\u00a77Du wurdest geheilt.
youHaveNewMail=\u00a7cDu hast {0} Nachrichten!\u00a7f Schreibe \u00a77/mail read\u00a7f um deine Nachrichten anzuzeigen. youHaveNewMail=\u00a7cDu hast {0} Nachrichten!\u00a7f Schreibe \u00a77/mail read\u00a7f um deine Nachrichten anzuzeigen.
requestTimedOut=\u00a7cTeleport request has timed out
teleportRequestTimeoutInfo=\u00a77This request will timeout after {0} seconds.

View file

@ -402,3 +402,5 @@ year=year
years=years years=years
youAreHealed=\u00a77You have been healed. youAreHealed=\u00a77You have been healed.
youHaveNewMail=\u00a7cYou have {0} messages!\u00a7f Type \u00a77/mail read\u00a7f to view your mail. youHaveNewMail=\u00a7cYou have {0} messages!\u00a7f Type \u00a77/mail read\u00a7f to view your mail.
requestTimedOut=\u00a7cTeleport request has timed out
teleportRequestTimeoutInfo=\u00a77This request will timeout after {0} seconds.

View file

@ -402,3 +402,5 @@ year=a&ntilde;o
years=a&ntilde;os years=a&ntilde;os
youAreHealed=\u00a77Has sido curado. youAreHealed=\u00a77Has sido curado.
youHaveNewMail=\u00a7cTienes {0} mensajes!\u00a7f Pon \u00a77/mail read\u00a7f para ver tus emails no leidos!. youHaveNewMail=\u00a7cTienes {0} mensajes!\u00a7f Pon \u00a77/mail read\u00a7f para ver tus emails no leidos!.
requestTimedOut=\u00a7cTeleport request has timed out
teleportRequestTimeoutInfo=\u00a77This request will timeout after {0} seconds.

View file

@ -402,3 +402,5 @@ year=ann\u00e9e
years=ann\u00e9es years=ann\u00e9es
youAreHealed=\u00a77Vous avez \u00e9t\u00e9 soign\u00e9. youAreHealed=\u00a77Vous avez \u00e9t\u00e9 soign\u00e9.
youHaveNewMail=\u00a7cVous avez {0} messages ! \u00a7fEntrez \u00a77/mail read\u00a7f pour voir votre courrier. youHaveNewMail=\u00a7cVous avez {0} messages ! \u00a7fEntrez \u00a77/mail read\u00a7f pour voir votre courrier.
requestTimedOut=\u00a7cTeleport request has timed out
teleportRequestTimeoutInfo=\u00a77This request will timeout after {0} seconds.

View file

@ -402,3 +402,5 @@ year=jaar
years=jaren years=jaren
youAreHealed=\u00a77Je bent genezen. youAreHealed=\u00a77Je bent genezen.
youHaveNewMail=\u00a7cJe hebt {0} berichten!\u00a7f Type \u00a77/mail read\u00a7f om je berichten te bekijken. youHaveNewMail=\u00a7cJe hebt {0} berichten!\u00a7f Type \u00a77/mail read\u00a7f om je berichten te bekijken.
requestTimedOut=\u00a7cTeleport request has timed out
teleportRequestTimeoutInfo=\u00a77This request will timeout after {0} seconds.