Skip to content

Commit 98db85c

Browse files
committed
rework /seen to be a little stricter on argument matching.
1 parent 10e0ac2 commit 98db85c

File tree

2 files changed

+44
-22
lines changed

2 files changed

+44
-22
lines changed

Essentials/src/com/earth2me/essentials/commands/Commandseen.java

+29-22
Original file line numberDiff line numberDiff line change
@@ -43,38 +43,45 @@ protected void seen(final Server server, final CommandSource sender, final Strin
4343
{
4444
throw new NotEnoughArgumentsException();
4545
}
46-
try
46+
User player = ess.getOfflineUser(args[0]);
47+
if (player == null)
4748
{
48-
User user = getPlayer(server, sender, args, 0);
49-
seenOnline(server, sender, user, showBan, extra);
50-
}
51-
catch (NoSuchFieldException e)
52-
{
53-
User player = ess.getOfflineUser(args[0]);
54-
if (player == null)
49+
if (ipLookup && FormatUtil.validIP(args[0]))
5550
{
56-
if (ipLookup && FormatUtil.validIP(args[0]))
57-
{
58-
seenIP(server, sender, args[0]);
59-
return;
60-
}
61-
else if (ess.getServer().getBanList(BanList.Type.IP).isBanned(args[0]))
62-
{
63-
sender.sendMessage(tl("isIpBanned", args[0]));
64-
return;
65-
}
66-
else if (BanLookup.isBanned(ess, args[0]))
51+
seenIP(server, sender, args[0]);
52+
return;
53+
}
54+
else if (ess.getServer().getBanList(BanList.Type.IP).isBanned(args[0]))
55+
{
56+
sender.sendMessage(tl("isIpBanned", args[0]));
57+
return;
58+
}
59+
else if (BanLookup.isBanned(ess, args[0]))
60+
{
61+
sender.sendMessage(tl("whoisBanned", showBan ? BanLookup.getBanEntry(ess, args[0]).getReason() : tl("true")));
62+
return;
63+
}
64+
else
65+
{
66+
try
6767
{
68-
sender.sendMessage(tl("whoisBanned", showBan ? BanLookup.getBanEntry(ess, args[0]).getReason() : tl("true")));
69-
return;
68+
player = getPlayer(server, sender, args, 0);
7069
}
71-
else
70+
catch (NoSuchFieldException e)
7271
{
7372
throw new PlayerNotFoundException();
7473
}
7574
}
75+
}
76+
if (player.getBase().isOnline() && canInteractWith(sender, player))
77+
{
78+
seenOnline(server, sender, player, showBan, extra);
79+
}
80+
else
81+
{
7682
seenOffline(server, sender, player, showBan, extra);
7783
}
84+
7885
}
7986

8087
private void seenOnline(final Server server, final CommandSource sender, final User user, final boolean showBan, final boolean extra) throws Exception

Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java

+15
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,21 @@ public static String getFinalArg(final String[] args, final int start)
211211
return bldr.toString();
212212
}
213213

214+
boolean canInteractWith(CommandSource interactor, User interactee)
215+
{
216+
if (interactor == null)
217+
{
218+
return !interactee.isHidden();
219+
}
220+
221+
if (interactor.isPlayer())
222+
{
223+
return canInteractWith(ess.getUser(interactor.getPlayer()), interactee);
224+
}
225+
226+
return true; // console
227+
}
228+
214229
private static boolean canInteractWith(User interactor, User interactee)
215230
{
216231
if (interactor == null)

0 commit comments

Comments
 (0)