Improve hidden player matching.

Replace essentials.teleport.hidden with essentials.vanish.interact
Fix perm checks in tpall and tpaall
This commit is contained in:
KHobbits 2013-05-23 22:59:09 +01:00
parent d48c342e37
commit 66911bb0a9
18 changed files with 50 additions and 61 deletions

View File

@ -27,7 +27,7 @@ public class Commandburn extends EssentialsCommand
throw new NotEnoughArgumentsException("You need to specify a player to burn.");
}
User user = getPlayer(server, args, 0);
User user = getPlayer(server, sender, args, 0);
user.setFireTicks(Integer.parseInt(args[1]) * 20);
sender.sendMessage(_("burnMsg", user.getDisplayName(), Integer.parseInt(args[1])));
}

View File

@ -138,12 +138,13 @@ public class Commandexp extends EssentialsCommand
private void expMatch(final Server server, final CommandSender sender, final String match, String amount, final boolean give) throws NotEnoughArgumentsException
{
boolean skipHidden = sender instanceof Player && !ess.getUser(sender).isAuthorized("essentials.vanish.interact");
boolean foundUser = false;
final List<Player> matchedPlayers = server.matchPlayer(match);
for (Player matchPlayer : matchedPlayers)
{
final User player = ess.getUser(matchPlayer);
if (player.isHidden())
if (skipHidden && player.isHidden())
{
continue;
}

View File

@ -42,7 +42,7 @@ public class Commandgive extends EssentialsCommand
throw new Exception(_("cantSpawnItem", itemname));
}
final User giveTo = getPlayer(server, args, 0);
final User giveTo = getPlayer(server, sender, args, 0);
try
{

View File

@ -87,11 +87,12 @@ public class Commandnear extends EssentialsCommand
final World world = loc.getWorld();
final StringBuilder output = new StringBuilder();
final long radiusSquared = radius * radius;
boolean showHidden = user.isAuthorized("essentials.vanish.interact");
for (Player onlinePlayer : server.getOnlinePlayers())
{
final User player = ess.getUser(onlinePlayer);
if (!player.equals(user) && !player.isHidden())
if (!player.equals(user) && (!player.isHidden() || showHidden))
{
final Location playerLoc = player.getLocation();
if (playerLoc.getWorld() != world)

View File

@ -29,7 +29,7 @@ public class Commandnuke extends EssentialsCommand
int pos = 0;
for (String arg : args)
{
targets.add(getPlayer(server, args, pos));
targets.add(getPlayer(server, sender, args, pos));
pos++;
}
}

View File

@ -24,11 +24,12 @@ public class Commandrealname extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
final String whois = args[0].toLowerCase(Locale.ENGLISH);
boolean skipHidden = sender instanceof Player && !ess.getUser(sender).isAuthorized("essentials.vanish.interact");
boolean foundUser = false;
for (Player onlinePlayer : server.getOnlinePlayers())
{
final User u = ess.getUser(onlinePlayer);
if (u.isHidden())
if (skipHidden && u.isHidden())
{
continue;
}

View File

@ -39,7 +39,7 @@ public class Commandseen extends EssentialsCommand
}
try
{
User user = getPlayer(server, args, 0);
User user = getPlayer(server, sender, args, 0);
seenOnline(server, sender, user, showBan, extra);
}
catch (NoSuchFieldException e)

View File

@ -26,7 +26,7 @@ public class Commandtp extends EssentialsCommand
throw new NotEnoughArgumentsException();
case 1:
final User player = getPlayer(server, args, 0);
final User player = getPlayer(server, user, args, 0);
if (!player.isTeleportEnabled())
{
throw new Exception(_("teleportDisabled", player.getDisplayName()));
@ -46,7 +46,7 @@ public class Commandtp extends EssentialsCommand
{
throw new Exception(_("noPerm", "essentials.tp.others"));
}
final User target2 = getPlayer(server, args, 0);
final User target2 = getPlayer(server, user, args, 0);
final double x = args[1].startsWith("~") ? target2.getLocation().getX() + Integer.parseInt(args[1].substring(1)) : Integer.parseInt(args[1]);
final double y = args[2].startsWith("~") ? target2.getLocation().getY() + Integer.parseInt(args[2].substring(1)) : Integer.parseInt(args[2]);
final double z = args[3].startsWith("~") ? target2.getLocation().getZ() + Integer.parseInt(args[3].substring(1)) : Integer.parseInt(args[3]);
@ -69,8 +69,8 @@ public class Commandtp extends EssentialsCommand
{
throw new Exception(_("noPerm", "essentials.tp.others"));
}
final User target = getPlayer(server, args, 0);
final User toPlayer = getPlayer(server, args, 1);
final User target = getPlayer(server, user, args, 0);
final User toPlayer = getPlayer(server, user, args, 1);
if (!target.isTeleportEnabled())
{
throw new Exception(_("teleportDisabled", target.getDisplayName()));
@ -99,10 +99,10 @@ public class Commandtp extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
final User target = getPlayer(server, args, 0);
final User target = getPlayer(server, args, 0, true, false);
if (args.length == 2)
{
final User toPlayer = getPlayer(server, args, 1);
final User toPlayer = getPlayer(server, args, 1, true, false);
target.getTeleport().now(toPlayer, false, TeleportCause.COMMAND);
target.sendMessage(_("teleportAtoB", Console.NAME, toPlayer.getDisplayName()));
}

View File

@ -20,7 +20,7 @@ public class Commandtpa extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
User player = getPlayer(server, args, 0);
User player = getPlayer(server, user, args, 0);
if (!player.isTeleportEnabled())
{
throw new Exception(_("teleportDisabled", player.getDisplayName()));

View File

@ -27,17 +27,17 @@ public class Commandtpaall extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
final User player = getPlayer(server, args, 0);
teleportAAllPlayers(server, sender, player);
final User target = getPlayer(server, sender, args, 0);
teleportAAllPlayers(server, sender, target);
}
private void teleportAAllPlayers(final Server server, final CommandSender sender, final User user)
private void teleportAAllPlayers(final Server server, final CommandSender sender, final User target)
{
sender.sendMessage(_("teleportAAll"));
for (Player onlinePlayer : server.getOnlinePlayers())
{
final User player = ess.getUser(onlinePlayer);
if (user == player)
if (target == player)
{
continue;
}
@ -45,15 +45,16 @@ public class Commandtpaall extends EssentialsCommand
{
continue;
}
if (user.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions()
&& !user.isAuthorized("essentials.worlds." + user.getWorld().getName()))
if (target.equals(sender)
&& target.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions()
&& !target.isAuthorized("essentials.worlds." + target.getWorld().getName()))
{
continue;
}
try
{
player.requestTeleport(user, true);
player.sendMessage(_("teleportHereRequest", user.getDisplayName()));
player.requestTeleport(target, true);
player.sendMessage(_("teleportHereRequest", target.getDisplayName()));
player.sendMessage(_("typeTpaccept"));
if (ess.getSettings().getTpaAcceptCancellation() != 0)
{

View File

@ -20,7 +20,7 @@ public class Commandtpahere extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
final User player = getPlayer(server, args, 0);
final User player = getPlayer(server, user, args, 0);
if (!player.isTeleportEnabled())
{
throw new Exception(_("teleportDisabled", player.getDisplayName()));

View File

@ -28,28 +28,29 @@ public class Commandtpall extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
final User player = getPlayer(server, args, 0);
teleportAllPlayers(server, sender, player);
final User target = getPlayer(server, sender, args, 0);
teleportAllPlayers(server, sender, target);
}
private void teleportAllPlayers(Server server, CommandSender sender, User user)
private void teleportAllPlayers(Server server, CommandSender sender, User target)
{
sender.sendMessage(_("teleportAll"));
for (Player onlinePlayer : server.getOnlinePlayers())
{
final User player = ess.getUser(onlinePlayer);
if (user == player)
if (target == player)
{
continue;
}
if (user.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions()
&& !user.isAuthorized("essentials.worlds." + user.getWorld().getName()))
if (target.equals(sender)
&& target.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions()
&& !target.isAuthorized("essentials.worlds." + target.getWorld().getName()))
{
continue;
}
try
{
player.getTeleport().now(user, false, TeleportCause.COMMAND);
player.getTeleport().now(target, false, TeleportCause.COMMAND);
}
catch (Exception ex)
{

View File

@ -17,7 +17,7 @@ public class Commandtphere extends EssentialsCommand
@Override
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
{
final User player = getPlayer(server, args, 0);
final User player = getPlayer(server, user, args, 0);
if (!player.isTeleportEnabled())
{
throw new Exception(_("teleportDisabled", player.getDisplayName()));

View File

@ -22,11 +22,7 @@ public class Commandtpo extends EssentialsCommand
throw new NotEnoughArgumentsException();
case 1:
final User player = getPlayer(server, args, 0, true, false);
if (player.isHidden() && !user.isAuthorized("essentials.teleport.hidden"))
{
throw new NoSuchFieldException(_("playerNotFound"));
}
final User player = getPlayer(server, user, args, 0);
if (user.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions()
&& !user.isAuthorized("essentials.worlds." + player.getWorld().getName()))
{
@ -42,13 +38,8 @@ public class Commandtpo extends EssentialsCommand
throw new Exception(_("noPerm", "essentials.tp.others"));
}
user.sendMessage(_("teleporting"));
final User target = getPlayer(server, args, 0, true, false);
final User toPlayer = getPlayer(server, args, 1, true, false);
if ((target.isHidden() || toPlayer.isHidden()) && !user.isAuthorized("essentials.teleport.hidden"))
{
throw new NoSuchFieldException(_("playerNotFound"));
}
final User target = getPlayer(server, user, args, 0);
final User toPlayer = getPlayer(server, user, args, 1);
if (target.getWorld() != toPlayer.getWorld() && ess.getSettings().isWorldTeleportPermissions()
&& !user.isAuthorized("essentials.worlds." + toPlayer.getWorld().getName()))

View File

@ -22,7 +22,7 @@ public class Commandtpohere extends EssentialsCommand
}
//Just basically the old tphere command
final User player = getPlayer(server, args, 0, true, false);
final User player = getPlayer(server, user, args, 0);
if (user.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions()
&& !user.isAuthorized("essentials.worlds." + user.getWorld().getName()))
@ -31,14 +31,8 @@ public class Commandtpohere extends EssentialsCommand
}
// Verify permission
if (!player.isHidden() || user.isAuthorized("essentials.teleport.hidden"))
{
player.getTeleport().now(user, false, TeleportCause.COMMAND);
user.sendMessage(_("teleporting"));
}
else
{
throw new NoSuchFieldException(_("playerNotFound"));
}
player.getTeleport().now(user, false, TeleportCause.COMMAND);
user.sendMessage(_("teleporting"));
}
}

View File

@ -44,7 +44,7 @@ public class Commandtptoggle extends EssentialsCommand
private void toggleOtherPlayers(final Server server, final CommandSender sender, final String[] args) throws NotEnoughArgumentsException
{
boolean skipHidden = sender instanceof Player && !ess.getUser(sender).isAuthorized("essentials.teleport.hidden");
boolean skipHidden = sender instanceof Player && !ess.getUser(sender).isAuthorized("essentials.vanish.interact");
boolean foundUser = false;
final List<Player> matchedPlayers = server.matchPlayer(args[0]);
for (Player matchPlayer : matchedPlayers)

View File

@ -42,7 +42,7 @@ public class Commandwarp extends EssentialsCommand
User otherUser = null;
if (args.length == 2 && (user.isAuthorized("essentials.warp.otherplayers") || user.isAuthorized("essentials.warp.others")))
{
otherUser = getPlayer(server, args, 1, user.isAuthorized("essentials.teleport.hidden"), false);
otherUser = getPlayer(server, user, args, 1);
warpUser(user, otherUser, args[0]);
throw new NoChargeException();
}

View File

@ -43,16 +43,15 @@ public abstract class EssentialsCommand implements IEssentialsCommand
return name;
}
@Deprecated
protected User getPlayer(final Server server, final String[] args, final int pos) throws NoSuchFieldException, NotEnoughArgumentsException
{
return getPlayer(server, null, args, pos, false, false);
}
protected User getPlayer(final Server server, final User user, final String[] args, final int pos) throws NoSuchFieldException, NotEnoughArgumentsException
{
return getPlayer(server, user, args, pos, user.isAuthorized("essentials.vanish.interact"), false);
}
protected User getPlayer(final Server server, final CommandSender sender, final String[] args, final int pos) throws NoSuchFieldException, NotEnoughArgumentsException
{
return getPlayer(server, null, args, pos, true, false);
}
protected User getPlayer(final Server server, final String[] args, final int pos, boolean getHidden, final boolean getOffline) throws NoSuchFieldException, NotEnoughArgumentsException
{