diff options
author | snowleo <schneeleo@gmail.com> | 2012-10-09 20:39:35 +0200 |
---|---|---|
committer | snowleo <schneeleo@gmail.com> | 2012-10-09 20:39:58 +0200 |
commit | 62d5f63ab19fd5b35f712598080b8aab7e5e7185 (patch) | |
tree | 9512ea6bb3ce5492bdbb176d4c5bd4db78341289 | |
parent | 2c72a6bc95260a02fb27b63d3fd51e8e96c0ddbb (diff) | |
download | Essentials-62d5f63ab19fd5b35f712598080b8aab7e5e7185.tar Essentials-62d5f63ab19fd5b35f712598080b8aab7e5e7185.tar.gz Essentials-62d5f63ab19fd5b35f712598080b8aab7e5e7185.tar.lz Essentials-62d5f63ab19fd5b35f712598080b8aab7e5e7185.tar.xz Essentials-62d5f63ab19fd5b35f712598080b8aab7e5e7185.zip |
Get Player objects of players, that are not in the game yet.
-rw-r--r-- | Essentials/src/net/ess3/api/IUserMap.java | 4 | ||||
-rw-r--r-- | Essentials/src/net/ess3/listener/EssentialsPlayerListener.java | 4 | ||||
-rw-r--r-- | Essentials/src/net/ess3/user/UserMap.java | 22 |
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)); + } } |