diff options
-rw-r--r-- | Essentials/src/com/earth2me/essentials/commands/Commandtp.java | 8 | ||||
-rw-r--r-- | Essentials/src/com/earth2me/essentials/commands/Commandtpo.java | 50 | ||||
-rw-r--r-- | Essentials/src/plugin.yml | 2 |
3 files changed, 42 insertions, 18 deletions
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtp.java b/Essentials/src/com/earth2me/essentials/commands/Commandtp.java index 22d4778d3..d6d6b76f9 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtp.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtp.java @@ -49,6 +49,14 @@ public class Commandtp extends EssentialsCommand user.sendMessage(_("teleporting")); final User target = getPlayer(server, args, 0); final User toPlayer = getPlayer(server, args, 1); + if (!target.isTeleportEnabled()) + { + throw new Exception(_("teleportDisabled", target.getDisplayName())); + } + if (!toPlayer.isTeleportEnabled()) + { + throw new Exception(_("teleportDisabled", toPlayer.getDisplayName())); + } if (target.getWorld() != toPlayer.getWorld() && ess.getSettings().isWorldTeleportPermissions() && !user.isAuthorized("essentials.world." + toPlayer.getWorld().getName())) { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java index e30aee127..53204114e 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java @@ -16,33 +16,49 @@ public class Commandtpo extends EssentialsCommand @Override public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { - if (args.length < 1) + switch (args.length) { + case 0: throw new NotEnoughArgumentsException(); - } - //Just basically the old tp command - final User player = getPlayer(server, args, 0, true); - // Check if user is offline - if (!player.isOnline()) - { - throw new NoSuchFieldException(_("playerNotFound")); - } - - // Verify permission - if (!player.isHidden() || user.isAuthorized("essentials.teleport.hidden")) - { + case 1: + final User player = getPlayer(server, args, 0, true); + if (!player.isOnline() || (player.isHidden() && !user.isAuthorized("essentials.teleport.hidden"))) + { + throw new NoSuchFieldException(_("playerNotFound")); + } if (user.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions() && !user.isAuthorized("essentials.world." + player.getWorld().getName())) { throw new Exception(_("noPerm", "essentials.world." + player.getWorld().getName())); } + user.sendMessage(_("teleporting")); user.getTeleport().now(player, false, TeleportCause.COMMAND); + + default: + if (!user.isAuthorized("essentials.tp.others")) + { + throw new Exception(_("noPerm", "essentials.tp.others")); + } user.sendMessage(_("teleporting")); - } - else - { - throw new NoSuchFieldException(_("playerNotFound")); + final User target = getPlayer(server, args, 0, true); + final User toPlayer = getPlayer(server, args, 1, true); + + if (!target.isOnline() || !toPlayer.isOnline() + || ((target.isHidden() || toPlayer.isHidden()) && !user.isAuthorized("essentials.teleport.hidden"))) + { + throw new NoSuchFieldException(_("playerNotFound")); + } + + if (target.getWorld() != toPlayer.getWorld() && ess.getSettings().isWorldTeleportPermissions() + && !user.isAuthorized("essentials.world." + toPlayer.getWorld().getName())) + { + throw new Exception(_("noPerm", "essentials.world." + toPlayer.getWorld().getName())); + } + + target.getTeleport().now(toPlayer, false, TeleportCause.COMMAND); + target.sendMessage(_("teleportAtoB", user.getDisplayName(), toPlayer.getDisplayName())); + break; } } } diff --git a/Essentials/src/plugin.yml b/Essentials/src/plugin.yml index 2230cf71c..022143b3f 100644 --- a/Essentials/src/plugin.yml +++ b/Essentials/src/plugin.yml @@ -375,7 +375,7 @@ commands: aliases: [s,etphere] tpo: description: Teleport override for tptoggle. - usage: /<command> <player> + usage: /<command> <player> [otherplayer] aliases: [etpo] tpohere: description: Teleport here override for tptoggle. |