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."); 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); user.setFireTicks(Integer.parseInt(args[1]) * 20);
sender.sendMessage(_("burnMsg", user.getDisplayName(), Integer.parseInt(args[1]))); 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 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; boolean foundUser = false;
final List<Player> matchedPlayers = server.matchPlayer(match); final List<Player> matchedPlayers = server.matchPlayer(match);
for (Player matchPlayer : matchedPlayers) for (Player matchPlayer : matchedPlayers)
{ {
final User player = ess.getUser(matchPlayer); final User player = ess.getUser(matchPlayer);
if (player.isHidden()) if (skipHidden && player.isHidden())
{ {
continue; continue;
} }

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -26,7 +26,7 @@ public class Commandtp extends EssentialsCommand
throw new NotEnoughArgumentsException(); throw new NotEnoughArgumentsException();
case 1: case 1:
final User player = getPlayer(server, args, 0); final User player = getPlayer(server, user, args, 0);
if (!player.isTeleportEnabled()) if (!player.isTeleportEnabled())
{ {
throw new Exception(_("teleportDisabled", player.getDisplayName())); throw new Exception(_("teleportDisabled", player.getDisplayName()));
@ -46,7 +46,7 @@ public class Commandtp extends EssentialsCommand
{ {
throw new Exception(_("noPerm", "essentials.tp.others")); 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 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 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]); 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")); throw new Exception(_("noPerm", "essentials.tp.others"));
} }
final User target = getPlayer(server, args, 0); final User target = getPlayer(server, user, args, 0);
final User toPlayer = getPlayer(server, args, 1); final User toPlayer = getPlayer(server, user, args, 1);
if (!target.isTeleportEnabled()) if (!target.isTeleportEnabled())
{ {
throw new Exception(_("teleportDisabled", target.getDisplayName())); throw new Exception(_("teleportDisabled", target.getDisplayName()));
@ -99,10 +99,10 @@ public class Commandtp extends EssentialsCommand
throw new NotEnoughArgumentsException(); throw new NotEnoughArgumentsException();
} }
final User target = getPlayer(server, args, 0); final User target = getPlayer(server, args, 0, true, false);
if (args.length == 2) 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.getTeleport().now(toPlayer, false, TeleportCause.COMMAND);
target.sendMessage(_("teleportAtoB", Console.NAME, toPlayer.getDisplayName())); target.sendMessage(_("teleportAtoB", Console.NAME, toPlayer.getDisplayName()));
} }

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

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 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; boolean foundUser = false;
final List<Player> matchedPlayers = server.matchPlayer(args[0]); final List<Player> matchedPlayers = server.matchPlayer(args[0]);
for (Player matchPlayer : matchedPlayers) for (Player matchPlayer : matchedPlayers)

View file

@ -42,7 +42,7 @@ public class Commandwarp extends EssentialsCommand
User otherUser = null; User otherUser = null;
if (args.length == 2 && (user.isAuthorized("essentials.warp.otherplayers") || user.isAuthorized("essentials.warp.others"))) 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]); warpUser(user, otherUser, args[0]);
throw new NoChargeException(); throw new NoChargeException();
} }

View file

@ -43,16 +43,15 @@ public abstract class EssentialsCommand implements IEssentialsCommand
return name; 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 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); 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 protected User getPlayer(final Server server, final String[] args, final int pos, boolean getHidden, final boolean getOffline) throws NoSuchFieldException, NotEnoughArgumentsException
{ {