public static String payRegister(Player p, int tier, double basepay, String job) {
        double iTimes = tier;
        double totalPay = PlayerCache.getEarnedIncome(p.getName());
        String pLang = PlayerCache.getLang(p.getName());
        String jobName = UpperCaseFirst.toUpperFirst(McJobs.getPlugin().getLanguage().getJobNameInLang(job, pLang).toLowerCase());
        job = job.toLowerCase();

        String sSingCur = McJobs.getPlugin().getLanguage().getPayment("currency_single", pLang).addVariables("", "", "");
        String sPlurCur = McJobs.getPlugin().getLanguage().getPayment("currency_plural", pLang).addVariables("", "", "");
        String str = "";

        double payAmount = basepay * iTimes * Leveler.getMultiplier(PlayerCache.getJobLevel(p.getName(), job));
        if(overLimit(payAmount, totalPay, p))
            return str;

        if ((totalPay + payAmount >= _maxPay) && (_maxPay > 0.0D))
            payAmount = _maxPay - totalPay + 1.0D;

        totalPay += payAmount;
        PlayerCache.setEarnedIncome(p.getName(), totalPay);
        if (_payCache.containsKey(p.getName())) {
            double temp = _payCache.get(p.getName()).doubleValue();
            temp += payAmount;
            _payCache.put(p.getName(), Double.valueOf(temp));
        } else
            _payCache.put(p.getName(), Double.valueOf(payAmount));

        if(payAmount == 1.0D)
            str = ChatColor.GREEN + McJobs.getPlugin().getLanguage().getPayment("pay", pLang).addVariables(jobName, sSingCur, _df.format(payAmount));
        else
            str = ChatColor.GREEN + McJobs.getPlugin().getLanguage().getPayment("pay", pLang).addVariables(jobName, sPlurCur, _df.format(payAmount));

        return str;
    }