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 Priority getRespawnPriority();
long getTpaAcceptCancellation();
}

View file

@ -606,4 +606,10 @@ public class Settings implements ISettings
}
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 boolean teleportRequestHere;
private transient final Teleport teleport;
private transient long teleportRequestTime;
private transient long lastOnlineActivity;
private transient long lastActivity = System.currentTimeMillis();
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)
{
teleportRequestTime = System.currentTimeMillis();
teleportRequester = player;
teleportRequestHere = here;
}
@ -537,4 +539,9 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
{
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(_("typeTpaccept"));
player.sendMessage(_("typeTpdeny"));
if (ess.getSettings().getTpaAcceptCancellation() != 0)
{
player.sendMessage(_("teleportRequestTimeoutInfo", ess.getSettings().getTpaAcceptCancellation()));
}
}
user.sendMessage(_("requestSent", player.getDisplayName()));
}

View file

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

View file

@ -27,6 +27,13 @@ public class Commandtpaccept extends EssentialsCommand
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);
if (user.isTeleportRequestHere())
{

View file

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

View file

@ -273,6 +273,10 @@ sethome-multiple:
# essentials.sethome.multiple.staff
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 | #

View file

@ -402,3 +402,5 @@ year=year
years=years
youAreHealed=\u00a77You have been healed.
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
youAreHealed=\u00a77Du er blevet healed. Halleluja!
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
youAreHealed=\u00a77Du wurdest geheilt.
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
youAreHealed=\u00a77You have been healed.
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
youAreHealed=\u00a77Has sido curado.
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
youAreHealed=\u00a77Vous avez \u00e9t\u00e9 soign\u00e9.
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
youAreHealed=\u00a77Je bent genezen.
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.