mirror of
https://github.com/EssentialsX/Essentials.git
synced 2024-12-27 03:28:30 +01:00
Add previous account tracking to /seen
This commit is contained in:
parent
3c613fd59b
commit
b080187808
@ -562,7 +562,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials
|
|||||||
sender.sendMessage(tl("errorWithMessage", exception.getMessage()));
|
sender.sendMessage(tl("errorWithMessage", exception.getMessage()));
|
||||||
if (getSettings().isDebug())
|
if (getSettings().isDebug())
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, tl("errorCallingCommand", commandLabel), exception);
|
LOGGER.log(Level.INFO, tl("errorCallingCommand", commandLabel), exception);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -649,10 +649,19 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials
|
|||||||
@Override
|
@Override
|
||||||
public User getOfflineUser(final String name)
|
public User getOfflineUser(final String name)
|
||||||
{
|
{
|
||||||
final User user = userMap.getUser(name);
|
final User user = userMap.getUser(name);
|
||||||
if (user != null && user.getBase() instanceof OfflinePlayer)
|
if (user != null && user.getBase() instanceof OfflinePlayer)
|
||||||
{
|
{
|
||||||
((OfflinePlayer)user.getBase()).setName(name);
|
//This code should attempt to use the last known name of a user, if Bukkit returns name as null.
|
||||||
|
final String lastName = user.getLastAccountName();
|
||||||
|
if (lastName != null)
|
||||||
|
{
|
||||||
|
((OfflinePlayer)user.getBase()).setName(lastName);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
((OfflinePlayer)user.getBase()).setName(name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import java.io.File;
|
|||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ConcurrentSkipListMap;
|
import java.util.concurrent.ConcurrentSkipListMap;
|
||||||
@ -36,9 +37,8 @@ public class UUIDMap
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadAllUsers(final ConcurrentSkipListMap<String, UUID> names)
|
public void loadAllUsers(final ConcurrentSkipListMap<String, UUID> names, final ConcurrentSkipListMap<UUID, ArrayList<String>> history)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (!userList.exists())
|
if (!userList.exists())
|
||||||
@ -49,7 +49,7 @@ public class UUIDMap
|
|||||||
final BufferedReader reader = new BufferedReader(new FileReader(userList));
|
final BufferedReader reader = new BufferedReader(new FileReader(userList));
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
do
|
while (true)
|
||||||
{
|
{
|
||||||
final String line = reader.readLine();
|
final String line = reader.readLine();
|
||||||
if (line == null)
|
if (line == null)
|
||||||
@ -58,14 +58,25 @@ public class UUIDMap
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
String[] values = splitPattern.split(line);
|
final String[] values = splitPattern.split(line);
|
||||||
if (values.length == 2)
|
if (values.length == 2)
|
||||||
{
|
{
|
||||||
names.put(values[0], UUID.fromString(values[1]));
|
final String name = values[0];
|
||||||
|
final UUID uuid = UUID.fromString(values[1]);
|
||||||
|
names.put(name, uuid);
|
||||||
|
if (!history.containsKey(uuid))
|
||||||
|
{
|
||||||
|
final ArrayList<String> list = new ArrayList<String>();
|
||||||
|
list.add(name);
|
||||||
|
history.put(uuid, list);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
history.get(uuid).add(name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (true);
|
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
@ -76,7 +87,6 @@ public class UUIDMap
|
|||||||
{
|
{
|
||||||
Bukkit.getLogger().log(Level.SEVERE, ex.getMessage(), ex);
|
Bukkit.getLogger().log(Level.SEVERE, ex.getMessage(), ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeUUIDMap()
|
public void writeUUIDMap()
|
||||||
|
@ -6,7 +6,9 @@ import com.google.common.cache.CacheBuilder;
|
|||||||
import com.google.common.cache.CacheLoader;
|
import com.google.common.cache.CacheLoader;
|
||||||
import com.google.common.util.concurrent.UncheckedExecutionException;
|
import com.google.common.util.concurrent.UncheckedExecutionException;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ConcurrentSkipListMap;
|
import java.util.concurrent.ConcurrentSkipListMap;
|
||||||
@ -22,6 +24,7 @@ public class UserMap extends CacheLoader<UUID, User> implements IConf
|
|||||||
private final transient Cache<UUID, User> users;
|
private final transient Cache<UUID, User> users;
|
||||||
private final transient ConcurrentSkipListSet<UUID> keys = new ConcurrentSkipListSet<UUID>();
|
private final transient ConcurrentSkipListSet<UUID> keys = new ConcurrentSkipListSet<UUID>();
|
||||||
private final transient ConcurrentSkipListMap<String, UUID> names = new ConcurrentSkipListMap<String, UUID>();
|
private final transient ConcurrentSkipListMap<String, UUID> names = new ConcurrentSkipListMap<String, UUID>();
|
||||||
|
private final transient ConcurrentSkipListMap<UUID, ArrayList<String>> history = new ConcurrentSkipListMap<UUID, ArrayList<String>>();
|
||||||
private UUIDMap uuidMap;
|
private UUIDMap uuidMap;
|
||||||
|
|
||||||
public UserMap(final IEssentials ess)
|
public UserMap(final IEssentials ess)
|
||||||
@ -65,7 +68,7 @@ public class UserMap extends CacheLoader<UUID, User> implements IConf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uuidMap.loadAllUsers(names);
|
uuidMap.loadAllUsers(names, history);
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -205,6 +208,16 @@ public class UserMap extends CacheLoader<UUID, User> implements IConf
|
|||||||
return names;
|
return names;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ConcurrentSkipListMap<UUID, ArrayList<String>> getHistory()
|
||||||
|
{
|
||||||
|
return history;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getUserHistory(final UUID uuid)
|
||||||
|
{
|
||||||
|
return history.get(uuid);
|
||||||
|
}
|
||||||
|
|
||||||
public UUIDMap getUUIDMap()
|
public UUIDMap getUUIDMap()
|
||||||
{
|
{
|
||||||
return uuidMap;
|
return uuidMap;
|
||||||
|
@ -72,6 +72,13 @@ public class Commandseen extends EssentialsCommand
|
|||||||
|
|
||||||
user.setDisplayNick();
|
user.setDisplayNick();
|
||||||
sender.sendMessage(tl("seenOnline", user.getDisplayName(), DateUtil.formatDateDiff(user.getLastLogin())));
|
sender.sendMessage(tl("seenOnline", user.getDisplayName(), DateUtil.formatDateDiff(user.getLastLogin())));
|
||||||
|
|
||||||
|
List<String> history = ess.getUserMap().getUserHistory(user.getBase().getUniqueId());
|
||||||
|
if (history.size() > 1)
|
||||||
|
{
|
||||||
|
sender.sendMessage("User has also been known as: " + StringUtil.joinList(history)); //TODO: TL
|
||||||
|
}
|
||||||
|
|
||||||
if (user.isAfk())
|
if (user.isAfk())
|
||||||
{
|
{
|
||||||
sender.sendMessage(tl("whoisAFK", tl("true")));
|
sender.sendMessage(tl("whoisAFK", tl("true")));
|
||||||
@ -110,6 +117,13 @@ public class Commandseen extends EssentialsCommand
|
|||||||
{
|
{
|
||||||
sender.sendMessage(tl("userUnknown", user.getName()));
|
sender.sendMessage(tl("userUnknown", user.getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<String> history = ess.getUserMap().getUserHistory(user.getBase().getUniqueId());
|
||||||
|
if (history.size() > 1)
|
||||||
|
{
|
||||||
|
sender.sendMessage("User has also been known as: " + StringUtil.joinList(history)); //TODO: TL
|
||||||
|
}
|
||||||
|
|
||||||
if (user.getBase().isBanned())
|
if (user.getBase().isBanned())
|
||||||
{
|
{
|
||||||
sender.sendMessage(tl("whoisBanned", showBan ? user.getBanReason() : tl("true")));
|
sender.sendMessage(tl("whoisBanned", showBan ? user.getBanReason() : tl("true")));
|
||||||
|
Loading…
Reference in New Issue
Block a user