Search in sources :

Example 1 with PlayerList

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;
}
Also used : Player(org.bukkit.entity.Player) User(com.earth2me.essentials.User) World(org.bukkit.World) PlayerList(com.earth2me.essentials.PlayerList) Location(org.bukkit.Location) Plugin(org.bukkit.plugin.Plugin)

Example 2 with PlayerList

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);
    }
}
Also used : User(com.earth2me.essentials.User) PlayerList(com.earth2me.essentials.PlayerList)

Example 3 with 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);
    }
}
Also used : User(com.earth2me.essentials.User) PlayerList(com.earth2me.essentials.PlayerList)

Example 4 with 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;
}
Also used : Player(org.bukkit.entity.Player) User(com.earth2me.essentials.User) World(org.bukkit.World) PlayerList(com.earth2me.essentials.PlayerList) Location(org.bukkit.Location) Plugin(org.bukkit.plugin.Plugin)

Aggregations

PlayerList (com.earth2me.essentials.PlayerList)4 User (com.earth2me.essentials.User)4 Location (org.bukkit.Location)2 World (org.bukkit.World)2 Player (org.bukkit.entity.Player)2 Plugin (org.bukkit.plugin.Plugin)2