1
0
mirror of https://github.com/essentials/Essentials.git synced 2025-08-16 11:37:30 +02:00

replace user.isHidden() with player.canSee()

This commit is contained in:
snowleo
2012-10-14 00:35:24 +02:00
parent eca8b54ef5
commit 9ca4f53c1a
62 changed files with 341 additions and 287 deletions

View File

@@ -242,20 +242,19 @@ public class Essentials implements IEssentials
{ {
return getServer().broadcastMessage(message); return getServer().broadcastMessage(message);
} }
if (sender.isHidden()) Player userPlayer = sender.getPlayer();
{ int delivered = 0;
return 0;
}
for (Player player : getServer().getOnlinePlayers()) for (Player player : getServer().getOnlinePlayers())
{ {
final IUser user = getUserMap().getUser(player); final IUser user = getUserMap().getUser(player);
if (!user.isIgnoringPlayer(sender)) if (!user.isIgnoringPlayer(sender) && player.canSee(userPlayer))
{ {
player.sendMessage(message); player.sendMessage(message);
delivered++;
} }
} }
return getServer().getOnlinePlayers().length; return delivered;
} }
@Override @Override

View File

@@ -1,25 +1,28 @@
package net.ess3.api; package net.ess3.api;
import java.text.MessageFormat; import java.text.MessageFormat;
import org.bukkit.command.CommandSender;
/**
* CommandSender object can be either IUser or Player
*/
public interface IRanks 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);
} }

View File

@@ -38,7 +38,7 @@ public interface IUser extends OfflinePlayer, CommandSender, IStorageObjectHolde
Location getHome(Location loc); Location getHome(Location loc);
boolean isHidden(); //boolean isHidden();
ITeleport getTeleport(); ITeleport getTeleport();

View File

