diff options
Diffstat (limited to 'Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java')
-rw-r--r-- | Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java | 54 |
1 files changed, 20 insertions, 34 deletions
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java index 9203f9015..e0f3b7d0c 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java @@ -1,57 +1,43 @@ package com.earth2me.essentials.commands; import static com.earth2me.essentials.I18n._; -import com.earth2me.essentials.Trade; -import com.earth2me.essentials.User; -import org.bukkit.Server; +import com.earth2me.essentials.api.ISettings; +import com.earth2me.essentials.api.IUser; +import com.earth2me.essentials.economy.Trade; +import com.earth2me.essentials.permissions.Permissions; +import com.earth2me.essentials.permissions.WorldPermissions; +import lombok.Cleanup; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; public class Commandtpaccept extends EssentialsCommand { - public Commandtpaccept() - { - super("tpaccept"); - } - @Override - public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception + public void run(final IUser user, final String commandLabel, final String[] args) throws Exception { - - final User target = user.getTeleportRequest(); - - if (target == null || !target.isOnline()) - { - throw new Exception(_("noPendingRequest")); - } - - if (user.isTpRequestHere() && ((!target.isAuthorized("essentials.tpahere") && !target.isAuthorized("essentials.tpaall")) - || (user.getWorld() != target.getWorld() && ess.getSettings().isWorldTeleportPermissions() - && !user.isAuthorized("essentials.world." + user.getWorld().getName())))) - { - throw new Exception(_("noPendingRequest")); - } - - if (!user.isTpRequestHere() && (!target.isAuthorized("essentials.tpa") - || (user.getWorld() != target.getWorld() && ess.getSettings().isWorldTeleportPermissions() - && !user.isAuthorized("essentials.world." + target.getWorld().getName())))) - { - throw new Exception(_("noPendingRequest")); - } - - if (args.length > 0 && !target.getName().contains(args[0])) + final IUser target = user.getTeleportRequester(); + @Cleanup + ISettings settings = ess.getSettings(); + settings.acquireReadLock(); + if (target == null || !target.isOnline() + || (args.length > 0 && !target.getName().contains(args[0])) + || (user.isTpRequestHere() && !Permissions.TPAHERE.isAuthorized(target)) + || (!user.isTpRequestHere() && ((!Permissions.TPA.isAuthorized(target) && !Permissions.TPAALL.isAuthorized(target)) + || (user.getWorld() != target.getWorld() + && settings.getData().getGeneral().isWorldTeleportPermissions() + && !WorldPermissions.getPermission(user.getWorld().getName()).isAuthorized(user))))) { throw new Exception(_("noPendingRequest")); } - long timeout = ess.getSettings().getTpaAcceptCancellation(); + long timeout = settings.getData().getCommands().getTpa().getTimeout(); 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.commandName, ess); if (user.isTpRequestHere()) { charge.isAffordableFor(user); |