1
0
mirror of https://github.com/essentials/Essentials.git synced 2025-08-14 02:24:16 +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);
}
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

View File

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

View File

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

View File

@@ -24,18 +24,30 @@ public interface IUserMap extends IReload
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
* @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;
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);

View File

@@ -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()));
}
user.updateActivity(false);
}
else
{
//user.sendMessage(_("markedAsAway"));
if (!user.isHidden())
{
ess.broadcastMessage(user, _("userIsAway", user.getPlayer().getDisplayName()));
}
}
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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:

View File

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

View File

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

View File

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

View File

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

View File

@@ -7,8 +7,6 @@ import org.bukkit.Server;
import org.bukkit.command.CommandSender;
public class Commandfly extends EssentialsCommand
{
@Override
@@ -40,7 +38,7 @@ 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)
{

View File

@@ -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)
{

View File

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

View File

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

View File

@@ -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"))

View File

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

View File

@@ -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];

View File

@@ -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))
{

View File

@@ -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)
{

View File

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

View File

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

View File

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

View File

@@ -15,21 +15,24 @@ 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;
}
Player userPlayer = getPlayerOrNull(sender);
if (userPlayer != null)
{
int playerHidden = 0;
for (Player onlinePlayer : server.getOnlinePlayers())
{
if (ess.getUserMap().getUser(onlinePlayer).isHidden())
if (!userPlayer.canSee(onlinePlayer))
{
playerHidden++;
}
}
String online;
if (showhidden && playerHidden > 0)
{
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());
}
}
else
{
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))
{
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))
{
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"));
}

View File

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

View File

@@ -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
@@ -58,17 +58,22 @@ public class Commandmsg extends EssentialsCommand
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"));
}
final Player player = getPlayerOrNull(sender);
if (isUser(sender))
{
int i = 0;
for (IUser u : matchedPlayers)
{
if (u.isHidden())
if (!player.canSee(u.getPlayer()))
{
i++;
}
@@ -77,11 +82,12 @@ public class Commandmsg extends EssentialsCommand
{
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;
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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())
{

View File

@@ -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())
{

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

View File

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

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

View File

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

View File

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

View File

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

View File

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

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

View File

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

View File

@@ -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"))

View File

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

View File

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

View File

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

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;
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;
@@ -23,9 +21,9 @@ public class GMGroups implements IRanks
}
@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)
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)
{
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;

View File

@@ -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))
{

View File

@@ -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))
{

View File

@@ -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,12 +419,9 @@ 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()));
}
}
}
@Override
public Location getAfkPosition()
@@ -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());
}
}

View File

@@ -102,9 +102,20 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap
}
@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())
{
throw new PlayerNotFoundException();
@@ -123,7 +134,18 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap
}
@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[] 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;

View File

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

View File

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