@@ -24,18 +24,30 @@ public interface IUserMap extends IReload
File getUserFile(final String name) throws InvalidNameException; File getUserFile(final String name) throws InvalidNameException;
/** /**
* This method never returns null. * This method never returns null and includes hidden players.
* *
* @param name * @param name
* @param includeHidden
* @param includeOffline * @param includeOffline
* @return * @return
* @throws TooManyMatchesException if more than one player is found matching the name * @throws TooManyMatchesException if more than one player is found matching the name
* @throws PlayerNotFoundException if the player matching the name is not found * @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; IUser matchUser(final String name, final boolean includeOffline) throws TooManyMatchesException, PlayerNotFoundException;
Set<IUser> matchUsers(final String name, final boolean includeHidden, final boolean includeOffline); /**
* 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); public void addPrejoinedPlayer(Player player);

View File

@@ -12,7 +12,7 @@ public class Commandafk extends EssentialsCommand
{ {
if (args.length > 0 && Permissions.AFK_OTHERS.isAuthorized(user)) 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) if (afkUser != null)
{ {
toggleAfk(afkUser); toggleAfk(afkUser);
@@ -30,19 +30,13 @@ public class Commandafk extends EssentialsCommand
if (!user.toggleAfk()) if (!user.toggleAfk())
{ {
//user.sendMessage(_("markedAsNotAway")); //user.sendMessage(_("markedAsNotAway"));
if (!user.isHidden())
{
ess.broadcastMessage(user, _("userIsNotAway", user.getPlayer().getDisplayName())); ess.broadcastMessage(user, _("userIsNotAway", user.getPlayer().getDisplayName()));
}
user.updateActivity(false); user.updateActivity(false);
} }
else else
{ {
//user.sendMessage(_("markedAsAway")); //user.sendMessage(_("markedAsAway"));
if (!user.isHidden())
{
ess.broadcastMessage(user, _("userIsAway", user.getPlayer().getDisplayName())); ess.broadcastMessage(user, _("userIsAway", user.getPlayer().getDisplayName()));
} }
} }
}
} }

View File

@@ -16,7 +16,7 @@ public class Commandbalance extends EssentialsCommand
{ {
throw new NotEnoughArgumentsException(); 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 @Override
@@ -25,7 +25,7 @@ public class Commandbalance extends EssentialsCommand
final double bal = (args.length < 1 final double bal = (args.length < 1
|| !Permissions.BALANCE_OTHERS.isAuthorized(user) || !Permissions.BALANCE_OTHERS.isAuthorized(user)
? user ? user
: ess.getUserMap().matchUser(args[0], true, true)).getMoney(); : ess.getUserMap().matchUser(args[0], true)).getMoney();
user.sendMessage(_("balance", FormatUtil.displayCurrency(bal, ess))); user.sendMessage(_("balance", FormatUtil.displayCurrency(bal, ess)));
} }
} }

View File

@@ -18,7 +18,7 @@ public class Commandban extends EssentialsCommand
{ {
throw new NotEnoughArgumentsException(); 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 (!user.isOnline())
{ {
if (sender instanceof Player && Permissions.BAN_OFFLINE.isAuthorized(user)) if (sender instanceof Player && Permissions.BAN_OFFLINE.isAuthorized(user))

View File

@@ -15,7 +15,7 @@ public class Commandburn extends EssentialsCommand
throw new NotEnoughArgumentsException(); 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); p.getPlayer().setFireTicks(Integer.parseInt(args[1]) * 20);
sender.sendMessage(_("burnMsg", p.getPlayer().getDisplayName(), Integer.parseInt(args[1]))); sender.sendMessage(_("burnMsg", p.getPlayer().getDisplayName(), Integer.parseInt(args[1])));

View File

@@ -15,7 +15,7 @@ public class Commandclearinventory extends EssentialsCommand
{ {
if (args.length > 0 && Permissions.CLEARINVENTORY_OTHERS.isAuthorized(user)) 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) if (p != null)
{ {
p.getPlayer().getInventory().clear(); p.getPlayer().getInventory().clear();

View File

@@ -34,7 +34,7 @@ public class Commanddelhome extends EssentialsCommand
if (expandedArg.length > 1 && (user == null || Permissions.DELHOME_OTHERS.isAuthorized(user))) 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]; name = expandedArg[1];
} }
else if (user == null) else if (user == null)

View File

@@ -82,7 +82,7 @@ public class Commandeco extends EssentialsCommand
} }
else else
{ {
final IUser player = ess.getUserMap().matchUser(args[1], true, true); final IUser player = ess.getUserMap().matchUser(args[1], true);
switch (cmd) switch (cmd)
{ {
case GIVE: case GIVE:

View File

@@ -12,7 +12,7 @@ public class Commandenderchest extends EssentialsCommand
{ {
if (args.length > 0 && Permissions.ENDERCHEST_OTHERS.isAuthorized(user)) 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.getPlayer().openInventory(invUser.getPlayer().getEnderChest());
user.setEnderSee(true); user.setEnderSee(true);
} }

View File

@@ -87,7 +87,7 @@ public class Commandexp extends EssentialsCommand
private void showMatch(final CommandSender sender, final String match) throws NotEnoughArgumentsException private void showMatch(final CommandSender sender, final String match) throws NotEnoughArgumentsException
{ {
boolean foundUser = false; boolean foundUser = false;
for (IUser matchPlayer : ess.getUserMap().matchUsers(match, false, false)) for (IUser matchPlayer : ess.getUserMap().matchUsersExcludingHidden(match, getPlayerOrNull(sender)))
{ {
foundUser = true; foundUser = true;
showExp(sender, matchPlayer); 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 private void expMatch(final CommandSender sender, final String match, final String amount, final boolean toggle) throws NotEnoughArgumentsException
{ {
boolean foundUser = false; 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); setExp(sender, matchPlayer, amount, toggle);
foundUser = true; foundUser = true;

View File

@@ -33,7 +33,7 @@ public class Commandext extends EssentialsCommand
private void extinguishPlayers(final CommandSender sender, final String name) throws Exception 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); matchPlayer.getPlayer().setFireTicks(0);
sender.sendMessage(_("extinguishOthers", matchPlayer.getPlayer().getDisplayName())); sender.sendMessage(_("extinguishOthers", matchPlayer.getPlayer().getDisplayName()));

View File

@@ -26,7 +26,7 @@ public class Commandfeed extends EssentialsCommand
private void feedOtherPlayers(final CommandSender sender, final String name) 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()) if (users.isEmpty())
{ {
sender.sendMessage(_("playerNotFound")); sender.sendMessage(_("playerNotFound"));

View File

@@ -7,8 +7,6 @@ import org.bukkit.Server;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
public class Commandfly extends EssentialsCommand public class Commandfly extends EssentialsCommand
{ {
@Override @Override
@@ -40,7 +38,7 @@ public class Commandfly extends EssentialsCommand
private void flyOtherPlayers(final Server server, final CommandSender sender, final String[] args) 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.length > 1)
{ {

View File

@@ -36,7 +36,7 @@ public class Commandgamemode extends EssentialsCommand
private void gamemodeOtherPlayers(final CommandSender sender, final String args[]) 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) if (args.length > 1)
{ {

View File

@@ -15,8 +15,8 @@ public class Commandgetpos extends EssentialsCommand
if (args.length > 0 && Permissions.GETPOS_OTHERS.isAuthorized(user)) if (args.length > 0 && Permissions.GETPOS_OTHERS.isAuthorized(user))
{ {
//todo permissions //todo permissions
final IUser otherUser = ess.getUserMap().matchUser(args[0], false, false); final IUser otherUser = ess.getUserMap().matchUser(args[0], false);
if (!otherUser.isHidden() || Permissions.LIST_HIDDEN.isAuthorized(user)) if (user.getPlayer().canSee(otherUser.getPlayer()) || Permissions.LIST_HIDDEN.isAuthorized(user))
{ {
outputPosition(user, otherUser.getPlayer().getLocation(), user.getPlayer().getLocation()); outputPosition(user, otherUser.getPlayer().getLocation(), user.getPlayer().getLocation());
return; return;
@@ -33,7 +33,7 @@ public class Commandgetpos extends EssentialsCommand
{ {
throw new NotEnoughArgumentsException(); 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); outputPosition(sender, user.getPlayer().getLocation(), null);
} }

View File

@@ -21,7 +21,7 @@ public class Commandgive extends EssentialsCommand
throw new NotEnoughArgumentsException(); 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); final ItemStack stack = ess.getItemDb().get(args[1], giveTo);

View File

@@ -6,7 +6,6 @@ import net.ess3.permissions.Permissions;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
public class Commandgod extends EssentialsCommand public class Commandgod extends EssentialsCommand
{ {
@Override @Override
@@ -35,13 +34,8 @@ public class Commandgod extends EssentialsCommand
private void godOtherPlayers(final CommandSender sender, final String[] args) 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.length > 1)
{ {
if (args[1].contains("on") || args[1].contains("ena") || args[1].equalsIgnoreCase("1")) if (args[1].contains("on") || args[1].contains("ena") || args[1].equalsIgnoreCase("1"))

View File

@@ -43,7 +43,7 @@ public class Commandheal extends EssentialsCommand
private void healOtherPlayers(final CommandSender sender, final String name) 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()) if (users.isEmpty())
{ {
sender.sendMessage(_("playerNotFound")); sender.sendMessage(_("playerNotFound"));

View File

@@ -31,7 +31,7 @@ public class Commandhome extends EssentialsCommand
} }
else else
{ {
player = ess.getUserMap().matchUser(nameParts[0], false, true); player = ess.getUserMap().matchUser(nameParts[0], true);
if (nameParts.length > 1) if (nameParts.length > 1)
{ {
homeName = nameParts[1]; homeName = nameParts[1];

View File

@@ -13,7 +13,7 @@ public class Commandignore extends EssentialsCommand
{ {
throw new NotEnoughArgumentsException(); 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)) if (user.isIgnoringPlayer(player))
{ {

View File

@@ -21,7 +21,7 @@ public class Commandinvsee extends EssentialsCommand
IUser invUser = user; IUser invUser = user;
if (args.length == 1) 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) if (invUser == user && user.getData().getInventory() != null)
{ {

View File

@@ -18,7 +18,7 @@ public class Commandkick extends EssentialsCommand
throw new NotEnoughArgumentsException(); 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)) if (Permissions.KICK_EXEMPT.isAuthorized(user))
{ {
throw new Exception(_("kickExempt")); throw new Exception(_("kickExempt"));

View File

@@ -16,7 +16,7 @@ public class Commandkill extends EssentialsCommand
throw new NotEnoughArgumentsException(); 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); 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); server.getPluginManager().callEvent(ede);

View File

@@ -25,7 +25,7 @@ public class Commandlightning extends EssentialsCommand
return; return;
} }
if (ess.getUserMap().matchUsers(args[0], false, false).isEmpty()) if (ess.getUserMap().matchUsersExcludingHidden(args[0], getPlayerOrNull(sender)).isEmpty())
{ {
throw new Exception(_("playerNotFound")); 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())); sender.sendMessage(_("lightningUse", matchPlayer.getPlayer().getDisplayName()));
final LightningStrike strike = matchPlayer.getPlayer().getWorld().strikeLightningEffect(matchPlayer.getPlayer().getLocation()); final LightningStrike strike = matchPlayer.getPlayer().getWorld().strikeLightningEffect(matchPlayer.getPlayer().getLocation());

View File

@@ -15,21 +15,24 @@ public class Commandlist extends EssentialsCommand
@Override @Override
protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{ {
String online;
boolean showhidden = false; boolean showhidden = false;
if (Permissions.LIST_HIDDEN.isAuthorized(sender)) if (Permissions.LIST_HIDDEN.isAuthorized(sender))
{ {
showhidden = true; showhidden = true;
} }
Player userPlayer = getPlayerOrNull(sender);
if (userPlayer != null)
{
int playerHidden = 0; int playerHidden = 0;
for (Player onlinePlayer : server.getOnlinePlayers()) for (Player onlinePlayer : server.getOnlinePlayers())
{ {
if (ess.getUserMap().getUser(onlinePlayer).isHidden()) if (!userPlayer.canSee(onlinePlayer))
{ {
playerHidden++; playerHidden++;
} }
} }
String online;
if (showhidden && playerHidden > 0) if (showhidden && playerHidden > 0)
{ {
online = _("listAmountHidden", server.getOnlinePlayers().length - playerHidden, playerHidden, server.getMaxPlayers()); online = _("listAmountHidden", server.getOnlinePlayers().length - playerHidden, playerHidden, server.getMaxPlayers());
@@ -38,6 +41,12 @@ public class Commandlist extends EssentialsCommand
{ {
online = _("listAmount", server.getOnlinePlayers().length - playerHidden, server.getMaxPlayers()); online = _("listAmount", server.getOnlinePlayers().length - playerHidden, server.getMaxPlayers());
} }
}
else
{
online = _("listAmount", server.getOnlinePlayers().length, server.getMaxPlayers());
}
sender.sendMessage(online); sender.sendMessage(online);
ISettings settings = ess.getSettings(); ISettings settings = ess.getSettings();
@@ -47,21 +56,26 @@ public class Commandlist extends EssentialsCommand
if (sortListByGroups) if (sortListByGroups)
{ {
Map<String, List<IUser>> sort = new HashMap<String, List<IUser>>(); Map<String, List<IUser>> sort = new HashMap<String, List<IUser>>();
Set<String> hiddenPlayers = new HashSet<String>();
for (Player onlinePlayer : server.getOnlinePlayers()) for (Player onlinePlayer : server.getOnlinePlayers())
{ {
final IUser player = getUser(onlinePlayer); if (userPlayer != null
if (player.isHidden() && !showhidden) && !userPlayer.canSee(onlinePlayer))
{
hiddenPlayers.add(onlinePlayer.getName());
if (!showhidden)
{ {
continue; continue;
} }
final String group = ess.getRanks().getMainGroup(player); }
final String group = ess.getRanks().getMainGroup(onlinePlayer);
List<IUser> list = sort.get(group); List<IUser> list = sort.get(group);
if (list == null) if (list == null)
{ {
list = new ArrayList<IUser>(); list = new ArrayList<IUser>();
sort.put(group, list); sort.put(group, list);
} }
list.add(player); list.add(getUser(onlinePlayer));
} }
final String[] groups = sort.keySet().toArray(new String[0]); final String[] groups = sort.keySet().toArray(new String[0]);
Arrays.sort(groups, String.CASE_INSENSITIVE_ORDER); Arrays.sort(groups, String.CASE_INSENSITIVE_ORDER);
@@ -88,7 +102,7 @@ public class Commandlist extends EssentialsCommand
groupString.append(_("listAfkTag")); groupString.append(_("listAfkTag"));
} }
if (user.isHidden()) if (hiddenPlayers.contains(user.getName()))
{ {
groupString.append(_("listHiddenTag")); groupString.append(_("listHiddenTag"));
} }
@@ -102,14 +116,19 @@ public class Commandlist extends EssentialsCommand
else else
{ {
final List<IUser> users = new ArrayList<IUser>(); final List<IUser> users = new ArrayList<IUser>();
Set<String> hiddenPlayers = new HashSet<String>();
for (Player onlinePlayer : server.getOnlinePlayers()) for (Player onlinePlayer : server.getOnlinePlayers())
{ {
final IUser player = getUser(onlinePlayer); if (userPlayer != null
if (player.isHidden() && !showhidden) && !userPlayer.canSee(onlinePlayer))
{
hiddenPlayers.add(onlinePlayer.getName());
if (!showhidden)
{ {
continue; continue;
} }
users.add(player); }
users.add(getUser(onlinePlayer));
} }
Collections.sort(users); Collections.sort(users);
@@ -132,7 +151,7 @@ public class Commandlist extends EssentialsCommand
onlineUsers.append(_("listAfkTag")); onlineUsers.append(_("listAfkTag"));
} }
if (user.isHidden()) if (hiddenPlayers.contains(user.getName()))
{ {
onlineUsers.append(_("listHiddenTag")); onlineUsers.append(_("listHiddenTag"));
} }

View File

@@ -37,7 +37,7 @@ public class Commandmail extends EssentialsCommand
throw new Exception(_("noPerm", "essentials.mail.send")); 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) if (u == null)
{ {
throw new Exception(_("playerNeverOnServer", args[1])); throw new Exception(_("playerNeverOnServer", args[1]));
@@ -83,7 +83,7 @@ public class Commandmail extends EssentialsCommand
} }
else if (args.length >= 3 && "send".equalsIgnoreCase(args[0])) 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)); u.addMail("Server: " + getFinalArg(args, 2));
sender.sendMessage(_("mailSent")); sender.sendMessage(_("mailSent"));
return; return;
@@ -95,7 +95,7 @@ public class Commandmail extends EssentialsCommand
else if (args.length >= 2) else if (args.length >= 2)
{ {
//allow sending from console without "send" argument, since it's the only thing the console can do //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)); u.addMail("Server: " + getFinalArg(args, 1));
sender.sendMessage(_("mailSent")); sender.sendMessage(_("mailSent"));
return; return;

View File

@@ -8,7 +8,7 @@ import net.ess3.api.IUser;
import net.ess3.permissions.Permissions; import net.ess3.permissions.Permissions;
import net.ess3.utils.FormatUtil; import net.ess3.utils.FormatUtil;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class Commandmsg extends EssentialsCommand public class Commandmsg extends EssentialsCommand
@@ -58,17 +58,22 @@ public class Commandmsg extends EssentialsCommand
return; 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()) if (matchedPlayers.isEmpty())
{ {
throw new Exception(_("playerNotFound")); throw new Exception(_("playerNotFound"));
} }
final Player player = getPlayerOrNull(sender);
if (isUser(sender))
{
int i = 0; int i = 0;
for (IUser u : matchedPlayers) for (IUser u : matchedPlayers)
{ {
if (u.isHidden()) if (!player.canSee(u.getPlayer()))
{ {
i++; i++;
} }
@@ -77,11 +82,12 @@ public class Commandmsg extends EssentialsCommand
{ {
throw new Exception(_("playerNotFound")); throw new Exception(_("playerNotFound"));
} }
}
for (IUser matchedPlayer : matchedPlayers) for (IUser matchedPlayer : matchedPlayers)
{ {
sender.sendMessage(_("msgFormat", translatedMe, matchedPlayer.getPlayer().getDisplayName(), message)); 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; continue;
} }

View File

@@ -18,7 +18,7 @@ public class Commandmute extends EssentialsCommand
throw new NotEnoughArgumentsException(); 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)) if (!player.getData().isMuted() && Permissions.MUTE_EXEMPT.isAuthorized(player))
{ {
throw new Exception(_("muteExempt")); throw new Exception(_("muteExempt"));

View File

@@ -22,7 +22,7 @@ public class Commandnear extends EssentialsCommand
{ {
try try
{ {
otherUser = ess.getUserMap().matchUser(args[0], false, false); otherUser = ess.getUserMap().matchUserExcludingHidden(args[0], user.getPlayer());
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -62,7 +62,7 @@ public class Commandnear extends EssentialsCommand
{ {
throw new NotEnoughArgumentsException(); 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; long radius = 200;
if (args.length > 1) if (args.length > 1)
{ {
@@ -83,11 +83,11 @@ 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;
Player userPlayer = user.getPlayer();
for (Player onlinePlayer : server.getOnlinePlayers()) for (Player onlinePlayer : server.getOnlinePlayers())
{ {
final IUser player = getUser(onlinePlayer); if (!onlinePlayer.getName().equals(user.getName()) && userPlayer.canSee(onlinePlayer))
if (!player.equals(user) && !player.isHidden())
{ {
final Location playerLoc = onlinePlayer.getLocation(); final Location playerLoc = onlinePlayer.getLocation();
if (playerLoc.getWorld() != world) if (playerLoc.getWorld() != world)

View File

@@ -31,7 +31,7 @@ public class Commandnick extends EssentialsCommand
{ {
throw new Exception(_("nickOthersPermission")); 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")); user.sendMessage(_("nickChanged"));
return; return;
} }
@@ -56,7 +56,7 @@ public class Commandnick extends EssentialsCommand
} }
else 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")); sender.sendMessage(_("nickChanged"));
} }

View File

@@ -23,7 +23,7 @@ public class Commandpay extends EssentialsCommand
} }
boolean foundUser = false; 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); 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); Trade.log("Command", "Pay", "Player", user.getName(), new Trade(amount, ess), u.getName(), new Trade(amount, ess), user.getPlayer().getLocation(), ess);

View File

@@ -20,10 +20,11 @@ public class Commandrealname extends EssentialsCommand
} }
final ISettings settings = ess.getSettings(); final ISettings settings = ess.getSettings();
final String whois = args[0].toLowerCase(Locale.ENGLISH); final String whois = args[0].toLowerCase(Locale.ENGLISH);
Player player = sender instanceof IUser ? ((IUser)sender).getPlayer() : null;
for (Player onlinePlayer : server.getOnlinePlayers()) for (Player onlinePlayer : server.getOnlinePlayers())
{ {
final IUser u = ess.getUserMap().getUser(onlinePlayer); final IUser u = ess.getUserMap().getUser(onlinePlayer);
if (u.isHidden()) if (player != null && !player.canSee(onlinePlayer))
{ {
continue; continue;
} }

View File

@@ -30,7 +30,7 @@ public class Commandseen extends EssentialsCommand
} }
try 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)))); sender.sendMessage(_("seenOnline", u.getPlayer().getDisplayName(), DateUtil.formatDateDiff(u.getTimestamp(TimestampType.LOGIN))));
} }
catch (PlayerNotFoundException e) catch (PlayerNotFoundException e)

View File

@@ -18,7 +18,7 @@ public class Commandspawn extends EssentialsCommand
charge.isAffordableFor(user); charge.isAffordableFor(user);
if (args.length > 0 && Permissions.SPAWN_OTHERS.isAuthorized(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); respawn(otherUser, null);
if (!otherUser.equals(user)) if (!otherUser.equals(user))
{ {
@@ -39,7 +39,7 @@ public class Commandspawn extends EssentialsCommand
{ {
throw new NotEnoughArgumentsException(); 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); respawn(user, null);
user.sendMessage(_("teleportAtoB", user.getPlayer().getDisplayName(), "spawn")); user.sendMessage(_("teleportAtoB", user.getPlayer().getDisplayName(), "spawn"));
sender.sendMessage(_("teleporting")); sender.sendMessage(_("teleporting"));

View File

@@ -17,7 +17,7 @@ public class Commandsudo extends EssentialsCommand
throw new NotEnoughArgumentsException(); 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 command = args[1];
final String[] arguments = new String[args.length - 2]; final String[] arguments = new String[args.length - 2];
if (arguments.length > 0) if (arguments.length > 0)

View File

@@ -19,7 +19,7 @@ public class Commandtempban extends EssentialsCommand
{ {
throw new NotEnoughArgumentsException(); 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 (!user.isOnline())
{ {
if (Permissions.TEMPBAN_OFFLINE.isAuthorized(sender)) if (Permissions.TEMPBAN_OFFLINE.isAuthorized(sender))

View File

@@ -18,7 +18,7 @@ public class Commandtogglejail extends EssentialsCommand
throw new NotEnoughArgumentsException(); 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()) if (args.length >= 2 && !player.getData().isJailed())
{ {

View File

@@ -22,7 +22,7 @@ public class Commandtp extends EssentialsCommand
throw new NotEnoughArgumentsException(); throw new NotEnoughArgumentsException();
case 1: 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()) if (!player.getData().isTeleportEnabled())
{ {
throw new Exception(_("teleportDisabled", player.getPlayer().getDisplayName())); throw new Exception(_("teleportDisabled", player.getPlayer().getDisplayName()));
@@ -45,9 +45,9 @@ public class Commandtp extends EssentialsCommand
} }
user.sendMessage(_("teleporting")); 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()) if (!target.getData().isTeleportEnabled())
{ {

View File

@@ -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()) if (!player.getData().isTeleportEnabled())
{ {
throw new Exception(_("teleportDisabled", player.getPlayer().getDisplayName())); throw new Exception(_("teleportDisabled", player.getPlayer().getDisplayName()));

View File

@@ -23,7 +23,7 @@ public class Commandtpaall extends EssentialsCommand
throw new NotEnoughArgumentsException(); 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); teleportAAllPlayers(sender, player);
} }

View File

@@ -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()) if (!player.getData().isTeleportEnabled())
{ {
throw new Exception(_("teleportDisabled", player.getPlayer().getDisplayName())); throw new Exception(_("teleportDisabled", player.getPlayer().getDisplayName()));

View File

@@ -24,7 +24,7 @@ public class Commandtpall extends EssentialsCommand
throw new NotEnoughArgumentsException(); 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); teleportAllPlayers(sender, player);
} }

View File

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

View File

@@ -17,15 +17,10 @@ public class Commandtpo extends EssentialsCommand
} }
//Just basically the old tp command //Just basically the old tp command
final IUser player = ess.getUserMap().matchUser(args[0], false, true); final IUser player = ess.getUserMap().matchUser(args[0], false);
// Check if user is offline
if (!player.isOnline())
{
throw new NoSuchFieldException(_("playerNotFound"));
}
// Verify permission // 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.getTeleport().now(player.getPlayer(), false, TeleportCause.COMMAND);
user.sendMessage(_("teleporting")); user.sendMessage(_("teleporting"));

View File

@@ -18,13 +18,7 @@ public class Commandtpohere extends EssentialsCommand
} }
//Just basically the old tphere command //Just basically the old tphere command
final IUser player = ess.getUserMap().matchUser(args[0], false, true); final IUser player = ess.getUserMap().matchUser(args[0], false);
// Check if user is offline
if (!player.isOnline())
{
throw new NoSuchFieldException(_("playerNotFound"));
}
ISettings settings = ess.getSettings(); ISettings settings = ess.getSettings();
//todo - common method //todo - common method
@@ -36,7 +30,7 @@ public class Commandtpohere extends EssentialsCommand
// Verify permission // 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); player.getTeleport().now(user.getPlayer(), false, TeleportCause.COMMAND);
user.sendMessage(_("teleporting")); user.sendMessage(_("teleporting"));

View File

@@ -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.getData().setBan(null);
player.setBanned(false); player.setBanned(false);
player.queueSave(); player.queueSave();

View File

@@ -16,7 +16,7 @@ public class Commandunbanip extends EssentialsCommand
} }
try 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()); ess.getServer().unbanIP(user.getData().getIpAddress());
} }
catch (Exception ex) catch (Exception ex)

View File

@@ -25,7 +25,7 @@ public class Commandunlimited extends EssentialsCommand
if (args.length > 1 && Permissions.UNLIMITED_OTHERS.isAuthorized(user)) 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")) if (args[0].equalsIgnoreCase("list"))

View File

@@ -35,10 +35,10 @@ public class Commandwarp extends EssentialsCommand
IUser otherUser = null; IUser otherUser = null;
if (args.length == 2 && Permissions.WARP_OTHERS.isAuthorized(user)) if (args.length == 2 && Permissions.WARP_OTHERS.isAuthorized(user))
{ {
otherUser = ess.getUserMap().matchUser(args[1],Permissions.WARP_HIDDEN.isAuthorized(user), false); if (Permissions.WARP_HIDDEN.isAuthorized(user)) {
if (otherUser == null) otherUser = ess.getUserMap().matchUser(args[1], false);
{ } else {
throw new Exception(_("playerNotFound")); otherUser = ess.getUserMap().matchUserExcludingHidden(args[1], user.getPlayer());
} }
warpUser(otherUser, args[0]); warpUser(otherUser, args[0]);
throw new NoChargeException(); throw new NoChargeException();
@@ -56,7 +56,7 @@ public class Commandwarp extends EssentialsCommand
warpList(sender, args); warpList(sender, args);
throw new NoChargeException(); 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) if (otherUser == null)
{ {
throw new Exception(_("playerNotFound")); throw new Exception(_("playerNotFound"));

View File

@@ -43,7 +43,7 @@ public class Commandwhois extends EssentialsCommand
{ {
final IUser user = ess.getUserMap().getUser(onlinePlayer); final IUser user = ess.getUserMap().getUser(onlinePlayer);
if (user.isHidden() && !showhidden) if (sender instanceof IUser && ((IUser)sender).getPlayer().canSee(onlinePlayer) && !showhidden)
{ {
continue; continue;
} }

View File

@@ -161,4 +161,11 @@ public abstract class EssentialsCommand extends AbstractSuperpermsPermission imp
} }
throw new IllegalArgumentException(); throw new IllegalArgumentException();
} }
protected Player getPlayerOrNull(CommandSender sender) {
if (sender instanceof IUser) {
return ((IUser)sender).getPlayer();
}
return null;
}
} }

View File

@@ -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);
}

View File

@@ -1,17 +1,15 @@
package net.ess3.ranks; package net.ess3.ranks;
import java.text.MessageFormat;
import net.ess3.api.IEssentials; import net.ess3.api.IEssentials;
import net.ess3.api.IRanks; import net.ess3.api.IRanks;
import net.ess3.api.ISettings; import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.utils.FormatUtil;
import org.anjocaido.groupmanager.GroupManager; import org.anjocaido.groupmanager.GroupManager;
import org.anjocaido.groupmanager.permissions.AnjoPermissionsHandler; import org.anjocaido.groupmanager.permissions.AnjoPermissionsHandler;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.Plugin; 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 IEssentials ess;
private final transient GroupManager groupManager; private final transient GroupManager groupManager;
@@ -23,9 +21,9 @@ public class GMGroups implements IRanks
} }
@Override @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) if (handler == null)
{ {
return 0; return 0;
@@ -34,9 +32,9 @@ public class GMGroups implements IRanks
} }
@Override @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) if (handler == null)
{ {
return 0; return 0;
@@ -45,9 +43,9 @@ public class GMGroups implements IRanks
} }
@Override @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) if (handler == null)
{ {
return 0; return 0;
@@ -56,9 +54,9 @@ public class GMGroups implements IRanks
} }
@Override @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) if (handler == null)
{ {
return null; return null;
@@ -67,9 +65,9 @@ public class GMGroups implements IRanks
} }
@Override @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) if (handler == null)
{ {
return null; return null;
@@ -78,9 +76,9 @@ public class GMGroups implements IRanks
} }
@Override @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) if (handler == null)
{ {
return 0; return 0;
@@ -89,23 +87,9 @@ public class GMGroups implements IRanks
} }
@Override @Override
public MessageFormat getChatFormat(final IUser player) protected String getRawChatFormat(final CommandSender player)
{ {
String format = getRawChatFormat(player); AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(getPlayer(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)
{
AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player.getPlayer());
if (handler != null) if (handler != null)
{ {
String chatformat = handler.getPermissionString(player.getName(), "chatformat"); String chatformat = handler.getPermissionString(player.getName(), "chatformat");
@@ -120,9 +104,9 @@ public class GMGroups implements IRanks
} }
@Override @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) if (handler == null)
{ {
return null; return null;
@@ -131,9 +115,9 @@ public class GMGroups implements IRanks
} }
@Override @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) if (handler == null)
{ {
return false; return false;

View File

@@ -10,14 +10,21 @@ import java.util.Map.Entry;
import net.ess3.api.IEssentials; import net.ess3.api.IEssentials;
import net.ess3.api.IRanks; import net.ess3.api.IRanks;
import net.ess3.api.ISettings; import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.permissions.Permissions; import net.ess3.permissions.Permissions;
import net.ess3.storage.AsyncStorageObjectHolder; import net.ess3.storage.AsyncStorageObjectHolder;
import net.ess3.utils.FormatUtil; import org.bukkit.command.CommandSender;
public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRanks 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 @Override
public void finishRead() public void finishRead()
{ {
@@ -34,7 +41,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa
onReload(); 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(); final Map<String, RankOptions> groups = getData().getRanks();
if (groups == null || groups.isEmpty()) if (groups == null || groups.isEmpty())
@@ -56,7 +63,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa
} }
@Override @Override
public double getHealCooldown(final IUser player) public double getHealCooldown(final CommandSender player)
{ {
for (Entry<String, RankOptions> groupOptions : getGroups(player)) for (Entry<String, RankOptions> groupOptions : getGroups(player))
{ {
@@ -69,7 +76,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa
} }
@Override @Override
public double getTeleportCooldown(final IUser player) public double getTeleportCooldown(final CommandSender player)
{ {
for (Entry<String, RankOptions> groupOptions : getGroups(player)) for (Entry<String, RankOptions> groupOptions : getGroups(player))
{ {
@@ -82,7 +89,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa
} }
@Override @Override
public double getTeleportDelay(final IUser player) public double getTeleportDelay(final CommandSender player)
{ {
for (Entry<String, RankOptions> groupOptions : getGroups(player)) for (Entry<String, RankOptions> groupOptions : getGroups(player))
{ {
@@ -95,7 +102,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa
} }
@Override @Override
public String getPrefix(final IUser player) public String getPrefix(final CommandSender player)
{ {
for (Entry<String, RankOptions> groupOptions : getGroups(player)) for (Entry<String, RankOptions> groupOptions : getGroups(player))
{ {
@@ -108,7 +115,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa
} }
@Override @Override
public String getSuffix(final IUser player) public String getSuffix(final CommandSender player)
{ {
for (Entry<String, RankOptions> groupOptions : getGroups(player)) for (Entry<String, RankOptions> groupOptions : getGroups(player))
{ {
@@ -121,7 +128,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa
} }
@Override @Override
public int getHomeLimit(final IUser player) public int getHomeLimit(final CommandSender player)
{ {
for (Entry<String, RankOptions> groupOptions : getGroups(player)) for (Entry<String, RankOptions> groupOptions : getGroups(player))
{ {
@@ -133,23 +140,13 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa
return 0; return 0;
} }
//TODO: Reimplement caching
@Override @Override
public MessageFormat getChatFormat(final IUser player) public MessageFormat getChatFormat(final CommandSender player)
{ {
String format = getRawChatFormat(player); return abstractRanks.getChatFormat(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) private String getRawChatFormat(final CommandSender player)
{ {
for (Entry<String, RankOptions> groupOptions : getGroups(player)) for (Entry<String, RankOptions> groupOptions : getGroups(player))
{ {
@@ -164,7 +161,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa
} }
@Override @Override
public boolean inGroup(IUser player, String groupname) public boolean inGroup(CommandSender player, String groupname)
{ {
for (Entry<String, RankOptions> groupOptions : getGroups(player)) for (Entry<String, RankOptions> groupOptions : getGroups(player))
{ {
@@ -177,7 +174,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa
} }
@Override @Override
public String getMainGroup(IUser player) public String getMainGroup(CommandSender player)
{ {
for (Entry<String, RankOptions> groupOptions : getGroups(player)) for (Entry<String, RankOptions> groupOptions : getGroups(player))
{ {

View File

@@ -1,16 +1,14 @@
package net.ess3.ranks; package net.ess3.ranks;
import java.text.MessageFormat;
import net.ess3.api.IEssentials; import net.ess3.api.IEssentials;
import net.ess3.api.IRanks; import net.ess3.api.IRanks;
import net.ess3.api.ISettings; import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.utils.FormatUtil;
import net.milkbowl.vault.chat.Chat; import net.milkbowl.vault.chat.Chat;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.RegisteredServiceProvider;
public class VaultGroups implements IRanks public class VaultGroups extends AbstractRanks implements IRanks
{ {
private final IEssentials ess; private final IEssentials ess;
@@ -25,66 +23,52 @@ public class VaultGroups implements IRanks
} }
@Override @Override
public double getHealCooldown(IUser player) public double getHealCooldown(CommandSender player)
{ {
Chat chat = getServiceProvider(Chat.class); Chat chat = getServiceProvider(Chat.class);
return chat.getPlayerInfoDouble(player.getPlayer(), "healcooldown", 0); return chat.getPlayerInfoDouble(getPlayer(player), "healcooldown", 0);
} }
@Override @Override
public double getTeleportCooldown(IUser player) public double getTeleportCooldown(CommandSender player)
{ {
Chat chat = getServiceProvider(Chat.class); Chat chat = getServiceProvider(Chat.class);
return chat.getPlayerInfoDouble(player.getPlayer(), "teleportcooldown", 0); return chat.getPlayerInfoDouble(getPlayer(player), "teleportcooldown", 0);
} }
@Override @Override
public double getTeleportDelay(IUser player) public double getTeleportDelay(CommandSender player)
{ {
Chat chat = getServiceProvider(Chat.class); Chat chat = getServiceProvider(Chat.class);
return chat.getPlayerInfoDouble(player.getPlayer(), "teleportdelay", 0); return chat.getPlayerInfoDouble(getPlayer(player), "teleportdelay", 0);
} }
@Override @Override
public String getPrefix(IUser player) public String getPrefix(CommandSender player)
{ {
Chat chat = getServiceProvider(Chat.class); Chat chat = getServiceProvider(Chat.class);
return chat.getPlayerPrefix(player.getPlayer()); return chat.getPlayerPrefix(getPlayer(player));
} }
@Override @Override
public String getSuffix(IUser player) public String getSuffix(CommandSender player)
{ {
Chat chat = getServiceProvider(Chat.class); Chat chat = getServiceProvider(Chat.class);
return chat.getPlayerSuffix(player.getPlayer()); return chat.getPlayerSuffix(getPlayer(player));
} }
@Override @Override
public int getHomeLimit(IUser player) public int getHomeLimit(CommandSender player)
{ {
Chat chat = getServiceProvider(Chat.class); Chat chat = getServiceProvider(Chat.class);
return chat.getPlayerInfoInteger(player.getPlayer(), "homes", 0); return chat.getPlayerInfoInteger(getPlayer(player), "homes", 0);
} }
@Override @Override
public MessageFormat getChatFormat(final IUser player) protected String getRawChatFormat(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;
}
private String getRawChatFormat(final IUser player)
{ {
Chat chat = getServiceProvider(Chat.class); Chat chat = getServiceProvider(Chat.class);
String chatformat = chat.getPlayerInfoString(player.getPlayer(), "chatformat", ""); String chatformat = chat.getPlayerInfoString(getPlayer(player), "chatformat", "");
if (chatformat != null && !chatformat.isEmpty()) if (chatformat != null && !chatformat.isEmpty())
{ {
return chatformat; return chatformat;
@@ -95,17 +79,17 @@ public class VaultGroups implements IRanks
} }
@Override @Override
public String getMainGroup(IUser player) public String getMainGroup(CommandSender player)
{ {
Chat chat = getServiceProvider(Chat.class); Chat chat = getServiceProvider(Chat.class);
return chat.getPrimaryGroup(player.getPlayer().getPlayer()); return chat.getPrimaryGroup(getPlayer(player));
} }
@Override @Override
public boolean inGroup(IUser player, String groupname) public boolean inGroup(CommandSender player, String groupname)
{ {
Chat chat = getServiceProvider(Chat.class); Chat chat = getServiceProvider(Chat.class);
for (String group : chat.getPlayerGroups(player.getPlayer())) for (String group : chat.getPlayerGroups(getPlayer(player)))
{ {
if (group.equalsIgnoreCase(groupname)) if (group.equalsIgnoreCase(groupname))
{ {

View File

@@ -39,9 +39,9 @@ public class User extends UserBase implements IUser
@Setter @Setter
private transient long lastOnlineActivity; private transient long lastOnlineActivity;
private transient long lastActivity = System.currentTimeMillis(); private transient long lastActivity = System.currentTimeMillis();
@Getter /*@Getter
@Setter @Setter
private boolean hidden = false; private boolean hidden = false;*/
@Getter @Getter
private transient boolean vanished; private transient boolean vanished;
@Getter @Getter
@@ -383,7 +383,7 @@ public class User extends UserBase implements IUser
{ {
getData().setAfk(false); getData().setAfk(false);
queueSave(); queueSave();
if (broadcast && !hidden) if (broadcast)
{ {
ess.broadcastMessage(this, _("userIsNotAway", getPlayer().getDisplayName())); ess.broadcastMessage(this, _("userIsNotAway", getPlayer().getDisplayName()));
} }
@@ -397,7 +397,7 @@ public class User extends UserBase implements IUser
final ISettings settings = ess.getSettings(); final ISettings settings = ess.getSettings();
final long autoafkkick = settings.getData().getCommands().getAfk().getAutoAFKKick(); final long autoafkkick = settings.getData().getCommands().getAfk().getAutoAFKKick();
if (autoafkkick > 0 && lastActivity > 0 && (lastActivity + (autoafkkick * 1000)) < System.currentTimeMillis() if (autoafkkick > 0 && lastActivity > 0 && (lastActivity + (autoafkkick * 1000)) < System.currentTimeMillis()
&& !hidden //&& !hidden
&& !Permissions.KICK_EXEMPT.isAuthorized(this) && !Permissions.KICK_EXEMPT.isAuthorized(this)
&& !Permissions.AFK_KICKEXEMPT.isAuthorized(this)) && !Permissions.AFK_KICKEXEMPT.isAuthorized(this))
{ {
@@ -419,12 +419,9 @@ public class User extends UserBase implements IUser
if (!getData().isAfk() && autoafk > 0 && lastActivity + autoafk * 1000 < System.currentTimeMillis() && Permissions.AFK.isAuthorized(this)) if (!getData().isAfk() && autoafk > 0 && lastActivity + autoafk * 1000 < System.currentTimeMillis() && Permissions.AFK.isAuthorized(this))
{ {
setAfk(true); setAfk(true);
if (!hidden)
{
ess.broadcastMessage(this, _("userIsAway", getPlayer().getDisplayName())); ess.broadcastMessage(this, _("userIsAway", getPlayer().getDisplayName()));
} }
} }
}
@Override @Override
public Location getAfkPosition() public Location getAfkPosition()
@@ -642,7 +639,6 @@ public class User extends UserBase implements IUser
p.hidePlayer(getPlayer()); p.hidePlayer(getPlayer());
} }
} }
setHidden(true);
ess.getVanishedPlayers().add(getName()); ess.getVanishedPlayers().add(getName());
} }
else else
@@ -651,7 +647,6 @@ public class User extends UserBase implements IUser
{ {
p.showPlayer(getPlayer()); p.showPlayer(getPlayer());
} }
setHidden(false);
ess.getVanishedPlayers().remove(getName()); ess.getVanishedPlayers().remove(getName());
} }
} }

