Search in sources :

Example 81 with User

use of com.earth2me.essentials.User 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 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 82 with User

use of com.earth2me.essentials.User in project Essentials by drtshock.

the class Commandbroadcastworld method sendToWorld.

private void sendToWorld(World world, String message) {
    IText broadcast = new SimpleTextInput(message);
    final Collection<Player> players = ess.getOnlinePlayers();
    for (Player player : players) {
        if (player.getWorld().equals(world)) {
            final User user = ess.getUser(player);
            broadcast = new KeywordReplacer(broadcast, new CommandSource(player), ess, false);
            for (String messageText : broadcast.getLines()) {
                user.sendMessage(messageText);
            }
        }
    }
}
Also used : KeywordReplacer(com.earth2me.essentials.textreader.KeywordReplacer) Player(org.bukkit.entity.Player) User(com.earth2me.essentials.User) SimpleTextInput(com.earth2me.essentials.textreader.SimpleTextInput) IText(com.earth2me.essentials.textreader.IText) CommandSource(com.earth2me.essentials.CommandSource)

Example 83 with User

use of com.earth2me.essentials.User in project Essentials by drtshock.

the class Economy method deleteNPC.

private static void deleteNPC(String name) {
    User user = ess.getUser(name);
    user.reset();
}
Also used : User(com.earth2me.essentials.User)

Example 84 with User

use of com.earth2me.essentials.User in project Essentials by drtshock.

the class Economy method removeNPC.

/**
     * Deletes a user, if it is marked as npc.
     *
     * @param name Name of the player
     *
     * @throws UserDoesNotExistException
     */
public static void removeNPC(String name) throws UserDoesNotExistException {
    User user = getUserByName(name);
    if (user == null) {
        throw new UserDoesNotExistException(name);
    }
    deleteNPC(name);
}
Also used : User(com.earth2me.essentials.User)

Example 85 with User

use of com.earth2me.essentials.User in project Essentials by drtshock.

the class Economy method setMoney.

public static void setMoney(String name, BigDecimal balance) throws UserDoesNotExistException, NoLoanPermittedException {
    User user = getUserByName(name);
    if (user == null) {
        throw new UserDoesNotExistException(name);
    }
    if (balance.compareTo(ess.getSettings().getMinMoney()) < 0) {
        throw new NoLoanPermittedException();
    }
    if (balance.signum() < 0 && !user.isAuthorized("essentials.eco.loan")) {
        throw new NoLoanPermittedException();
    }
    try {
        user.setMoney(balance);
    } catch (MaxMoneyException ex) {
    //TODO: Update API to show max balance errors
    }
    Trade.log("API", "Set", "API", name, new Trade(balance, ess), null, null, null, ess);
}
Also used : Trade(com.earth2me.essentials.Trade) User(com.earth2me.essentials.User) MaxMoneyException(net.ess3.api.MaxMoneyException)

Aggregations

User (com.earth2me.essentials.User)113 Player (org.bukkit.entity.Player)18 Location (org.bukkit.Location)16 EventHandler (org.bukkit.event.EventHandler)14 World (org.bukkit.World)9 Trade (com.earth2me.essentials.Trade)7 ItemStack (org.bukkit.inventory.ItemStack)6 UUID (java.util.UUID)4 Teleport (com.earth2me.essentials.Teleport)3 IText (com.earth2me.essentials.textreader.IText)3 List (java.util.List)3 Material (org.bukkit.Material)3 IUser (com.earth2me.essentials.IUser)2 Kit (com.earth2me.essentials.Kit)2 OfflinePlayer (com.earth2me.essentials.OfflinePlayer)2 PlayerList (com.earth2me.essentials.PlayerList)2 UserMap (com.earth2me.essentials.UserMap)2 IMessageRecipient (com.earth2me.essentials.messaging.IMessageRecipient)2 KeywordReplacer (com.earth2me.essentials.textreader.KeywordReplacer)2 SimpleTextInput (com.earth2me.essentials.textreader.SimpleTextInput)2