use of com.earth2me.essentials.PlayerList in project Essentials by EssentialsX.
the class KeywordReplacer method replaceLine.
private String replaceLine(String line, final String fullMatch, final String[] matchTokens, final User user) {
final String keyword = matchTokens[0];
try {
String replacer = null;
KeywordType validKeyword = KeywordType.valueOf(keyword);
if (validKeyword.getType().equals(KeywordCachable.CACHEABLE) && keywordCache.containsKey(validKeyword)) {
replacer = keywordCache.get(validKeyword).toString();
} else if (validKeyword.getType().equals(KeywordCachable.SUBVALUE)) {
String subKeyword = "";
if (matchTokens.length > 1) {
subKeyword = matchTokens[1].toLowerCase(Locale.ENGLISH);
}
if (keywordCache.containsKey(validKeyword)) {
Map<String, String> values = (Map<String, String>) keywordCache.get(validKeyword);
if (values.containsKey(subKeyword)) {
replacer = values.get(subKeyword);
}
}
}
if (validKeyword.isPrivate() && !includePrivate) {
replacer = "";
}
if (replacer == null) {
replacer = "";
switch(validKeyword) {
case PLAYER:
case DISPLAYNAME:
if (user != null) {
replacer = user.getDisplayName();
}
break;
case USERNAME:
if (user != null) {
replacer = user.getName();
}
break;
case BALANCE:
if (user != null) {
replacer = NumberUtil.displayCurrency(user.getMoney(), ess);
}
break;
case MAILS:
if (user != null) {
replacer = Integer.toString(user.getMails().size());
}
break;
case WORLD:
case WORLDNAME:
if (user != null) {
final Location location = user.getLocation();
replacer = location == null || location.getWorld() == null ? "" : location.getWorld().getName();
}
break;
case ONLINE:
int playerHidden = 0;
for (User u : ess.getOnlineUsers()) {
if (u.isHidden()) {
playerHidden++;
}
}
replacer = Integer.toString(ess.getOnlinePlayers().size() - playerHidden);
break;
case UNIQUE:
replacer = NumberFormat.getInstance().format(ess.getUserMap().getUniqueUsers());
break;
case WORLDS:
final StringBuilder worldsBuilder = new StringBuilder();
for (World w : ess.getServer().getWorlds()) {
if (worldsBuilder.length() > 0) {
worldsBuilder.append(", ");
}
worldsBuilder.append(w.getName());
}
replacer = worldsBuilder.toString();
break;
case PLAYERLIST:
final Map<String, String> outputList;
if (keywordCache.containsKey(validKeyword)) {
outputList = (Map<String, String>) keywordCache.get(validKeyword);
} else {
final boolean showHidden;
if (user == null) {
showHidden = true;
} else {
showHidden = user.isAuthorized("essentials.list.hidden") || user.canInteractVanished();
}
// First lets build the per group playerlist
final Map<String, List<User>> playerList = PlayerList.getPlayerLists(ess, user, showHidden);
outputList = new HashMap<String, String>();
for (String groupName : playerList.keySet()) {
final List<User> groupUsers = playerList.get(groupName);
if (groupUsers != null && !groupUsers.isEmpty()) {
outputList.put(groupName, PlayerList.listUsers(ess, groupUsers, " "));
}
}
// Now lets build the all user playerlist
final StringBuilder playerlistBuilder = new StringBuilder();
for (Player p : ess.getOnlinePlayers()) {
if (ess.getUser(p).isHidden()) {
continue;
}
if (playerlistBuilder.length() > 0) {
playerlistBuilder.append(", ");
}
playerlistBuilder.append(p.getDisplayName());
}
outputList.put("", playerlistBuilder.toString());
keywordCache.put(validKeyword, outputList);
}
// Now thats all done, output the one we want and cache the rest.
if (matchTokens.length == 1) {
replacer = outputList.get("");
} else if (outputList.containsKey(matchTokens[1].toLowerCase(Locale.ENGLISH))) {
replacer = outputList.get(matchTokens[1].toLowerCase(Locale.ENGLISH));
} else if (matchTokens.length > 2) {
replacer = matchTokens[2];
}
keywordCache.put(validKeyword, outputList);
break;
case TIME:
replacer = DateFormat.getTimeInstance(DateFormat.MEDIUM, ess.getI18n().getCurrentLocale()).format(new Date());
break;
case DATE:
replacer = DateFormat.getDateInstance(DateFormat.MEDIUM, ess.getI18n().getCurrentLocale()).format(new Date());
break;
case WORLDTIME12:
if (user != null) {
replacer = DescParseTickFormat.format12(user.getWorld() == null ? 0 : user.getWorld().getTime());
}
break;
case WORLDTIME24:
if (user != null) {
replacer = DescParseTickFormat.format24(user.getWorld() == null ? 0 : user.getWorld().getTime());
}
break;
case WORLDDATE:
if (user != null) {
replacer = DateFormat.getDateInstance(DateFormat.MEDIUM, ess.getI18n().getCurrentLocale()).format(DescParseTickFormat.ticksToDate(user.getWorld() == null ? 0 : user.getWorld().getFullTime()));
}
break;
case COORDS:
if (user != null) {
final Location location = user.getLocation();
replacer = tl("coordsKeyword", location.getBlockX(), location.getBlockY(), location.getBlockZ());
}
break;
case TPS:
replacer = NumberUtil.formatDouble(ess.getTimer().getAverageTPS());
break;
case UPTIME:
replacer = DateUtil.formatDateDiff(ManagementFactory.getRuntimeMXBean().getStartTime());
break;
case IP:
if (user != null) {
replacer = user.getBase().getAddress() == null || user.getBase().getAddress().getAddress() == null ? "" : user.getBase().getAddress().getAddress().toString();
}
break;
case ADDRESS:
if (user != null) {
replacer = user.getBase().getAddress() == null ? "" : user.getBase().getAddress().toString();
}
break;
case PLUGINS:
final StringBuilder pluginlistBuilder = new StringBuilder();
for (Plugin p : ess.getServer().getPluginManager().getPlugins()) {
if (pluginlistBuilder.length() > 0) {
pluginlistBuilder.append(", ");
}
pluginlistBuilder.append(p.getDescription().getName());
}
replacer = pluginlistBuilder.toString();
break;
case VERSION:
replacer = ess.getServer().getVersion();
break;
default:
replacer = "N/A";
break;
}
if (this.replaceSpacesWithUnderscores) {
replacer = replacer.replaceAll("\\s", "_");
}
// If this is just a regular keyword, lets throw it into the cache
if (validKeyword.getType().equals(KeywordCachable.CACHEABLE)) {
keywordCache.put(validKeyword, replacer);
}
}
line = line.replace(fullMatch, replacer);
} catch (IllegalArgumentException ex) {
}
return line;
}
use of com.earth2me.essentials.PlayerList in project Essentials by drtshock.
the class Commandlist method run.
@Override
public void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception {
boolean showHidden = true;
User user = null;
if (sender.isPlayer()) {
user = ess.getUser(sender.getPlayer());
showHidden = user.isAuthorized("essentials.list.hidden") || user.canInteractVanished();
}
sender.sendMessage(PlayerList.listSummary(ess, user, showHidden));
final Map<String, List<User>> playerList = PlayerList.getPlayerLists(ess, user, showHidden);
if (args.length > 0) {
sender.sendMessage(PlayerList.listGroupUsers(ess, playerList, args[0].toLowerCase()));
} else {
sendGroupedList(sender, commandLabel, playerList);
}
}
use of com.earth2me.essentials.PlayerList in project Essentials by EssentialsX.
the class Commandlist method run.
@Override
public void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception {
boolean showHidden = true;
User user = null;
if (sender.isPlayer()) {
user = ess.getUser(sender.getPlayer());
showHidden = user.isAuthorized("essentials.list.hidden") || user.canInteractVanished();
}
sender.sendMessage(PlayerList.listSummary(ess, user, showHidden));
final Map<String, List<User>> playerList = PlayerList.getPlayerLists(ess, user, showHidden);
if (args.length > 0) {
sender.sendMessage(PlayerList.listGroupUsers(ess, playerList, args[0].toLowerCase()));
} else {
sendGroupedList(sender, commandLabel, playerList);
}
}
use of com.earth2me.essentials.PlayerList in project Essentials by drtshock.
the class KeywordReplacer method replaceLine.
private String replaceLine(String line, final String fullMatch, final String[] matchTokens, final User user) {
final String keyword = matchTokens[0];
try {
String replacer = null;
KeywordType validKeyword = KeywordType.valueOf(keyword);
if (validKeyword.getType().equals(KeywordCachable.CACHEABLE) && keywordCache.containsKey(validKeyword)) {
replacer = keywordCache.get(validKeyword).toString();
} else if (validKeyword.getType().equals(KeywordCachable.SUBVALUE)) {
String subKeyword = "";
if (matchTokens.length > 1) {
subKeyword = matchTokens[1].toLowerCase(Locale.ENGLISH);
}
if (keywordCache.containsKey(validKeyword)) {
Map<String, String> values = (Map<String, String>) keywordCache.get(validKeyword);
if (values.containsKey(subKeyword)) {
replacer = values.get(subKeyword);
}
}
}
if (validKeyword.isPrivate() && !includePrivate) {
replacer = "";
}
if (replacer == null) {
replacer = "";
switch(validKeyword) {
case PLAYER:
case DISPLAYNAME:
if (user != null) {
replacer = user.getDisplayName();
}
break;
case USERNAME:
if (user != null) {
replacer = user.getName();
}
break;
case BALANCE:
if (user != null) {
replacer = NumberUtil.displayCurrency(user.getMoney(), ess);
}
break;
case MAILS:
if (user != null) {
replacer = Integer.toString(user.getMails().size());
}
break;
case WORLD:
case WORLDNAME:
if (user != null) {
final Location location = user.getLocation();
replacer = location == null || location.getWorld() == null ? "" : location.getWorld().getName();
}
break;
case ONLINE:
int playerHidden = 0;
for (User u : ess.getOnlineUsers()) {
if (u.isHidden()) {
playerHidden++;
}
}
replacer = Integer.toString(ess.getOnlinePlayers().size() - playerHidden);
break;
case UNIQUE:
replacer = NumberFormat.getInstance().format(ess.getUserMap().getUniqueUsers());
break;
case WORLDS:
final StringBuilder worldsBuilder = new StringBuilder();
for (World w : ess.getServer().getWorlds()) {
if (worldsBuilder.length() > 0) {
worldsBuilder.append(", ");
}
worldsBuilder.append(w.getName());
}
replacer = worldsBuilder.toString();
break;
case PLAYERLIST:
final Map<String, String> outputList;
if (keywordCache.containsKey(validKeyword)) {
outputList = (Map<String, String>) keywordCache.get(validKeyword);
} else {
final boolean showHidden;
if (user == null) {
showHidden = true;
} else {
showHidden = user.isAuthorized("essentials.list.hidden") || user.canInteractVanished();
}
// First lets build the per group playerlist
final Map<String, List<User>> playerList = PlayerList.getPlayerLists(ess, user, showHidden);
outputList = new HashMap<String, String>();
for (String groupName : playerList.keySet()) {
final List<User> groupUsers = playerList.get(groupName);
if (groupUsers != null && !groupUsers.isEmpty()) {
outputList.put(groupName, PlayerList.listUsers(ess, groupUsers, " "));
}
}
// Now lets build the all user playerlist
final StringBuilder playerlistBuilder = new StringBuilder();
for (Player p : ess.getOnlinePlayers()) {
if (ess.getUser(p).isHidden()) {
continue;
}
if (playerlistBuilder.length() > 0) {
playerlistBuilder.append(", ");
}
playerlistBuilder.append(p.getDisplayName());
}
outputList.put("", playerlistBuilder.toString());
keywordCache.put(validKeyword, outputList);
}
// Now thats all done, output the one we want and cache the rest.
if (matchTokens.length == 1) {
replacer = outputList.get("");
} else if (outputList.containsKey(matchTokens[1].toLowerCase(Locale.ENGLISH))) {
replacer = outputList.get(matchTokens[1].toLowerCase(Locale.ENGLISH));
} else if (matchTokens.length > 2) {
replacer = matchTokens[2];
}
keywordCache.put(validKeyword, outputList);
break;
case TIME:
replacer = DateFormat.getTimeInstance(DateFormat.MEDIUM, ess.getI18n().getCurrentLocale()).format(new Date());
break;
case DATE:
replacer = DateFormat.getDateInstance(DateFormat.MEDIUM, ess.getI18n().getCurrentLocale()).format(new Date());
break;
case WORLDTIME12:
if (user != null) {
replacer = DescParseTickFormat.format12(user.getWorld() == null ? 0 : user.getWorld().getTime());
}
break;
case WORLDTIME24:
if (user != null) {
replacer = DescParseTickFormat.format24(user.getWorld() == null ? 0 : user.getWorld().getTime());
}
break;
case WORLDDATE:
if (user != null) {
replacer = DateFormat.getDateInstance(DateFormat.MEDIUM, ess.getI18n().getCurrentLocale()).format(DescParseTickFormat.ticksToDate(user.getWorld() == null ? 0 : user.getWorld().getFullTime()));
}
break;
case COORDS:
if (user != null) {
final Location location = user.getLocation();
replacer = tl("coordsKeyword", location.getBlockX(), location.getBlockY(), location.getBlockZ());
}
break;
case TPS:
replacer = NumberUtil.formatDouble(ess.getTimer().getAverageTPS());
break;
case UPTIME:
replacer = DateUtil.formatDateDiff(ManagementFactory.getRuntimeMXBean().getStartTime());
break;
case IP:
if (user != null) {
replacer = user.getBase().getAddress() == null || user.getBase().getAddress().getAddress() == null ? "" : user.getBase().getAddress().getAddress().toString();
}
break;
case ADDRESS:
if (user != null) {
replacer = user.getBase().getAddress() == null ? "" : user.getBase().getAddress().toString();
}
break;
case PLUGINS:
final StringBuilder pluginlistBuilder = new StringBuilder();
for (Plugin p : ess.getServer().getPluginManager().getPlugins()) {
if (pluginlistBuilder.length() > 0) {
pluginlistBuilder.append(", ");
}
pluginlistBuilder.append(p.getDescription().getName());
}
replacer = pluginlistBuilder.toString();
break;
case VERSION:
replacer = ess.getServer().getVersion();
break;
default:
replacer = "N/A";
break;
}
if (this.replaceSpacesWithUnderscores) {
replacer = replacer.replaceAll("\\s", "_");
}
// If this is just a regular keyword, lets throw it into the cache
if (validKeyword.getType().equals(KeywordCachable.CACHEABLE)) {
keywordCache.put(validKeyword, replacer);
}
}
line = line.replace(fullMatch, replacer);
} catch (IllegalArgumentException ex) {
}
return line;
}