summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Essentials/src/net/ess3/api/IUserMap.java4
-rw-r--r--Essentials/src/net/ess3/listener/EssentialsPlayerListener.java4
-rw-r--r--Essentials/src/net/ess3/user/UserMap.java22
3 files changed, 28 insertions, 2 deletions
diff --git a/Essentials/src/net/ess3/api/IUserMap.java b/Essentials/src/net/ess3/api/IUserMap.java
index 8b94fc5ac..9ce81f03b 100644
--- a/Essentials/src/net/ess3/api/IUserMap.java
+++ b/Essentials/src/net/ess3/api/IUserMap.java
@@ -36,4 +36,8 @@ public interface IUserMap extends IReload
IUser matchUser(final String name, final boolean includeHidden, final boolean includeOffline) throws TooManyMatchesException, PlayerNotFoundException;
Set<IUser> matchUsers(final String name, final boolean includeHidden, final boolean includeOffline);
+
+ public void addPrejoinedPlayer(Player player);
+
+ public void removePrejoinedPlayer(Player player);
}
diff --git a/Essentials/src/net/ess3/listener/EssentialsPlayerListener.java b/Essentials/src/net/ess3/listener/EssentialsPlayerListener.java
index 0909f1d0b..54e69e01b 100644
--- a/Essentials/src/net/ess3/listener/EssentialsPlayerListener.java
+++ b/Essentials/src/net/ess3/listener/EssentialsPlayerListener.java
@@ -243,8 +243,10 @@ public class EssentialsPlayerListener implements Listener
default:
return;
}
-
+
+ ess.getUserMap().addPrejoinedPlayer(event.getPlayer());
final IUser user = ess.getUserMap().getUser(event.getPlayer());
+ ess.getUserMap().removePrejoinedPlayer(event.getPlayer());
user.getData().setNpc(false);
final long currentTime = System.currentTimeMillis();
diff --git a/Essentials/src/net/ess3/user/UserMap.java b/Essentials/src/net/ess3/user/UserMap.java
index 8ba5250ff..eb1a63094 100644
--- a/Essentials/src/net/ess3/user/UserMap.java
+++ b/Essentials/src/net/ess3/user/UserMap.java
@@ -2,8 +2,10 @@ package net.ess3.user;
import java.io.File;
import java.util.Collections;
+import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.Locale;
+import java.util.Map;
import java.util.Set;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
@@ -16,6 +18,8 @@ import org.bukkit.entity.Player;
public class UserMap extends StorageObjectMap<IUser> implements IUserMap
{
+ private final Map<String, Player> prejoinedPlayers = new HashMap<String, Player>();
+
public UserMap(final IEssentials ess)
{
super(ess, "users");
@@ -49,7 +53,11 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap
return user;
}
}
- Player player = ess.getServer().getPlayerExact(name);
+ Player player = prejoinedPlayers.get(name);
+ if (player == null)
+ {
+ player = ess.getServer().getPlayerExact(name);
+ }
if (player != null)
{
return new User(ess.getServer().getOfflinePlayer(player.getName()), ess);
@@ -239,4 +247,16 @@ public class UserMap extends StorageObjectMap<IUser> implements IUserMap
{
return ess.getSettings().getData().getChat().getNicknamePrefix();
}
+
+ @Override
+ public void addPrejoinedPlayer(Player player)
+ {
+ prejoinedPlayers.put(player.getName().toLowerCase(Locale.ENGLISH), player);
+ }
+
+ @Override
+ public void removePrejoinedPlayer(Player player)
+ {
+ prejoinedPlayers.remove(player.getName().toLowerCase(Locale.ENGLISH));
+ }
}