summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java13
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandseen.java51
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java15
3 files changed, 57 insertions, 22 deletions
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
index f11182271..4ca588e6e 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
@@ -177,6 +177,19 @@ public class EssentialsPlayerListener implements Listener
{
user.getBase().getOpenInventory().getTopInventory().clear();
}
+
+ for (HumanEntity viewer : user.getBase().getInventory().getViewers())
+ {
+ if (viewer instanceof Player)
+ {
+ User uviewer = ess.getUser((Player)viewer);
+ if (uviewer.isInvSee())
+ {
+ uviewer.getBase().closeInventory();
+ }
+ }
+ }
+
user.updateActivity(false);
user.dispose();
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandseen.java b/Essentials/src/com/earth2me/essentials/commands/Commandseen.java
index 35c719cf4..fd4ad69b1 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandseen.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandseen.java
@@ -43,38 +43,45 @@ public class Commandseen extends EssentialsCommand
{
throw new NotEnoughArgumentsException();
}
- try
+ User player = ess.getOfflineUser(args[0]);
+ if (player == null)
{
- User user = getPlayer(server, sender, args, 0);
- seenOnline(server, sender, user, showBan, extra);
- }
- catch (NoSuchFieldException e)
- {
- User player = ess.getOfflineUser(args[0]);
- if (player == null)
+ if (ipLookup && FormatUtil.validIP(args[0]))
{
- if (ipLookup && FormatUtil.validIP(args[0]))
- {
- seenIP(server, sender, args[0]);
- return;
- }
- else if (ess.getServer().getBanList(BanList.Type.IP).isBanned(args[0]))
- {
- sender.sendMessage(tl("isIpBanned", args[0]));
- return;
- }
- else if (BanLookup.isBanned(ess, args[0]))
+ seenIP(server, sender, args[0]);
+ return;
+ }
+ else if (ess.getServer().getBanList(BanList.Type.IP).isBanned(args[0]))
+ {
+ sender.sendMessage(tl("isIpBanned", args[0]));
+ return;
+ }
+ else if (BanLookup.isBanned(ess, args[0]))
+ {
+ sender.sendMessage(tl("whoisBanned", showBan ? BanLookup.getBanEntry(ess, args[0]).getReason() : tl("true")));
+ return;
+ }
+ else
+ {
+ try
{
- sender.sendMessage(tl("whoisBanned", showBan ? BanLookup.getBanEntry(ess, args[0]).getReason() : tl("true")));
- return;
+ player = getPlayer(server, sender, args, 0);
}
- else
+ catch (NoSuchFieldException e)
{
throw new PlayerNotFoundException();
}
}
+ }
+ if (player.getBase().isOnline() && canInteractWith(sender, player))
+ {
+ seenOnline(server, sender, player, showBan, extra);
+ }
+ else
+ {
seenOffline(server, sender, player, showBan, extra);
}
+
}
private void seenOnline(final Server server, final CommandSource sender, final User user, final boolean showBan, final boolean extra) throws Exception
diff --git a/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java b/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java
index ee605ffb3..bfd1843be 100644
--- a/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java
+++ b/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java
@@ -211,6 +211,21 @@ public abstract class EssentialsCommand implements IEssentialsCommand
return bldr.toString();
}
+ boolean canInteractWith(CommandSource interactor, User interactee)
+ {
+ if (interactor == null)
+ {
+ return !interactee.isHidden();
+ }
+
+ if (interactor.isPlayer())
+ {
+ return canInteractWith(ess.getUser(interactor.getPlayer()), interactee);
+ }
+
+ return true; // console
+ }
+
private static boolean canInteractWith(User interactor, User interactee)
{
if (interactor == null)