View File

@@ -102,9 +102,20 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap
} }
@Override @Override
public IUser matchUser(final String name, final boolean includeHidden, final boolean includeOffline) throws TooManyMatchesException, PlayerNotFoundException public IUser matchUser(final String name, final boolean includeOffline) throws TooManyMatchesException, PlayerNotFoundException
{ {
final Set<IUser> users = matchUsers(name, includeHidden, includeOffline); return matchUser(name, true, includeOffline, null);
}
@Override
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, requester);
if (users.isEmpty()) if (users.isEmpty())
{ {
throw new PlayerNotFoundException(); throw new PlayerNotFoundException();
@@ -123,7 +134,18 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap
} }
@Override @Override
public Set<IUser> matchUsers(final String name, final boolean includeHidden, final boolean includeOffline) public Set<IUser> matchUsers(final String name, final boolean includeOffline)
{
return matchUsers(name, true, includeOffline, null);
}
@Override
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 colorlessName = FormatUtil.stripColor(name);
final String[] search = colorlessName.split(","); final String[] search = colorlessName.split(",");
@@ -151,7 +173,7 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap
for (Player player : ess.getServer().getOnlinePlayers()) for (Player player : ess.getServer().getOnlinePlayers())
{ {
if (player.getName().equalsIgnoreCase(searchString) if (player.getName().equalsIgnoreCase(searchString)
&& (includeHidden || includeOffline || !getUser(player).isHidden())) && (includeHidden || includeOffline || requester == null || requester.canSee(player)))
{ {
match = player; match = player;
break; break;
@@ -173,7 +195,7 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap
final String nickname = getUser(player).getData().getNickname(); final String nickname = getUser(player).getData().getNickname();
if (nickname != null && !nickname.isEmpty() if (nickname != null && !nickname.isEmpty()
&& nickname.equalsIgnoreCase(searchString) && nickname.equalsIgnoreCase(searchString)
&& (includeHidden || includeOffline || !getUser(player).isHidden())) && (includeHidden || includeOffline || requester == null || requester.canSee(player)))
{ {
if (multimatching || multisearch) if (multimatching || multisearch)
{ {
@@ -213,7 +235,7 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap
for (Player player : ess.getServer().getOnlinePlayers()) for (Player player : ess.getServer().getOnlinePlayers())
{ {
if (player.getName().toLowerCase(Locale.ENGLISH).startsWith(searchString) if (player.getName().toLowerCase(Locale.ENGLISH).startsWith(searchString)
&& (includeHidden || includeOffline || !getUser(player).isHidden())) && (includeHidden || includeOffline || requester == null || requester.canSee(player)))
{ {
result.add(getUser(player)); result.add(getUser(player));
break; break;
@@ -221,7 +243,7 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap
final String nickname = getUser(player).getData().getNickname(); final String nickname = getUser(player).getData().getNickname();
if (nickname != null && !nickname.isEmpty() if (nickname != null && !nickname.isEmpty()
&& nickname.toLowerCase(Locale.ENGLISH).startsWith(searchString) && nickname.toLowerCase(Locale.ENGLISH).startsWith(searchString)
&& (includeHidden || includeOffline || !getUser(player).isHidden())) && (includeHidden || includeOffline || requester == null || requester.canSee(player)))
{ {
result.add(getUser(player)); result.add(getUser(player));
break; break;

View File

@@ -55,13 +55,16 @@ public class KeywordReplacer implements IText
} }
int playerHidden = 0; int playerHidden = 0;
if (sender instanceof Player)
{
for (Player p : ess.getServer().getOnlinePlayers()) for (Player p : ess.getServer().getOnlinePlayers())
{ {
if (ess.getUserMap().getUser(p).isHidden()) if (!p.canSee((Player)sender))
{ {
playerHidden++; playerHidden++;
} }
} }
}
online = Integer.toString(ess.getServer().getOnlinePlayers().length - playerHidden); online = Integer.toString(ess.getServer().getOnlinePlayers().length - playerHidden);
unique = Integer.toString(ess.getUserMap().getUniqueUsers()); unique = Integer.toString(ess.getUserMap().getUniqueUsers());
@@ -77,9 +80,11 @@ public class KeywordReplacer implements IText
worlds = worldsBuilder.toString(); worlds = worldsBuilder.toString();
final StringBuilder playerlistBuilder = new StringBuilder(); final StringBuilder playerlistBuilder = new StringBuilder();
if (sender instanceof Player)
{
for (Player p : ess.getServer().getOnlinePlayers()) for (Player p : ess.getServer().getOnlinePlayers())
{ {
if (ess.getUserMap().getUser(p).isHidden()) if (!p.canSee((Player)sender))
{ {
continue; continue;
} }
@@ -89,6 +94,7 @@ public class KeywordReplacer implements IText
} }
playerlistBuilder.append(p.getDisplayName()); playerlistBuilder.append(p.getDisplayName());
} }
}
playerlist = playerlistBuilder.toString(); playerlist = playerlistBuilder.toString();
final StringBuilder pluginlistBuilder = new StringBuilder(); final StringBuilder pluginlistBuilder = new StringBuilder();

View File

@@ -45,8 +45,7 @@ public class EssentialsGeoIPPlayerListener implements Listener, IReload
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
public void onPlayerJoin(final PlayerJoinEvent event) public void onPlayerJoin(final PlayerJoinEvent event)
{ {
final IUser u = ess.getUserMap().getUser(event.getPlayer()); if (Permissions.GEOIP_HIDE.isAuthorized(event.getPlayer()))
if (Permissions.GEOIP_HIDE.isAuthorized(u))
{ {
return; return;
} }
@@ -81,17 +80,21 @@ public class EssentialsGeoIPPlayerListener implements Listener, IReload
} }
if (config.getData().isShowOnWhois()) if (config.getData().isShowOnWhois())
{ {
final IUser u = ess.getUserMap().getUser(event.getPlayer());
u.getData().setGeolocation(builder.toString()); u.getData().setGeolocation(builder.toString());
u.queueSave(); u.queueSave();
} }
if (config.getData().isShowOnLogin() && !u.isHidden()) if (config.getData().isShowOnLogin())
{ {
for (Player player : event.getPlayer().getServer().getOnlinePlayers()) for (Player player : event.getPlayer().getServer().getOnlinePlayers())
{ {
final IUser user = ess.getUserMap().getUser(player); if (!player.canSee(event.getPlayer()))
if (Permissions.GEOIP_SHOW.isAuthorized(user))
{ {
user.sendMessage(_("geoipJoinFormat", user.getPlayer().getDisplayName(), builder.toString())); continue;
}
if (Permissions.GEOIP_SHOW.isAuthorized(player))
{
player.sendMessage(_("geoipJoinFormat", player.getDisplayName(), builder.toString()));
} }
} }
} }