diff options
author | snowleo <schneeleo@gmail.com> | 2012-10-14 00:35:24 +0200 |
---|---|---|
committer | snowleo <schneeleo@gmail.com> | 2012-10-14 00:35:24 +0200 |
commit | 9ca4f53c1aad758a5183b0b54e64d8f6993b73ea (patch) | |
tree | 56ef2f1c005b42a1b5aeec2169c7c02a5a3cebf7 | |
parent | eca8b54ef595e543c5ba9a94cc1b62e0c62a64d4 (diff) | |
download | Essentials-9ca4f53c1aad758a5183b0b54e64d8f6993b73ea.tar Essentials-9ca4f53c1aad758a5183b0b54e64d8f6993b73ea.tar.gz Essentials-9ca4f53c1aad758a5183b0b54e64d8f6993b73ea.tar.lz Essentials-9ca4f53c1aad758a5183b0b54e64d8f6993b73ea.tar.xz Essentials-9ca4f53c1aad758a5183b0b54e64d8f6993b73ea.zip |
replace user.isHidden() with player.canSee()
62 files changed, 341 insertions, 287 deletions
diff --git a/Essentials/src/net/ess3/Essentials.java b/Essentials/src/net/ess3/Essentials.java index c0203f9dc..ff1273c83 100644 --- a/Essentials/src/net/ess3/Essentials.java +++ b/Essentials/src/net/ess3/Essentials.java @@ -242,20 +242,19 @@ public class Essentials implements IEssentials { return getServer().broadcastMessage(message); } - if (sender.isHidden()) - { - return 0; - } + Player userPlayer = sender.getPlayer(); + int delivered = 0; for (Player player : getServer().getOnlinePlayers()) { final IUser user = getUserMap().getUser(player); - if (!user.isIgnoringPlayer(sender)) + if (!user.isIgnoringPlayer(sender) && player.canSee(userPlayer)) { player.sendMessage(message); + delivered++; } } - return getServer().getOnlinePlayers().length; + return delivered; } @Override diff --git a/Essentials/src/net/ess3/api/IRanks.java b/Essentials/src/net/ess3/api/IRanks.java index 4785bbb70..d3c68bf43 100644 --- a/Essentials/src/net/ess3/api/IRanks.java +++ b/Essentials/src/net/ess3/api/IRanks.java @@ -1,25 +1,28 @@ package net.ess3.api; import java.text.MessageFormat; +import org.bukkit.command.CommandSender; - +/** + * CommandSender object can be either IUser or Player + */ public interface IRanks { - String getMainGroup(IUser player); + String getMainGroup(CommandSender player); - boolean inGroup(IUser player, String groupname); + boolean inGroup(CommandSender player, String groupname); - double getHealCooldown(IUser player); + double getHealCooldown(CommandSender player); - double getTeleportCooldown(IUser player); + double getTeleportCooldown(CommandSender player); - double getTeleportDelay(IUser player); + double getTeleportDelay(CommandSender player); - String getPrefix(IUser player); + String getPrefix(CommandSender player); - String getSuffix(IUser player); + String getSuffix(CommandSender player); - int getHomeLimit(IUser player); + int getHomeLimit(CommandSender player); - MessageFormat getChatFormat(IUser player); + MessageFormat getChatFormat(CommandSender player); } diff --git a/Essentials/src/net/ess3/api/IUser.java b/Essentials/src/net/ess3/api/IUser.java index 0b6995fa4..ddfe2b76d 100644 --- a/Essentials/src/net/ess3/api/IUser.java +++ b/Essentials/src/net/ess3/api/IUser.java @@ -38,7 +38,7 @@ public interface IUser extends OfflinePlayer, CommandSender, IStorageObjectHolde Location getHome(Location loc); - boolean isHidden(); + //boolean isHidden(); ITeleport getTeleport(); diff --git a/Essentials/src/net/ess3/api/IUserMap.java b/Essentials/src/net/ess3/api/IUserMap.java index 9ce81f03b..0a027e5ae 100644 --- a/Essentials/src/net/ess3/api/IUserMap.java +++ b/Essentials/src/net/ess3/api/IUserMap.java @@ -22,20 +22,32 @@ public interface IUserMap extends IReload int getUniqueUsers(); File getUserFile(final String name) throws InvalidNameException; - + /** - * This method never returns null. - * + * This method never returns null and includes hidden players. + * * @param name - * @param includeHidden * @param includeOffline - * @return + * @return * @throws TooManyMatchesException if more than one player is found matching the name * @throws PlayerNotFoundException if the player matching the name is not found */ - IUser matchUser(final String name, final boolean includeHidden, final boolean includeOffline) throws TooManyMatchesException, PlayerNotFoundException; - - Set<IUser> matchUsers(final String name, final boolean includeHidden, final boolean includeOffline); + IUser matchUser(final String name, final boolean includeOffline) throws TooManyMatchesException, PlayerNotFoundException; + + /** + * This method never returns null and is for online players only. + * + * @param name + * @param requester Can be null, if the requester is the console + * @return + * @throws TooManyMatchesException if more than one player is found matching the name + * @throws PlayerNotFoundException if the player matching the name is not found + */ + IUser matchUserExcludingHidden(final String name, final Player requester) throws TooManyMatchesException, PlayerNotFoundException; + + Set<IUser> matchUsers(final String name, final boolean includeOffline); + + Set<IUser> matchUsersExcludingHidden(final String name, final Player requester); public void addPrejoinedPlayer(Player player); diff --git a/Essentials/src/net/ess3/commands/Commandafk.java b/Essentials/src/net/ess3/commands/Commandafk.java index 3f15469cc..b535cf5e2 100644 --- a/Essentials/src/net/ess3/commands/Commandafk.java +++ b/Essentials/src/net/ess3/commands/Commandafk.java @@ -12,7 +12,7 @@ public class Commandafk extends EssentialsCommand { if (args.length > 0 && Permissions.AFK_OTHERS.isAuthorized(user)) { - IUser afkUser = ess.getUserMap().matchUser(args[0], false, false); + IUser afkUser = ess.getUserMap().matchUserExcludingHidden(args[0], user.getPlayer()); if (afkUser != null) { toggleAfk(afkUser); @@ -30,19 +30,13 @@ public class Commandafk extends EssentialsCommand if (!user.toggleAfk()) { //user.sendMessage(_("markedAsNotAway")); - if (!user.isHidden()) - { - ess.broadcastMessage(user, _("userIsNotAway", user.getPlayer().getDisplayName())); - } + ess.broadcastMessage(user, _("userIsNotAway", user.getPlayer().getDisplayName())); user.updateActivity(false); } else { //user.sendMessage(_("markedAsAway")); - if (!user.isHidden()) - { - ess.broadcastMessage(user, _("userIsAway", user.getPlayer().getDisplayName())); - } + ess.broadcastMessage(user, _("userIsAway", user.getPlayer().getDisplayName())); } } } diff --git a/Essentials/src/net/ess3/commands/Commandbalance.java b/Essentials/src/net/ess3/commands/Commandbalance.java index 4b7b302e1..6c7bd941a 100644 --- a/Essentials/src/net/ess3/commands/Commandbalance.java +++ b/Essentials/src/net/ess3/commands/Commandbalance.java @@ -16,7 +16,7 @@ public class Commandbalance extends EssentialsCommand { throw new NotEnoughArgumentsException(); } - sender.sendMessage(_("balance", FormatUtil.displayCurrency(ess.getUserMap().matchUser(args[0], true, true).getMoney(), ess))); + sender.sendMessage(_("balance", FormatUtil.displayCurrency(ess.getUserMap().matchUser(args[0], true).getMoney(), ess))); } @Override @@ -25,7 +25,7 @@ public class Commandbalance extends EssentialsCommand final double bal = (args.length < 1 || !Permissions.BALANCE_OTHERS.isAuthorized(user) ? user - : ess.getUserMap().matchUser(args[0], true, true)).getMoney(); + : ess.getUserMap().matchUser(args[0], true)).getMoney(); user.sendMessage(_("balance", FormatUtil.displayCurrency(bal, ess))); } } diff --git a/Essentials/src/net/ess3/commands/Commandban.java b/Essentials/src/net/ess3/commands/Commandban.java index a6a517fa8..efe8ea5b9 100644 --- a/Essentials/src/net/ess3/commands/Commandban.java +++ b/Essentials/src/net/ess3/commands/Commandban.java @@ -18,7 +18,7 @@ public class Commandban extends EssentialsCommand { throw new NotEnoughArgumentsException(); } - final IUser user = ess.getUserMap().matchUser(args[0], false, true); + final IUser user = ess.getUserMap().matchUser(args[0], true); if (!user.isOnline()) { if (sender instanceof Player && Permissions.BAN_OFFLINE.isAuthorized(user)) diff --git a/Essentials/src/net/ess3/commands/Commandburn.java b/Essentials/src/net/ess3/commands/Commandburn.java index 512399739..7a3e508d7 100644 --- a/Essentials/src/net/ess3/commands/Commandburn.java +++ b/Essentials/src/net/ess3/commands/Commandburn.java @@ -15,7 +15,7 @@ public class Commandburn extends EssentialsCommand throw new NotEnoughArgumentsException(); } - for (IUser p : ess.getUserMap().matchUsers(args[0], false, false)) + for (IUser p : ess.getUserMap().matchUsersExcludingHidden(args[0], getPlayerOrNull(sender))) { p.getPlayer().setFireTicks(Integer.parseInt(args[1]) * 20); sender.sendMessage(_("burnMsg", p.getPlayer().getDisplayName(), Integer.parseInt(args[1]))); diff --git a/Essentials/src/net/ess3/commands/Commandclearinventory.java b/Essentials/src/net/ess3/commands/Commandclearinventory.java index f7740c96c..4374914f0 100644 --- a/Essentials/src/net/ess3/commands/Commandclearinventory.java +++ b/Essentials/src/net/ess3/commands/Commandclearinventory.java @@ -15,7 +15,7 @@ public class Commandclearinventory extends EssentialsCommand { if (args.length > 0 && Permissions.CLEARINVENTORY_OTHERS.isAuthorized(user)) { - IUser p = ess.getUserMap().matchUser(args[0], false, false); + IUser p = ess.getUserMap().matchUserExcludingHidden(args[0], getPlayerOrNull(user)); if (p != null) { p.getPlayer().getInventory().clear(); diff --git a/Essentials/src/net/ess3/commands/Commanddelhome.java b/Essentials/src/net/ess3/commands/Commanddelhome.java index 2bebe25a8..f0b54cd27 100644 --- a/Essentials/src/net/ess3/commands/Commanddelhome.java +++ b/Essentials/src/net/ess3/commands/Commanddelhome.java @@ -34,7 +34,7 @@ public class Commanddelhome extends EssentialsCommand if (expandedArg.length > 1 && (user == null || Permissions.DELHOME_OTHERS.isAuthorized(user))) { - user = ess.getUserMap().matchUser(expandedArg[1], false, true); + user = ess.getUserMap().matchUser(expandedArg[1], true); name = expandedArg[1]; } else if (user == null) diff --git a/Essentials/src/net/ess3/commands/Commandeco.java b/Essentials/src/net/ess3/commands/Commandeco.java index f5bc325c0..8dbb7ada4 100644 --- a/Essentials/src/net/ess3/commands/Commandeco.java +++ b/Essentials/src/net/ess3/commands/Commandeco.java @@ -82,7 +82,7 @@ public class Commandeco extends EssentialsCommand } else { - final IUser player = ess.getUserMap().matchUser(args[1], true, true); + final IUser player = ess.getUserMap().matchUser(args[1], true); switch (cmd) { case GIVE: diff --git a/Essentials/src/net/ess3/commands/Commandenderchest.java b/Essentials/src/net/ess3/commands/Commandenderchest.java index 54214f812..942894840 100644 --- a/Essentials/src/net/ess3/commands/Commandenderchest.java +++ b/Essentials/src/net/ess3/commands/Commandenderchest.java @@ -12,7 +12,7 @@ public class Commandenderchest extends EssentialsCommand { if (args.length > 0 && Permissions.ENDERCHEST_OTHERS.isAuthorized(user)) { - final IUser invUser = ess.getUserMap().matchUser(args[0], false, false); + final IUser invUser = ess.getUserMap().matchUserExcludingHidden(args[0], user.getPlayer()); user.getPlayer().openInventory(invUser.getPlayer().getEnderChest()); user.setEnderSee(true); } diff --git a/Essentials/src/net/ess3/commands/Commandexp.java b/Essentials/src/net/ess3/commands/Commandexp.java index 072434550..74751e531 100644 --- a/Essentials/src/net/ess3/commands/Commandexp.java +++ b/Essentials/src/net/ess3/commands/Commandexp.java @@ -87,7 +87,7 @@ public class Commandexp extends EssentialsCommand private void showMatch(final CommandSender sender, final String match) throws NotEnoughArgumentsException { boolean foundUser = false; - for (IUser matchPlayer : ess.getUserMap().matchUsers(match, false, false)) + for (IUser matchPlayer : ess.getUserMap().matchUsersExcludingHidden(match, getPlayerOrNull(sender))) { foundUser = true; showExp(sender, matchPlayer); @@ -101,7 +101,7 @@ public class Commandexp extends EssentialsCommand private void expMatch(final CommandSender sender, final String match, final String amount, final boolean toggle) throws NotEnoughArgumentsException { boolean foundUser = false; - for (IUser matchPlayer : ess.getUserMap().matchUsers(match, false, false)) + for (IUser matchPlayer : ess.getUserMap().matchUsersExcludingHidden(match, getPlayerOrNull(sender))) { setExp(sender, matchPlayer, amount, toggle); foundUser = true; diff --git a/Essentials/src/net/ess3/commands/Commandext.java b/Essentials/src/net/ess3/commands/Commandext.java index 7fc130416..39dc82938 100644 --- a/Essentials/src/net/ess3/commands/Commandext.java +++ b/Essentials/src/net/ess3/commands/Commandext.java @@ -33,7 +33,7 @@ public class Commandext extends EssentialsCommand private void extinguishPlayers(final CommandSender sender, final String name) throws Exception { - for (IUser matchPlayer : ess.getUserMap().matchUsers(name, false, false)) + for (IUser matchPlayer : ess.getUserMap().matchUsersExcludingHidden(name, getPlayerOrNull(sender))) { matchPlayer.getPlayer().setFireTicks(0); sender.sendMessage(_("extinguishOthers", matchPlayer.getPlayer().getDisplayName())); diff --git a/Essentials/src/net/ess3/commands/Commandfeed.java b/Essentials/src/net/ess3/commands/Commandfeed.java index d58f14fa3..4f3719ca5 100644 --- a/Essentials/src/net/ess3/commands/Commandfeed.java +++ b/Essentials/src/net/ess3/commands/Commandfeed.java @@ -26,7 +26,7 @@ public class Commandfeed extends EssentialsCommand private void feedOtherPlayers(final CommandSender sender, final String name) { - final Set<IUser> users = ess.getUserMap().matchUsers(name, false, false); + final Set<IUser> users = ess.getUserMap().matchUsersExcludingHidden(name, getPlayerOrNull(sender)); if (users.isEmpty()) { sender.sendMessage(_("playerNotFound")); diff --git a/Essentials/src/net/ess3/commands/Commandfly.java b/Essentials/src/net/ess3/commands/Commandfly.java index 881fecc30..10025cc12 100644 --- a/Essentials/src/net/ess3/commands/Commandfly.java +++ b/Essentials/src/net/ess3/commands/Commandfly.java @@ -7,8 +7,6 @@ import org.bukkit.Server; import org.bukkit.command.CommandSender; - - public class Commandfly extends EssentialsCommand { @Override @@ -40,8 +38,8 @@ public class Commandfly extends EssentialsCommand private void flyOtherPlayers(final Server server, final CommandSender sender, final String[] args) { - for (IUser matchPlayer : ess.getUserMap().matchUsers(args[0],false,false)) - { + for (IUser matchPlayer : ess.getUserMap().matchUsersExcludingHidden(args[0], getPlayerOrNull(sender))) + { if (args.length > 1) { if (args[1].contains("on") || args[1].contains("ena") || args[1].equalsIgnoreCase("1")) @@ -57,7 +55,7 @@ public class Commandfly extends EssentialsCommand { matchPlayer.getPlayer().setAllowFlight(!matchPlayer.getPlayer().getAllowFlight()); } - + if (!matchPlayer.getPlayer().getAllowFlight()) { matchPlayer.getPlayer().setFlying(false); diff --git a/Essentials/src/net/ess3/commands/Commandgamemode.java b/Essentials/src/net/ess3/commands/Commandgamemode.java index eb74b6c33..92cad1787 100644 --- a/Essentials/src/net/ess3/commands/Commandgamemode.java +++ b/Essentials/src/net/ess3/commands/Commandgamemode.java @@ -36,7 +36,7 @@ public class Commandgamemode extends EssentialsCommand private void gamemodeOtherPlayers(final CommandSender sender, final String args[]) { - for (IUser player : ess.getUserMap().matchUsers(args[0], false, false)) + for (IUser player : ess.getUserMap().matchUsersExcludingHidden(args[0], getPlayerOrNull(sender))) { if (args.length > 1) { diff --git a/Essentials/src/net/ess3/commands/Commandgetpos.java b/Essentials/src/net/ess3/commands/Commandgetpos.java index 7b2dd2e68..96873186e 100644 --- a/Essentials/src/net/ess3/commands/Commandgetpos.java +++ b/Essentials/src/net/ess3/commands/Commandgetpos.java @@ -15,8 +15,8 @@ public class Commandgetpos extends EssentialsCommand if (args.length > 0 && Permissions.GETPOS_OTHERS.isAuthorized(user)) { //todo permissions - final IUser otherUser = ess.getUserMap().matchUser(args[0], false, false); - if (!otherUser.isHidden() || Permissions.LIST_HIDDEN.isAuthorized(user)) + final IUser otherUser = ess.getUserMap().matchUser(args[0], false); + if (user.getPlayer().canSee(otherUser.getPlayer()) || Permissions.LIST_HIDDEN.isAuthorized(user)) { outputPosition(user, otherUser.getPlayer().getLocation(), user.getPlayer().getLocation()); return; @@ -33,7 +33,7 @@ public class Commandgetpos extends EssentialsCommand { throw new NotEnoughArgumentsException(); } - final IUser user = ess.getUserMap().matchUser(args[0], false, false); + final IUser user = ess.getUserMap().matchUser(args[0], false); outputPosition(sender, user.getPlayer().getLocation(), null); } diff --git a/Essentials/src/net/ess3/commands/Commandgive.java b/Essentials/src/net/ess3/commands/Commandgive.java index 803680c53..416886ee6 100644 --- a/Essentials/src/net/ess3/commands/Commandgive.java +++ b/Essentials/src/net/ess3/commands/Commandgive.java @@ -21,7 +21,7 @@ public class Commandgive extends EssentialsCommand throw new NotEnoughArgumentsException(); } - final IUser giveTo = ess.getUserMap().matchUser(args[0], false, false); + final IUser giveTo = ess.getUserMap().matchUserExcludingHidden(args[0], getPlayerOrNull(sender)); final ItemStack stack = ess.getItemDb().get(args[1], giveTo); diff --git a/Essentials/src/net/ess3/commands/Commandgod.java b/Essentials/src/net/ess3/commands/Commandgod.java index 11daf7321..97cbdad56 100644 --- a/Essentials/src/net/ess3/commands/Commandgod.java +++ b/Essentials/src/net/ess3/commands/Commandgod.java @@ -6,7 +6,6 @@ import net.ess3.permissions.Permissions; import org.bukkit.command.CommandSender; - public class Commandgod extends EssentialsCommand { @Override @@ -35,13 +34,8 @@ public class Commandgod extends EssentialsCommand private void godOtherPlayers(final CommandSender sender, final String[] args) { - for (IUser player : ess.getUserMap().matchUsers(args[0], false, true)) + for (IUser player : ess.getUserMap().matchUsers(args[0], true)) { - if (player.isHidden()) - { - continue; - } - if (args.length > 1) { if (args[1].contains("on") || args[1].contains("ena") || args[1].equalsIgnoreCase("1")) diff --git a/Essentials/src/net/ess3/commands/Commandheal.java b/Essentials/src/net/ess3/commands/Commandheal.java index 5159da699..fd02a0201 100644 --- a/Essentials/src/net/ess3/commands/Commandheal.java +++ b/Essentials/src/net/ess3/commands/Commandheal.java @@ -43,7 +43,7 @@ public class Commandheal extends EssentialsCommand private void healOtherPlayers(final CommandSender sender, final String name) { - final Set<IUser> users = ess.getUserMap().matchUsers(name, false, false); + final Set<IUser> users = ess.getUserMap().matchUsersExcludingHidden(name, getPlayerOrNull(sender)); if (users.isEmpty()) { sender.sendMessage(_("playerNotFound")); diff --git a/Essentials/src/net/ess3/commands/Commandhome.java b/Essentials/src/net/ess3/commands/Commandhome.java index 247ecd2db..936a2f4a5 100644 --- a/Essentials/src/net/ess3/commands/Commandhome.java +++ b/Essentials/src/net/ess3/commands/Commandhome.java @@ -31,7 +31,7 @@ public class Commandhome extends EssentialsCommand } else { - player = ess.getUserMap().matchUser(nameParts[0], false, true); + player = ess.getUserMap().matchUser(nameParts[0], true); if (nameParts.length > 1) { homeName = nameParts[1]; diff --git a/Essentials/src/net/ess3/commands/Commandignore.java b/Essentials/src/net/ess3/commands/Commandignore.java index bc9dbd283..d0efc48c6 100644 --- a/Essentials/src/net/ess3/commands/Commandignore.java +++ b/Essentials/src/net/ess3/commands/Commandignore.java @@ -13,7 +13,7 @@ public class Commandignore extends EssentialsCommand { throw new NotEnoughArgumentsException(); } - IUser player = ess.getUserMap().matchUser(args[0], false, false); + IUser player = ess.getUserMap().matchUserExcludingHidden(args[0], user.getPlayer()); if (user.isIgnoringPlayer(player)) { diff --git a/Essentials/src/net/ess3/commands/Commandinvsee.java b/Essentials/src/net/ess3/commands/Commandinvsee.java index 64e52e55d..7a81b36fb 100644 --- a/Essentials/src/net/ess3/commands/Commandinvsee.java +++ b/Essentials/src/net/ess3/commands/Commandinvsee.java @@ -21,7 +21,7 @@ public class Commandinvsee extends EssentialsCommand IUser invUser = user; if (args.length == 1) { - invUser = ess.getUserMap().matchUser(args[0], false, false); + invUser = ess.getUserMap().matchUserExcludingHidden(args[0], user.getPlayer()); } if (invUser == user && user.getData().getInventory() != null) { diff --git a/Essentials/src/net/ess3/commands/Commandkick.java b/Essentials/src/net/ess3/commands/Commandkick.java index ed3965794..a61e58af7 100644 --- a/Essentials/src/net/ess3/commands/Commandkick.java +++ b/Essentials/src/net/ess3/commands/Commandkick.java @@ -18,7 +18,7 @@ public class Commandkick extends EssentialsCommand throw new NotEnoughArgumentsException(); } - final IUser user = ess.getUserMap().matchUser(args[0], false, false); + final IUser user = ess.getUserMap().matchUserExcludingHidden(args[0], getPlayerOrNull(sender)); if (Permissions.KICK_EXEMPT.isAuthorized(user)) { throw new Exception(_("kickExempt")); diff --git a/Essentials/src/net/ess3/commands/Commandkill.java b/Essentials/src/net/ess3/commands/Commandkill.java index a098f8096..3b0c958f8 100644 --- a/Essentials/src/net/ess3/commands/Commandkill.java +++ b/Essentials/src/net/ess3/commands/Commandkill.java @@ -16,7 +16,7 @@ public class Commandkill extends EssentialsCommand throw new NotEnoughArgumentsException(); } - for (IUser matchPlayer : ess.getUserMap().matchUsers(args[0], false, false)) + for (IUser matchPlayer : ess.getUserMap().matchUsersExcludingHidden(args[0], getPlayerOrNull(sender))) { final EntityDamageEvent ede = new EntityDamageEvent(matchPlayer.getPlayer(), sender instanceof IUser && sender.getName().equals(matchPlayer.getName()) ? EntityDamageEvent.DamageCause.SUICIDE : EntityDamageEvent.DamageCause.CUSTOM, Short.MAX_VALUE); server.getPluginManager().callEvent(ede); diff --git a/Essentials/src/net/ess3/commands/Commandlightning.java b/Essentials/src/net/ess3/commands/Commandlightning.java index a3cbf8038..ffaa05b98 100644 --- a/Essentials/src/net/ess3/commands/Commandlightning.java +++ b/Essentials/src/net/ess3/commands/Commandlightning.java @@ -25,7 +25,7 @@ public class Commandlightning extends EssentialsCommand return; } - if (ess.getUserMap().matchUsers(args[0], false, false).isEmpty()) + if (ess.getUserMap().matchUsersExcludingHidden(args[0], getPlayerOrNull(sender)).isEmpty()) { throw new Exception(_("playerNotFound")); } @@ -42,7 +42,7 @@ public class Commandlightning extends EssentialsCommand } } - for (IUser matchPlayer : ess.getUserMap().matchUsers(args[0], false, false)) + for (IUser matchPlayer : ess.getUserMap().matchUsersExcludingHidden(args[0], getPlayerOrNull(sender))) { sender.sendMessage(_("lightningUse", matchPlayer.getPlayer().getDisplayName())); final LightningStrike strike = matchPlayer.getPlayer().getWorld().strikeLightningEffect(matchPlayer.getPlayer().getLocation()); diff --git a/Essentials/src/net/ess3/commands/Commandlist.java b/Essentials/src/net/ess3/commands/Commandlist.java index c04418a3b..e5376c0df 100644 --- a/Essentials/src/net/ess3/commands/Commandlist.java +++ b/Essentials/src/net/ess3/commands/Commandlist.java @@ -15,29 +15,38 @@ public class Commandlist extends EssentialsCommand @Override protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception { + String online; boolean showhidden = false; if (Permissions.LIST_HIDDEN.isAuthorized(sender)) { showhidden = true; } - int playerHidden = 0; - for (Player onlinePlayer : server.getOnlinePlayers()) + Player userPlayer = getPlayerOrNull(sender); + if (userPlayer != null) { - if (ess.getUserMap().getUser(onlinePlayer).isHidden()) + int playerHidden = 0; + for (Player onlinePlayer : server.getOnlinePlayers()) { - playerHidden++; + if (!userPlayer.canSee(onlinePlayer)) + { + playerHidden++; + } } - } - String online; - if (showhidden && playerHidden > 0) - { - online = _("listAmountHidden", server.getOnlinePlayers().length - playerHidden, playerHidden, server.getMaxPlayers()); + if (showhidden && playerHidden > 0) + { + online = _("listAmountHidden", server.getOnlinePlayers().length - playerHidden, playerHidden, server.getMaxPlayers()); + } + else + { + online = _("listAmount", server.getOnlinePlayers().length - playerHidden, server.getMaxPlayers()); + } } else { - online = _("listAmount", server.getOnlinePlayers().length - playerHidden, server.getMaxPlayers()); + online = _("listAmount", server.getOnlinePlayers().length, server.getMaxPlayers()); } + sender.sendMessage(online); ISettings settings = ess.getSettings(); @@ -47,21 +56,26 @@ public class Commandlist extends EssentialsCommand if (sortListByGroups) { Map<String, List<IUser>> sort = new HashMap<String, List<IUser>>(); + Set<String> hiddenPlayers = new HashSet<String>(); for (Player onlinePlayer : server.getOnlinePlayers()) { - final IUser player = getUser(onlinePlayer); - if (player.isHidden() && !showhidden) + if (userPlayer != null + && !userPlayer.canSee(onlinePlayer)) { - continue; + hiddenPlayers.add(onlinePlayer.getName()); + if (!showhidden) + { + continue; + } } - final String group = ess.getRanks().getMainGroup(player); + final String group = ess.getRanks().getMainGroup(onlinePlayer); List<IUser> list = sort.get(group); if (list == null) { list = new ArrayList<IUser>(); sort.put(group, list); } - list.add(player); + list.add(getUser(onlinePlayer)); } final String[] groups = sort.keySet().toArray(new String[0]); Arrays.sort(groups, String.CASE_INSENSITIVE_ORDER); @@ -88,7 +102,7 @@ public class Commandlist extends EssentialsCommand groupString.append(_("listAfkTag")); } - if (user.isHidden()) + if (hiddenPlayers.contains(user.getName())) { groupString.append(_("listHiddenTag")); } @@ -102,14 +116,19 @@ public class Commandlist extends EssentialsCommand else { final List<IUser> users = new ArrayList<IUser>(); + Set<String> hiddenPlayers = new HashSet<String>(); for (Player onlinePlayer : server.getOnlinePlayers()) { - final IUser player = getUser(onlinePlayer); - if (player.isHidden() && !showhidden) + if (userPlayer != null + && !userPlayer.canSee(onlinePlayer)) { - continue; + hiddenPlayers.add(onlinePlayer.getName()); + if (!showhidden) + { + continue; + } } - users.add(player); + users.add(getUser(onlinePlayer)); } Collections.sort(users); @@ -132,7 +151,7 @@ public class Commandlist extends EssentialsCommand onlineUsers.append(_("listAfkTag")); } - if (user.isHidden()) + if (hiddenPlayers.contains(user.getName())) { onlineUsers.append(_("listHiddenTag")); } diff --git a/Essentials/src/net/ess3/commands/Commandmail.java b/Essentials/src/net/ess3/commands/Commandmail.java index 3ee10cccb..6a510ae1e 100644 --- a/Essentials/src/net/ess3/commands/Commandmail.java +++ b/Essentials/src/net/ess3/commands/Commandmail.java @@ -37,7 +37,7 @@ public class Commandmail extends EssentialsCommand throw new Exception(_("noPerm", "essentials.mail.send")); } - IUser u = ess.getUserMap().matchUser(args[1], true, true); + IUser u = ess.getUserMap().matchUser(args[1], true); if (u == null) { throw new Exception(_("playerNeverOnServer", args[1])); @@ -83,7 +83,7 @@ public class Commandmail extends EssentialsCommand } else if (args.length >= 3 && "send".equalsIgnoreCase(args[0])) { - IUser u = ess.getUserMap().matchUser(args[1], true, true); + IUser u = ess.getUserMap().matchUser(args[1], true); u.addMail("Server: " + getFinalArg(args, 2)); sender.sendMessage(_("mailSent")); return; @@ -95,7 +95,7 @@ public class Commandmail extends EssentialsCommand else if (args.length >= 2) { //allow sending from console without "send" argument, since it's the only thing the console can do - IUser u = ess.getUserMap().matchUser(args[0], true, true); + IUser u = ess.getUserMap().matchUser(args[0], true); u.addMail("Server: " + getFinalArg(args, 1)); sender.sendMessage(_("mailSent")); return; diff --git a/Essentials/src/net/ess3/commands/Commandmsg.java b/Essentials/src/net/ess3/commands/Commandmsg.java index dcc76c185..aa54a4840 100644 --- a/Essentials/src/net/ess3/commands/Commandmsg.java +++ b/Essentials/src/net/ess3/commands/Commandmsg.java @@ -8,7 +8,7 @@ import net.ess3.api.IUser; import net.ess3.permissions.Permissions; import net.ess3.utils.FormatUtil; import org.bukkit.command.CommandSender; - +import org.bukkit.entity.Player; public class Commandmsg extends EssentialsCommand @@ -57,31 +57,37 @@ public class Commandmsg extends EssentialsCommand Console.getConsoleReplyTo().setReplyTo(sender); return; } + - final Set<IUser> matchedPlayers = ess.getUserMap().matchUsers(args[0], true, false); + final Set<IUser> matchedPlayers = ess.getUserMap().matchUsers(args[0], false); if (matchedPlayers.isEmpty()) { throw new Exception(_("playerNotFound")); } - int i = 0; - for (IUser u : matchedPlayers) + final Player player = getPlayerOrNull(sender); + if (isUser(sender)) { - if (u.isHidden()) + int i = 0; + + for (IUser u : matchedPlayers) { - i++; + if (!player.canSee(u.getPlayer())) + { + i++; + } + } + if (i == matchedPlayers.size()) + { + throw new Exception(_("playerNotFound")); } - } - if (i == matchedPlayers.size()) - { - throw new Exception(_("playerNotFound")); } for (IUser matchedPlayer : matchedPlayers) { sender.sendMessage(_("msgFormat", translatedMe, matchedPlayer.getPlayer().getDisplayName(), message)); - if (isUser(sender) && (matchedPlayer.isIgnoringPlayer(getUser(sender)) || matchedPlayer.isHidden())) + if (isUser(sender) && (matchedPlayer.isIgnoringPlayer(getUser(sender)) || !player.canSee(matchedPlayer.getPlayer()))) { continue; } diff --git a/Essentials/src/net/ess3/commands/Commandmute.java b/Essentials/src/net/ess3/commands/Commandmute.java index 5cbba493b..8e23855d4 100644 --- a/Essentials/src/net/ess3/commands/Commandmute.java +++ b/Essentials/src/net/ess3/commands/Commandmute.java @@ -18,7 +18,7 @@ public class Commandmute extends EssentialsCommand throw new NotEnoughArgumentsException(); } - final IUser player = ess.getUserMap().matchUser(args[0], false, true); + final IUser player = ess.getUserMap().matchUser(args[0], true); if (!player.getData().isMuted() && Permissions.MUTE_EXEMPT.isAuthorized(player)) { throw new Exception(_("muteExempt")); diff --git a/Essentials/src/net/ess3/commands/Commandnear.java b/Essentials/src/net/ess3/commands/Commandnear.java index d8c313012..f41c99907 100644 --- a/Essentials/src/net/ess3/commands/Commandnear.java +++ b/Essentials/src/net/ess3/commands/Commandnear.java @@ -22,7 +22,7 @@ public class Commandnear extends EssentialsCommand { try { - otherUser = ess.getUserMap().matchUser(args[0], false, false); + otherUser = ess.getUserMap().matchUserExcludingHidden(args[0], user.getPlayer()); } catch (Exception ex) { @@ -62,7 +62,7 @@ public class Commandnear extends EssentialsCommand { throw new NotEnoughArgumentsException(); } - final IUser otherUser = ess.getUserMap().matchUser(args[0], false, false); + final IUser otherUser = ess.getUserMap().matchUser(args[0], false); long radius = 200; if (args.length > 1) { @@ -83,11 +83,11 @@ public class Commandnear extends EssentialsCommand final World world = loc.getWorld(); final StringBuilder output = new StringBuilder(); final long radiusSquared = radius * radius; + Player userPlayer = user.getPlayer(); for (Player onlinePlayer : server.getOnlinePlayers()) { - final IUser player = getUser(onlinePlayer); - if (!player.equals(user) && !player.isHidden()) + if (!onlinePlayer.getName().equals(user.getName()) && userPlayer.canSee(onlinePlayer)) { final Location playerLoc = onlinePlayer.getLocation(); if (playerLoc.getWorld() != world) diff --git a/Essentials/src/net/ess3/commands/Commandnick.java b/Essentials/src/net/ess3/commands/Commandnick.java index 86cc8113e..7a152052a 100644 --- a/Essentials/src/net/ess3/commands/Commandnick.java +++ b/Essentials/src/net/ess3/commands/Commandnick.java @@ -31,7 +31,7 @@ public class Commandnick extends EssentialsCommand { throw new Exception(_("nickOthersPermission")); } - setNickname(ess.getUserMap().matchUser(args[0], false, false), formatNickname(user, args[1])); + setNickname(ess.getUserMap().matchUserExcludingHidden(args[0], user.getPlayer()), formatNickname(user, args[1])); user.sendMessage(_("nickChanged")); return; } @@ -56,7 +56,7 @@ public class Commandnick extends EssentialsCommand } else { - setNickname(ess.getUserMap().matchUser(args[0], false, false), formatNickname(null, args[1])); + setNickname(ess.getUserMap().matchUser(args[0], false), formatNickname(null, args[1])); } sender.sendMessage(_("nickChanged")); } diff --git a/Essentials/src/net/ess3/commands/Commandpay.java b/Essentials/src/net/ess3/commands/Commandpay.java index 9143d5fd8..ff7e1ef12 100644 --- a/Essentials/src/net/ess3/commands/Commandpay.java +++ b/Essentials/src/net/ess3/commands/Commandpay.java @@ -23,7 +23,7 @@ public class Commandpay extends EssentialsCommand } boolean foundUser = false; - for (IUser u : ess.getUserMap().matchUsers(args[0], false, true)) + for (IUser u : ess.getUserMap().matchUsers(args[0], true)) { user.payUser(u, amount); Trade.log("Command", "Pay", "Player", user.getName(), new Trade(amount, ess), u.getName(), new Trade(amount, ess), user.getPlayer().getLocation(), ess); diff --git a/Essentials/src/net/ess3/commands/Commandrealname.java b/Essentials/src/net/ess3/commands/Commandrealname.java index 40c6b3003..b1372bd19 100644 --- a/Essentials/src/net/ess3/commands/Commandrealname.java +++ b/Essentials/src/net/ess3/commands/Commandrealname.java @@ -20,10 +20,11 @@ public class Commandrealname extends EssentialsCommand } final ISettings settings = ess.getSettings(); final String whois = args[0].toLowerCase(Locale.ENGLISH); + Player player = sender instanceof IUser ? ((IUser)sender).getPlayer() : null; for (Player onlinePlayer : server.getOnlinePlayers()) { final IUser u = ess.getUserMap().getUser(onlinePlayer); - if (u.isHidden()) + if (player != null && !player.canSee(onlinePlayer)) { continue; } diff --git a/Essentials/src/net/ess3/commands/Commandseen.java b/Essentials/src/net/ess3/commands/Commandseen.java index 4cc3ba1eb..121b5e735 100644 --- a/Essentials/src/net/ess3/commands/Commandseen.java +++ b/Essentials/src/net/ess3/commands/Commandseen.java @@ -30,7 +30,7 @@ public class Commandseen extends EssentialsCommand } try { - IUser u = ess.getUserMap().matchUser(args[0], false, false); + IUser u = ess.getUserMap().matchUserExcludingHidden(args[0], getPlayerOrNull(sender)); sender.sendMessage(_("seenOnline", u.getPlayer().getDisplayName(), DateUtil.formatDateDiff(u.getTimestamp(TimestampType.LOGIN)))); } catch (PlayerNotFoundException e) diff --git a/Essentials/src/net/ess3/commands/Commandspawn.java b/Essentials/src/net/ess3/commands/Commandspawn.java index 9a0625a6c..2504a1576 100644 --- a/Essentials/src/net/ess3/commands/Commandspawn.java +++ b/Essentials/src/net/ess3/commands/Commandspawn.java @@ -18,7 +18,7 @@ public class Commandspawn extends EssentialsCommand charge.isAffordableFor(user); if (args.length > 0 && Permissions.SPAWN_OTHERS.isAuthorized(user)) { - final IUser otherUser = ess.getUserMap().matchUser(args[0], false, false); + final IUser otherUser = ess.getUserMap().matchUserExcludingHidden(args[0], user.getPlayer()); respawn(otherUser, null); if (!otherUser.equals(user)) { @@ -39,7 +39,7 @@ public class Commandspawn extends EssentialsCommand { throw new NotEnoughArgumentsException(); } - final IUser user = ess.getUserMap().matchUser(args[0], false, false); + final IUser user = ess.getUserMap().matchUser(args[0], false); respawn(user, null); user.sendMessage(_("teleportAtoB", user.getPlayer().getDisplayName(), "spawn")); sender.sendMessage(_("teleporting")); diff --git a/Essentials/src/net/ess3/commands/Commandsudo.java b/Essentials/src/net/ess3/commands/Commandsudo.java index 58279c9ef..3193122fb 100644 --- a/Essentials/src/net/ess3/commands/Commandsudo.java +++ b/Essentials/src/net/ess3/commands/Commandsudo.java @@ -17,7 +17,7 @@ public class Commandsudo extends EssentialsCommand throw new NotEnoughArgumentsException(); } - final IUser user = ess.getUserMap().matchUser(args[0], false, false); + final IUser user = ess.getUserMap().matchUserExcludingHidden(args[0], getPlayerOrNull(sender)); final String command = args[1]; final String[] arguments = new String[args.length - 2]; if (arguments.length > 0) diff --git a/Essentials/src/net/ess3/commands/Commandtempban.java b/Essentials/src/net/ess3/commands/Commandtempban.java index a687cbb0d..ef21375ab 100644 --- a/Essentials/src/net/ess3/commands/Commandtempban.java +++ b/Essentials/src/net/ess3/commands/Commandtempban.java @@ -19,7 +19,7 @@ public class Commandtempban extends EssentialsCommand { throw new NotEnoughArgumentsException(); } - final IUser user = ess.getUserMap().matchUser(args[0], false, true); + final IUser user = ess.getUserMap().matchUser(args[0], true); if (!user.isOnline()) { if (Permissions.TEMPBAN_OFFLINE.isAuthorized(sender)) diff --git a/Essentials/src/net/ess3/commands/Commandtogglejail.java b/Essentials/src/net/ess3/commands/Commandtogglejail.java index cf033aa12..667a4a551 100644 --- a/Essentials/src/net/ess3/commands/Commandtogglejail.java +++ b/Essentials/src/net/ess3/commands/Commandtogglejail.java @@ -18,7 +18,7 @@ public class Commandtogglejail extends EssentialsCommand throw new NotEnoughArgumentsException(); } - final IUser player = ess.getUserMap().matchUser(args[0], false, true); + final IUser player = ess.getUserMap().matchUser(args[0], true); if (args.length >= 2 && !player.getData().isJailed()) { diff --git a/Essentials/src/net/ess3/commands/Commandtp.java b/Essentials/src/net/ess3/commands/Commandtp.java index 5a3acb3bc..66aa5d604 100644 --- a/Essentials/src/net/ess3/commands/Commandtp.java +++ b/Essentials/src/net/ess3/commands/Commandtp.java @@ -22,7 +22,7 @@ public class Commandtp extends EssentialsCommand throw new NotEnoughArgumentsException(); case 1: - final IUser player = ess.getUserMap().matchUser(args[0], false, false); + final IUser player = ess.getUserMap().matchUserExcludingHidden(args[0], user.getPlayer()); if (!player.getData().isTeleportEnabled()) { throw new Exception(_("teleportDisabled", player.getPlayer().getDisplayName())); @@ -45,9 +45,9 @@ public class Commandtp extends EssentialsCommand } user.sendMessage(_("teleporting")); - final IUser target = ess.getUserMap().matchUser(args[0], false, false); + final IUser target = ess.getUserMap().matchUserExcludingHidden(args[0], user.getPlayer()); - final IUser toPlayer = ess.getUserMap().matchUser(args[1], false, false); + final IUser toPlayer = ess.getUserMap().matchUserExcludingHidden(args[1], user.getPlayer()); if (!target.getData().isTeleportEnabled()) { diff --git a/Essentials/src/net/ess3/commands/Commandtpa.java b/Essentials/src/net/ess3/commands/Commandtpa.java index 214a07f44..9e585abf9 100644 --- a/Essentials/src/net/ess3/commands/Commandtpa.java +++ b/Essentials/src/net/ess3/commands/Commandtpa.java @@ -17,7 +17,7 @@ public class Commandtpa extends EssentialsCommand } - IUser player = ess.getUserMap().matchUser(args[0], false, false); + IUser player = ess.getUserMap().matchUserExcludingHidden(args[0], user.getPlayer()); if (!player.getData().isTeleportEnabled()) { throw new Exception(_("teleportDisabled", player.getPlayer().getDisplayName())); diff --git a/Essentials/src/net/ess3/commands/Commandtpaall.java b/Essentials/src/net/ess3/commands/Commandtpaall.java index 6629a4929..633027620 100644 --- a/Essentials/src/net/ess3/commands/Commandtpaall.java +++ b/Essentials/src/net/ess3/commands/Commandtpaall.java @@ -23,7 +23,7 @@ public class Commandtpaall extends EssentialsCommand throw new NotEnoughArgumentsException(); } - final IUser player = ess.getUserMap().matchUser(args[0], false, false); + final IUser player = ess.getUserMap().matchUserExcludingHidden(args[0], getPlayerOrNull(sender)); teleportAAllPlayers(sender, player); } diff --git a/Essentials/src/net/ess3/commands/Commandtpahere.java b/Essentials/src/net/ess3/commands/Commandtpahere.java index 00cc6171d..ad876e996 100644 --- a/Essentials/src/net/ess3/commands/Commandtpahere.java +++ b/Essentials/src/net/ess3/commands/Commandtpahere.java @@ -17,7 +17,7 @@ public class Commandtpahere extends EssentialsCommand } - final IUser player = ess.getUserMap().matchUser(args[0], false, false); + final IUser player = ess.getUserMap().matchUserExcludingHidden(args[0], user.getPlayer()); if (!player.getData().isTeleportEnabled()) { throw new Exception(_("teleportDisabled", player.getPlayer().getDisplayName())); diff --git a/Essentials/src/net/ess3/commands/Commandtpall.java b/Essentials/src/net/ess3/commands/Commandtpall.java index fc07a1610..5fbafad81 100644 --- a/Essentials/src/net/ess3/commands/Commandtpall.java +++ b/Essentials/src/net/ess3/commands/Commandtpall.java @@ -24,7 +24,7 @@ public class Commandtpall extends EssentialsCommand throw new NotEnoughArgumentsException(); } - final IUser player = ess.getUserMap().matchUser(args[0], false, false); + final IUser player = ess.getUserMap().matchUserExcludingHidden(args[0], getPlayerOrNull(sender)); teleportAllPlayers(sender, player); } diff --git a/Essentials/src/net/ess3/commands/Commandtphere.java b/Essentials/src/net/ess3/commands/Commandtphere.java index a47f28edd..525591e9b 100644 --- a/Essentials/src/net/ess3/commands/Commandtphere.java +++ b/Essentials/src/net/ess3/commands/Commandtphere.java @@ -11,7 +11,7 @@ public class Commandtphere extends EssentialsCommand @Override public void run(final IUser user, final String commandLabel, final String[] args) throws Exception { - final IUser player = ess.getUserMap().matchUser(args[0], false, false); + final IUser player = ess.getUserMap().matchUserExcludingHidden(args[0], user.getPlayer()); if (!player.getData().isTeleportEnabled()) { throw new Exception(_("teleportDisabled", player.getPlayer().getDisplayName())); diff --git a/Essentials/src/net/ess3/commands/Commandtpo.java b/Essentials/src/net/ess3/commands/Commandtpo.java index ae6a9d5c4..0ca3df387 100644 --- a/Essentials/src/net/ess3/commands/Commandtpo.java +++ b/Essentials/src/net/ess3/commands/Commandtpo.java @@ -17,15 +17,10 @@ public class Commandtpo extends EssentialsCommand } //Just basically the old tp command - final IUser player = ess.getUserMap().matchUser(args[0], false, true); - // Check if user is offline - if (!player.isOnline()) - { - throw new NoSuchFieldException(_("playerNotFound")); - } + final IUser player = ess.getUserMap().matchUser(args[0], false); // Verify permission - if (!player.isHidden() || Permissions.TELEPORT_HIDDEN.isAuthorized(user)) + if (user.getPlayer().canSee(player.getPlayer()) || Permissions.TELEPORT_HIDDEN.isAuthorized(user)) { user.getTeleport().now(player.getPlayer(), false, TeleportCause.COMMAND); user.sendMessage(_("teleporting")); diff --git a/Essentials/src/net/ess3/commands/Commandtpohere.java b/Essentials/src/net/ess3/commands/Commandtpohere.java index 7bf25dac7..db6adfdab 100644 --- a/Essentials/src/net/ess3/commands/Commandtpohere.java +++ b/Essentials/src/net/ess3/commands/Commandtpohere.java @@ -18,13 +18,7 @@ public class Commandtpohere extends EssentialsCommand } //Just basically the old tphere command - final IUser player = ess.getUserMap().matchUser(args[0], false, true); - - // Check if user is offline - if (!player.isOnline()) - { - throw new NoSuchFieldException(_("playerNotFound")); - } + final IUser player = ess.getUserMap().matchUser(args[0], false); ISettings settings = ess.getSettings(); //todo - common method @@ -36,7 +30,7 @@ public class Commandtpohere extends EssentialsCommand // Verify permission - if (!player.isHidden() || Permissions.TELEPORT_HIDDEN.isAuthorized(user)) + if (user.getPlayer().canSee(player.getPlayer()) || Permissions.TELEPORT_HIDDEN.isAuthorized(user)) { player.getTeleport().now(user.getPlayer(), false, TeleportCause.COMMAND); user.sendMessage(_("teleporting")); diff --git a/Essentials/src/net/ess3/commands/Commandunban.java b/Essentials/src/net/ess3/commands/Commandunban.java index 5693454ad..d6a6d3b12 100644 --- a/Essentials/src/net/ess3/commands/Commandunban.java +++ b/Essentials/src/net/ess3/commands/Commandunban.java @@ -16,7 +16,7 @@ public class Commandunban extends EssentialsCommand } - final IUser player = ess.getUserMap().matchUser(args[0], false, true); + final IUser player = ess.getUserMap().matchUser(args[0], true); player.getData().setBan(null); player.setBanned(false); player.queueSave(); diff --git a/Essentials/src/net/ess3/commands/Commandunbanip.java b/Essentials/src/net/ess3/commands/Commandunbanip.java index 1fd07f09b..325edea64 100644 --- a/Essentials/src/net/ess3/commands/Commandunbanip.java +++ b/Essentials/src/net/ess3/commands/Commandunbanip.java @@ -16,7 +16,7 @@ public class Commandunbanip extends EssentialsCommand } try { - final IUser user = ess.getUserMap().matchUser(args[0], false, true); + final IUser user = ess.getUserMap().matchUser(args[0], true); ess.getServer().unbanIP(user.getData().getIpAddress()); } catch (Exception ex) diff --git a/Essentials/src/net/ess3/commands/Commandunlimited.java b/Essentials/src/net/ess3/commands/Commandunlimited.java index 91483a62a..db6d17f66 100644 --- a/Essentials/src/net/ess3/commands/Commandunlimited.java +++ b/Essentials/src/net/ess3/commands/Commandunlimited.java @@ -25,7 +25,7 @@ public class Commandunlimited extends EssentialsCommand if (args.length > 1 && Permissions.UNLIMITED_OTHERS.isAuthorized(user)) { - target = ess.getUserMap().matchUser(args[1], false, false); + target = ess.getUserMap().matchUserExcludingHidden(args[1], user.getPlayer()); } if (args[0].equalsIgnoreCase("list")) diff --git a/Essentials/src/net/ess3/commands/Commandwarp.java b/Essentials/src/net/ess3/commands/Commandwarp.java index 9e08f849f..ed862171d 100644 --- a/Essentials/src/net/ess3/commands/Commandwarp.java +++ b/Essentials/src/net/ess3/commands/Commandwarp.java @@ -35,10 +35,10 @@ public class Commandwarp extends EssentialsCommand IUser otherUser = null; if (args.length == 2 && Permissions.WARP_OTHERS.isAuthorized(user)) { - otherUser = ess.getUserMap().matchUser(args[1],Permissions.WARP_HIDDEN.isAuthorized(user), false); - if (otherUser == null) - { - throw new Exception(_("playerNotFound")); + if (Permissions.WARP_HIDDEN.isAuthorized(user)) { + otherUser = ess.getUserMap().matchUser(args[1], false); + } else { + otherUser = ess.getUserMap().matchUserExcludingHidden(args[1], user.getPlayer()); } warpUser(otherUser, args[0]); throw new NoChargeException(); @@ -56,7 +56,7 @@ public class Commandwarp extends EssentialsCommand warpList(sender, args); throw new NoChargeException(); } - IUser otherUser = ess.getUserMap().matchUser(args[1],Permissions.WARP_HIDDEN.isAuthorized(sender), false); + IUser otherUser = ess.getUserMap().matchUser(args[1], false); if (otherUser == null) { throw new Exception(_("playerNotFound")); diff --git a/Essentials/src/net/ess3/commands/Commandwhois.java b/Essentials/src/net/ess3/commands/Commandwhois.java index f93a047bd..38ed8fd2e 100644 --- a/Essentials/src/net/ess3/commands/Commandwhois.java +++ b/Essentials/src/net/ess3/commands/Commandwhois.java @@ -43,7 +43,7 @@ public class Commandwhois extends EssentialsCommand { final IUser user = ess.getUserMap().getUser(onlinePlayer); - if (user.isHidden() && !showhidden) + if (sender instanceof IUser && ((IUser)sender).getPlayer().canSee(onlinePlayer) && !showhidden) { continue; } diff --git a/Essentials/src/net/ess3/commands/EssentialsCommand.java b/Essentials/src/net/ess3/commands/EssentialsCommand.java index fb7c407b8..7b9c0c1f9 100644 --- a/Essentials/src/net/ess3/commands/EssentialsCommand.java +++ b/Essentials/src/net/ess3/commands/EssentialsCommand.java @@ -161,4 +161,11 @@ public abstract class EssentialsCommand extends AbstractSuperpermsPermission imp } throw new IllegalArgumentException(); } + + protected Player getPlayerOrNull(CommandSender sender) { + if (sender instanceof IUser) { + return ((IUser)sender).getPlayer(); + } + return null; + } } diff --git a/Essentials/src/net/ess3/ranks/AbstractRanks.java b/Essentials/src/net/ess3/ranks/AbstractRanks.java new file mode 100644 index 000000000..a0ea29c62 --- /dev/null +++ b/Essentials/src/net/ess3/ranks/AbstractRanks.java @@ -0,0 +1,41 @@ +package net.ess3.ranks; + +import java.text.MessageFormat; +import net.ess3.api.IUser; +import net.ess3.utils.FormatUtil; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + + +public abstract class AbstractRanks +{ + protected Player getPlayer(CommandSender sender) + { + if (sender instanceof IUser) + { + return ((IUser)sender).getPlayer(); + } + if (sender instanceof Player) + { + return (Player)sender; + } + throw new IllegalArgumentException(); + } + + //TODO: Reimplement caching + public MessageFormat getChatFormat(final CommandSender player) + { + String format = getRawChatFormat(player); + format = FormatUtil.replaceFormat(format); + format = format.replace("{DISPLAYNAME}", "%1$s"); + format = format.replace("{GROUP}", "{0}"); + format = format.replace("{MESSAGE}", "%2$s"); + format = format.replace("{WORLDNAME}", "{1}"); + format = format.replace("{SHORTWORLDNAME}", "{2}"); + format = format.replaceAll("\\{(\\D*)\\}", "\\[$1\\]"); + MessageFormat mFormat = new MessageFormat(format); + return mFormat; + } + + protected abstract String getRawChatFormat(final CommandSender sender); +} diff --git a/Essentials/src/net/ess3/ranks/GMGroups.java b/Essentials/src/net/ess3/ranks/GMGroups.java index 3e12476f1..4d2a278d9 100644 --- a/Essentials/src/net/ess3/ranks/GMGroups.java +++ b/Essentials/src/net/ess3/ranks/GMGroups.java @@ -1,17 +1,15 @@ package net.ess3.ranks; -import java.text.MessageFormat; import net.ess3.api.IEssentials; import net.ess3.api.IRanks; import net.ess3.api.ISettings; -import net.ess3.api.IUser; -import net.ess3.utils.FormatUtil; import org.anjocaido.groupmanager.GroupManager; import org.anjocaido.groupmanager.permissions.AnjoPermissionsHandler; +import org.bukkit.command.CommandSender; import org.bukkit.plugin.Plugin; -public class GMGroups implements IRanks +public class GMGroups extends AbstractRanks implements IRanks { private final transient IEssentials ess; private final transient GroupManager groupManager; @@ -21,11 +19,11 @@ public class GMGroups implements IRanks this.ess = ess; this.groupManager = (GroupManager)groupManager; } - + @Override - public double getHealCooldown(IUser player) + public double getHealCooldown(CommandSender player) { - AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getPlayer()); + AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(getPlayer(player)); if (handler == null) { return 0; @@ -34,9 +32,9 @@ public class GMGroups implements IRanks } @Override - public double getTeleportCooldown(IUser player) + public double getTeleportCooldown(CommandSender player) { - AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getPlayer()); + AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(getPlayer(player)); if (handler == null) { return 0; @@ -45,9 +43,9 @@ public class GMGroups implements IRanks } @Override - public double getTeleportDelay(IUser player) + public double getTeleportDelay(CommandSender player) { - AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getPlayer()); + AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(getPlayer(player)); if (handler == null) { return 0; @@ -56,9 +54,9 @@ public class GMGroups implements IRanks } @Override - public String getPrefix(IUser player) + public String getPrefix(CommandSender player) { - AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getPlayer()); + AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(getPlayer(player)); if (handler == null) { return null; @@ -67,9 +65,9 @@ public class GMGroups implements IRanks } @Override - public String getSuffix(IUser player) + public String getSuffix(CommandSender player) { - AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getPlayer()); + AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(getPlayer(player)); if (handler == null) { return null; @@ -78,9 +76,9 @@ public class GMGroups implements IRanks } @Override - public int getHomeLimit(IUser player) + public int getHomeLimit(CommandSender player) { - AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getPlayer()); + AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(getPlayer(player)); if (handler == null) { return 0; @@ -89,23 +87,9 @@ public class GMGroups implements IRanks } @Override - public MessageFormat getChatFormat(final IUser player) - { - String format = getRawChatFormat(player); - format = FormatUtil.replaceFormat(format); - format = format.replace("{DISPLAYNAME}", "%1$s"); - format = format.replace("{GROUP}", "{0}"); - format = format.replace("{MESSAGE}", "%2$s"); - format = format.replace("{WORLDNAME}", "{1}"); - format = format.replace("{SHORTWORLDNAME}", "{2}"); - format = format.replaceAll("\\{(\\D*)\\}", "\\[$1\\]"); - MessageFormat mFormat = new MessageFormat(format); - return mFormat; - } - - private String getRawChatFormat(final IUser player) + protected String getRawChatFormat(final CommandSender player) { - AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getPlayer()); + AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(getPlayer(player)); if (handler != null) { String chatformat = handler.getPermissionString(player.getName(), "chatformat"); @@ -120,9 +104,9 @@ public class GMGroups implements IRanks } @Override - public String getMainGroup(IUser player) + public String getMainGroup(CommandSender player) { - final AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getPlayer()); + final AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(getPlayer(player)); if (handler == null) { return null; @@ -131,9 +115,9 @@ public class GMGroups implements IRanks } @Override - public boolean inGroup(IUser player, String groupname) + public boolean inGroup(CommandSender player, String groupname) { - final AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getName()); + final AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(getPlayer(player)); if (handler == null) { return false; diff --git a/Essentials/src/net/ess3/ranks/RanksStorage.java b/Essentials/src/net/ess3/ranks/RanksStorage.java index 325d35b18..d5763687b 100644 --- a/Essentials/src/net/ess3/ranks/RanksStorage.java +++ b/Essentials/src/net/ess3/ranks/RanksStorage.java @@ -10,14 +10,21 @@ import java.util.Map.Entry; import net.ess3.api.IEssentials; import net.ess3.api.IRanks; import net.ess3.api.ISettings; -import net.ess3.api.IUser; import net.ess3.permissions.Permissions; import net.ess3.storage.AsyncStorageObjectHolder; -import net.ess3.utils.FormatUtil; +import org.bukkit.command.CommandSender; public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRanks { + private AbstractRanks abstractRanks = new AbstractRanks() { + @Override + protected String getRawChatFormat(CommandSender sender) + { + return RanksStorage.this.getRawChatFormat(sender); + } + }; + @Override public void finishRead() { @@ -34,7 +41,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa onReload(); } - public Collection<Entry<String, RankOptions>> getGroups(final IUser player) + public Collection<Entry<String, RankOptions>> getGroups(final CommandSender player) { final Map<String, RankOptions> groups = getData().getRanks(); if (groups == null || groups.isEmpty()) @@ -56,7 +63,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa } @Override - public double getHealCooldown(final IUser player) + public double getHealCooldown(final CommandSender player) { for (Entry<String, RankOptions> groupOptions : getGroups(player)) { @@ -69,7 +76,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa } @Override - public double getTeleportCooldown(final IUser player) + public double getTeleportCooldown(final CommandSender player) { for (Entry<String, RankOptions> groupOptions : getGroups(player)) { @@ -82,7 +89,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa } @Override - public double getTeleportDelay(final IUser player) + public double getTeleportDelay(final CommandSender player) { for (Entry<String, RankOptions> groupOptions : getGroups(player)) { @@ -95,7 +102,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa } @Override - public String getPrefix(final IUser player) + public String getPrefix(final CommandSender player) { for (Entry<String, RankOptions> groupOptions : getGroups(player)) { @@ -108,7 +115,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa } @Override - public String getSuffix(final IUser player) + public String getSuffix(final CommandSender player) { for (Entry<String, RankOptions> groupOptions : getGroups(player)) { @@ -121,7 +128,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa } @Override - public int getHomeLimit(final IUser player) + public int getHomeLimit(final CommandSender player) { for (Entry<String, RankOptions> groupOptions : getGroups(player)) { @@ -133,23 +140,13 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa return 0; } - //TODO: Reimplement caching @Override - public MessageFormat getChatFormat(final IUser player) + public MessageFormat getChatFormat(final CommandSender player) { - String format = getRawChatFormat(player); - format = FormatUtil.replaceFormat(format); - format = format.replace("{DISPLAYNAME}", "%1$s"); - format = format.replace("{GROUP}", "{0}"); - format = format.replace("{MESSAGE}", "%2$s"); - format = format.replace("{WORLDNAME}", "{1}"); - format = format.replace("{SHORTWORLDNAME}", "{2}"); - format = format.replaceAll("\\{(\\D*)\\}", "\\[$1\\]"); - MessageFormat mFormat = new MessageFormat(format); - return mFormat; + return abstractRanks.getChatFormat(player); } - private String getRawChatFormat(final IUser player) + private String getRawChatFormat(final CommandSender player) { for (Entry<String, RankOptions> groupOptions : getGroups(player)) { @@ -164,7 +161,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa } @Override - public boolean inGroup(IUser player, String groupname) + public boolean inGroup(CommandSender player, String groupname) { for (Entry<String, RankOptions> groupOptions : getGroups(player)) { @@ -177,7 +174,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa } @Override - public String getMainGroup(IUser player) + public String getMainGroup(CommandSender player) { for (Entry<String, RankOptions> groupOptions : getGroups(player)) { diff --git a/Essentials/src/net/ess3/ranks/VaultGroups.java b/Essentials/src/net/ess3/ranks/VaultGroups.java index 1f5788183..c4dfd062d 100644 --- a/Essentials/src/net/ess3/ranks/VaultGroups.java +++ b/Essentials/src/net/ess3/ranks/VaultGroups.java @@ -1,16 +1,14 @@ package net.ess3.ranks; -import java.text.MessageFormat; import net.ess3.api.IEssentials; import net.ess3.api.IRanks; import net.ess3.api.ISettings; -import net.ess3.api.IUser; -import net.ess3.utils.FormatUtil; import net.milkbowl.vault.chat.Chat; +import org.bukkit.command.CommandSender; import org.bukkit.plugin.RegisteredServiceProvider; -public class VaultGroups implements IRanks +public class VaultGroups extends AbstractRanks implements IRanks { private final IEssentials ess; @@ -25,66 +23,52 @@ public class VaultGroups implements IRanks } @Override - public double getHealCooldown(IUser player) + public double getHealCooldown(CommandSender player) { Chat chat = getServiceProvider(Chat.class); - return chat.getPlayerInfoDouble(player.getPlayer(), "healcooldown", 0); + return chat.getPlayerInfoDouble(getPlayer(player), "healcooldown", 0); } @Override - public double getTeleportCooldown(IUser player) + public double getTeleportCooldown(CommandSender player) { Chat chat = getServiceProvider(Chat.class); - return chat.getPlayerInfoDouble(player.getPlayer(), "teleportcooldown", 0); + return chat.getPlayerInfoDouble(getPlayer(player), "teleportcooldown", 0); } @Override - public double getTeleportDelay(IUser player) + public double getTeleportDelay(CommandSender player) { Chat chat = getServiceProvider(Chat.class); - return chat.getPlayerInfoDouble(player.getPlayer(), "teleportdelay", 0); + return chat.getPlayerInfoDouble(getPlayer(player), "teleportdelay", 0); } @Override - public String getPrefix(IUser player) + public String getPrefix(CommandSender player) { Chat chat = getServiceProvider(Chat.class); - return chat.getPlayerPrefix(player.getPlayer()); + return chat.getPlayerPrefix(getPlayer(player)); } @Override - public String getSuffix(IUser player) + public String getSuffix(CommandSender player) { Chat chat = getServiceProvider(Chat.class); - return chat.getPlayerSuffix(player.getPlayer()); + return chat.getPlayerSuffix(getPlayer(player)); } @Override - public int getHomeLimit(IUser player) + public int getHomeLimit(CommandSender player) { Chat chat = getServiceProvider(Chat.class); - return chat.getPlayerInfoInteger(player.getPlayer(), "homes", 0); + return chat.getPlayerInfoInteger(getPlayer(player), "homes", 0); } @Override - public MessageFormat getChatFormat(final IUser player) - { - String format = getRawChatFormat(player); - format = FormatUtil.replaceFormat(format); - format = format.replace("{DISPLAYNAME}", "%1$s"); - format = format.replace("{GROUP}", "{0}"); - format = format.replace("{MESSAGE}", "%2$s"); - format = format.replace("{WORLDNAME}", "{1}"); - format = format.replace("{SHORTWORLDNAME}", "{2}"); - format = format.replaceAll("\\{(\\D*)\\}", "\\[$1\\]"); - MessageFormat mFormat = new MessageFormat(format); - return mFormat; - } - - private String getRawChatFormat(final IUser player) + protected String getRawChatFormat(final CommandSender player) { Chat chat = getServiceProvider(Chat.class); - String chatformat = chat.getPlayerInfoString(player.getPlayer(), "chatformat", ""); + String chatformat = chat.getPlayerInfoString(getPlayer(player), "chatformat", ""); if (chatformat != null && !chatformat.isEmpty()) { return chatformat; @@ -95,17 +79,17 @@ public class VaultGroups implements IRanks } @Override - public String getMainGroup(IUser player) + public String getMainGroup(CommandSender player) { Chat chat = getServiceProvider(Chat.class); - return chat.getPrimaryGroup(player.getPlayer().getPlayer()); + return chat.getPrimaryGroup(getPlayer(player)); } @Override - public boolean inGroup(IUser player, String groupname) + public boolean inGroup(CommandSender player, String groupname) { Chat chat = getServiceProvider(Chat.class); - for (String group : chat.getPlayerGroups(player.getPlayer())) + for (String group : chat.getPlayerGroups(getPlayer(player))) { if (group.equalsIgnoreCase(groupname)) { diff --git a/Essentials/src/net/ess3/user/User.java b/Essentials/src/net/ess3/user/User.java index 7593b9c6a..8e98bcaa3 100644 --- a/Essentials/src/net/ess3/user/User.java +++ b/Essentials/src/net/ess3/user/User.java @@ -39,9 +39,9 @@ public class User extends UserBase implements IUser @Setter private transient long lastOnlineActivity; private transient long lastActivity = System.currentTimeMillis(); - @Getter + /*@Getter @Setter - private boolean hidden = false; + private boolean hidden = false;*/ @Getter private transient boolean vanished; @Getter @@ -383,7 +383,7 @@ public class User extends UserBase implements IUser { getData().setAfk(false); queueSave(); - if (broadcast && !hidden) + if (broadcast) { ess.broadcastMessage(this, _("userIsNotAway", getPlayer().getDisplayName())); } @@ -397,7 +397,7 @@ public class User extends UserBase implements IUser final ISettings settings = ess.getSettings(); final long autoafkkick = settings.getData().getCommands().getAfk().getAutoAFKKick(); if (autoafkkick > 0 && lastActivity > 0 && (lastActivity + (autoafkkick * 1000)) < System.currentTimeMillis() - && !hidden + //&& !hidden && !Permissions.KICK_EXEMPT.isAuthorized(this) && !Permissions.AFK_KICKEXEMPT.isAuthorized(this)) { @@ -419,10 +419,7 @@ public class User extends UserBase implements IUser if (!getData().isAfk() && autoafk > 0 && lastActivity + autoafk * 1000 < System.currentTimeMillis() && Permissions.AFK.isAuthorized(this)) { setAfk(true); - if (!hidden) - { - ess.broadcastMessage(this, _("userIsAway", getPlayer().getDisplayName())); - } + ess.broadcastMessage(this, _("userIsAway", getPlayer().getDisplayName())); } } @@ -642,7 +639,6 @@ public class User extends UserBase implements IUser p.hidePlayer(getPlayer()); } } - setHidden(true); ess.getVanishedPlayers().add(getName()); } else @@ -651,7 +647,6 @@ public class User extends UserBase implements IUser { p.showPlayer(getPlayer()); } - setHidden(false); ess.getVanishedPlayers().remove(getName()); } } diff --git a/Essentials/src/net/ess3/user/UserMap.java b/Essentials/src/net/ess3/user/UserMap.java index 815fad8f6..57ef75daf 100644 --- a/Essentials/src/net/ess3/user/UserMap.java +++ b/Essentials/src/net/ess3/user/UserMap.java @@ -100,11 +100,22 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap { return getObject(player.getName()); } - + + @Override + public IUser matchUser(final String name, final boolean includeOffline) throws TooManyMatchesException, PlayerNotFoundException + { + return matchUser(name, true, includeOffline, null); + } + @Override - public IUser matchUser(final String name, final boolean includeHidden, final boolean includeOffline) throws TooManyMatchesException, PlayerNotFoundException + public IUser matchUserExcludingHidden(final String name, final Player requester) throws TooManyMatchesException, PlayerNotFoundException + { + return matchUser(name, false, false, requester); + } + + public IUser matchUser(final String name, final boolean includeHidden, final boolean includeOffline, final Player requester) throws TooManyMatchesException, PlayerNotFoundException { - final Set<IUser> users = matchUsers(name, includeHidden, includeOffline); + final Set<IUser> users = matchUsers(name, includeHidden, includeOffline, requester); if (users.isEmpty()) { throw new PlayerNotFoundException(); @@ -121,9 +132,20 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap } } } + + @Override + public Set<IUser> matchUsers(final String name, final boolean includeOffline) + { + return matchUsers(name, true, includeOffline, null); + } @Override - public Set<IUser> matchUsers(final String name, final boolean includeHidden, final boolean includeOffline) + public Set<IUser> matchUsersExcludingHidden(final String name, final Player requester) + { + return matchUsers(name, false, false, requester); + } + + public Set<IUser> matchUsers(final String name, final boolean includeHidden, final boolean includeOffline, final Player requester) { final String colorlessName = FormatUtil.stripColor(name); final String[] search = colorlessName.split(","); @@ -151,7 +173,7 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap for (Player player : ess.getServer().getOnlinePlayers()) { if (player.getName().equalsIgnoreCase(searchString) - && (includeHidden || includeOffline || !getUser(player).isHidden())) + && (includeHidden || includeOffline || requester == null || requester.canSee(player))) { match = player; break; @@ -173,7 +195,7 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap final String nickname = getUser(player).getData().getNickname(); if (nickname != null && !nickname.isEmpty() && nickname.equalsIgnoreCase(searchString) - && (includeHidden || includeOffline || !getUser(player).isHidden())) + && (includeHidden || includeOffline || requester == null || requester.canSee(player))) { if (multimatching || multisearch) { @@ -213,7 +235,7 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap for (Player player : ess.getServer().getOnlinePlayers()) { if (player.getName().toLowerCase(Locale.ENGLISH).startsWith(searchString) - && (includeHidden || includeOffline || !getUser(player).isHidden())) + && (includeHidden || includeOffline || requester == null || requester.canSee(player))) { result.add(getUser(player)); break; @@ -221,7 +243,7 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap final String nickname = getUser(player).getData().getNickname(); if (nickname != null && !nickname.isEmpty() && nickname.toLowerCase(Locale.ENGLISH).startsWith(searchString) - && (includeHidden || includeOffline || !getUser(player).isHidden())) + && (includeHidden || includeOffline || requester == null || requester.canSee(player))) { result.add(getUser(player)); break; diff --git a/Essentials/src/net/ess3/utils/textreader/KeywordReplacer.java b/Essentials/src/net/ess3/utils/textreader/KeywordReplacer.java index 0a9180966..5ef5578bb 100644 --- a/Essentials/src/net/ess3/utils/textreader/KeywordReplacer.java +++ b/Essentials/src/net/ess3/utils/textreader/KeywordReplacer.java @@ -19,7 +19,7 @@ public class KeywordReplacer implements IText private final transient IText input; private final transient List<String> replaced; private final transient IEssentials ess; - + public KeywordReplacer(final IText input, final CommandSender sender, final IEssentials ess) { this.input = input; @@ -27,7 +27,7 @@ public class KeywordReplacer implements IText this.ess = ess; replaceKeywords(sender); } - + private void replaceKeywords(final CommandSender sender) { String displayName, ipAddress, balance, mails, world; @@ -55,11 +55,14 @@ public class KeywordReplacer implements IText } int playerHidden = 0; - for (Player p : ess.getServer().getOnlinePlayers()) + if (sender instanceof Player) { - if (ess.getUserMap().getUser(p).isHidden()) + for (Player p : ess.getServer().getOnlinePlayers()) { - playerHidden++; + if (!p.canSee((Player)sender)) + { + playerHidden++; + } } } online = Integer.toString(ess.getServer().getOnlinePlayers().length - playerHidden); @@ -77,17 +80,20 @@ public class KeywordReplacer implements IText worlds = worldsBuilder.toString(); final StringBuilder playerlistBuilder = new StringBuilder(); - for (Player p : ess.getServer().getOnlinePlayers()) + if (sender instanceof Player) { - if (ess.getUserMap().getUser(p).isHidden()) - { - continue; - } - if (playerlistBuilder.length() > 0) + for (Player p : ess.getServer().getOnlinePlayers()) { - playerlistBuilder.append(", "); + if (!p.canSee((Player)sender)) + { + continue; + } + if (playerlistBuilder.length() > 0) + { + playerlistBuilder.append(", "); + } + playerlistBuilder.append(p.getDisplayName()); } - playerlistBuilder.append(p.getDisplayName()); } playerlist = playerlistBuilder.toString(); diff --git a/EssentialsGeoIP/src/net/ess3/geoip/EssentialsGeoIPPlayerListener.java b/EssentialsGeoIP/src/net/ess3/geoip/EssentialsGeoIPPlayerListener.java index e7b3fe85e..d899ed972 100644 --- a/EssentialsGeoIP/src/net/ess3/geoip/EssentialsGeoIPPlayerListener.java +++ b/EssentialsGeoIP/src/net/ess3/geoip/EssentialsGeoIPPlayerListener.java @@ -45,8 +45,7 @@ public class EssentialsGeoIPPlayerListener implements Listener, IReload @EventHandler(priority = EventPriority.MONITOR) public void onPlayerJoin(final PlayerJoinEvent event) { - final IUser u = ess.getUserMap().getUser(event.getPlayer()); - if (Permissions.GEOIP_HIDE.isAuthorized(u)) + if (Permissions.GEOIP_HIDE.isAuthorized(event.getPlayer())) { return; } @@ -81,17 +80,21 @@ public class EssentialsGeoIPPlayerListener implements Listener, IReload } if (config.getData().isShowOnWhois()) { + final IUser u = ess.getUserMap().getUser(event.getPlayer()); u.getData().setGeolocation(builder.toString()); u.queueSave(); } - if (config.getData().isShowOnLogin() && !u.isHidden()) + if (config.getData().isShowOnLogin()) { for (Player player : event.getPlayer().getServer().getOnlinePlayers()) { - final IUser user = ess.getUserMap().getUser(player); - if (Permissions.GEOIP_SHOW.isAuthorized(user)) + if (!player.canSee(event.getPlayer())) { - user.sendMessage(_("geoipJoinFormat", user.getPlayer().getDisplayName(), builder.toString())); + continue; + } + if (Permissions.GEOIP_SHOW.isAuthorized(player)) + { + player.sendMessage(_("geoipJoinFormat", player.getDisplayName(), builder.toString())); } } } |