Skip to content

Commit 3f1c996

Browse files
committed
Use quicker ban lookup to reduce /seen lag.
1 parent 53a7cd7 commit 3f1c996

File tree

4 files changed

+45
-8
lines changed

4 files changed

+45
-8
lines changed

Diff for: Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.earth2me.essentials;
22

33
import static com.earth2me.essentials.I18n.tl;
4+
import com.earth2me.essentials.craftbukkit.BanLookup;
45
import com.earth2me.essentials.craftbukkit.FakeWorld;
56
import com.earth2me.essentials.settings.Spawns;
67
import com.earth2me.essentials.storage.YamlStorageWriter;
@@ -729,7 +730,7 @@ public void banFormatChange()
729730
banTimeout = 0L;
730731
}
731732

732-
if (ess.getServer().getBanList(BanList.Type.NAME).isBanned(playerName))
733+
if (BanLookup.isBanned(ess, playerName))
733734
{
734735
updateBan(playerName, banReason, banTimeout);
735736
}

Diff for: Essentials/src/com/earth2me/essentials/commands/Commandseen.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@
44
import static com.earth2me.essentials.I18n.tl;
55
import com.earth2me.essentials.User;
66
import com.earth2me.essentials.UserMap;
7+
import com.earth2me.essentials.craftbukkit.BanLookup;
78
import com.earth2me.essentials.utils.DateUtil;
89
import com.earth2me.essentials.utils.FormatUtil;
910
import com.earth2me.essentials.utils.StringUtil;
10-
import java.text.DateFormat;
1111
import java.util.ArrayList;
1212
import java.util.Date;
1313
import java.util.List;
1414
import org.bukkit.BanList;
15-
import org.bukkit.Bukkit;
1615
import java.util.UUID;
1716
import org.bukkit.BanEntry;
1817
import org.bukkit.Location;
@@ -64,9 +63,9 @@ else if (ess.getServer().getBanList(BanList.Type.IP).isBanned(args[0]))
6463
sender.sendMessage(tl("isIpBanned", args[0]));
6564
return;
6665
}
67-
else if (ess.getServer().getBanList(BanList.Type.NAME).isBanned(args[0]))
66+
else if (BanLookup.isBanned(ess, args[0]))
6867
{
69-
sender.sendMessage(tl("whoisBanned", showBan ? ess.getServer().getBanList(BanList.Type.NAME).getBanEntry(args[0]).getReason() : tl("true")));
68+
sender.sendMessage(tl("whoisBanned", showBan ? BanLookup.getBanEntry(ess, args[0]).getReason() : tl("true")));
7069
return;
7170
}
7271
else
@@ -145,9 +144,9 @@ private void seenOffline(final Server server, final CommandSource sender, User u
145144
sender.sendMessage(tl("seenAccounts", StringUtil.joinListSkip(", ", user.getName(), history)));
146145
}
147146

148-
if (user.getBase().isBanned())
147+
if (BanLookup.isBanned(ess, user))
149148
{
150-
final BanEntry banEntry = ess.getServer().getBanList(BanList.Type.NAME).getBanEntry(user.getName());
149+
final BanEntry banEntry = BanLookup.getBanEntry(ess, user.getName());
151150
final String reason = showBan ? banEntry.getReason() : tl("true");
152151
sender.sendMessage(tl("whoisBanned", reason));
153152
if (banEntry.getExpiration() != null)
@@ -161,6 +160,7 @@ private void seenOffline(final Server server, final CommandSource sender, User u
161160
sender.sendMessage(tl("whoisTempBanned", expireString));
162161
}
163162
}
163+
164164
final String location = user.getGeoLocation();
165165
if (location != null && (!(sender.isPlayer()) || ess.getUser(sender.getPlayer()).isAuthorized("essentials.geoip.show")))
166166
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.earth2me.essentials.craftbukkit;
2+
3+
import com.earth2me.essentials.User;
4+
import java.util.Iterator;
5+
import java.util.Set;
6+
import net.ess3.api.IEssentials;
7+
import org.bukkit.BanEntry;
8+
import org.bukkit.BanList;
9+
10+
11+
public class BanLookup
12+
{
13+
public static Boolean isBanned(IEssentials ess, User user)
14+
{
15+
return isBanned(ess, user.getName());
16+
}
17+
18+
public static Boolean isBanned(IEssentials ess, String name)
19+
{
20+
return getBanEntry(ess, name) != null;
21+
}
22+
23+
public static BanEntry getBanEntry(IEssentials ess, String name)
24+
{
25+
Set<BanEntry> benteries = ess.getServer().getBanList(BanList.Type.NAME).getBanEntries();
26+
for (BanEntry banEnt : benteries)
27+
{
28+
if (banEnt.getTarget().equals(name))
29+
{
30+
return banEnt;
31+
}
32+
}
33+
return null;
34+
}
35+
36+
}

Diff for: Essentials/src/plugin.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ commands:
229229
mail:
230230
description: Manages inter-player, intra-server mail.
231231
usage: /<command> [read|clear|send [to] [message]|sendall [message]]
232-
aliases: [email,eemail]
232+
aliases: [email,eemail,memo,ememo]
233233
me:
234234
description: Describes an action in the context of the player.
235235
usage: /<command> <description>

0 commit comments

Comments
 (0)