private void setPlayerExp(CommandSender s, String[] a) {
        if(!checkCondition(s, a, "setexp", "Exp"))
            return;
        
        String jobName = McJobs.getPlugin().getLanguage().getJobNameByLangName(a[2], getPlayerLanguage(s));
        String oldRank = Leveler.getRank(PlayerCache.getJobLevel(a[1], jobName));
        double giveExp = Double.parseDouble(a[3]);
        
        if(giveExp < 1 || giveExp > Leveler.getXPtoLevel(PlayerCache.getJobLevel(a[1], jobName))) {
            //Exp is not in Current Level Range
            
        }
        
        if(giveExp == Leveler.getXPtoLevel(PlayerCache.getJobLevel(a[1], jobName))) {
            PlayerCache.setExp(a[1], jobName, 0);
            PlayerCache.setLevel(a[1], jobName, PlayerCache.getJobLevel(a[1], jobName)+1);
        } else
            PlayerCache.setExp(a[1], jobName, giveExp);
        
        if(Bukkit.getPlayer(a[1]) != null) {
            Player p = Bukkit.getPlayer(a[1]);
            String pLang = PlayerCache.getLang(p.getName());
            String newRank = Leveler.getRank(PlayerCache.getJobLevel(a[1], jobName));
            p.sendMessage(ChatColor.GRAY + _modText.getExperience("padded_exp", pLang).addVariables(_modText.getJobNameInLang(jobName, pLang), p.getName(), String.valueOf(PlayerCache.getJobLevel(a[1], jobName))));
            if(!newRank.equalsIgnoreCase(oldRank)) {
                PlayerCache.resetJobRank(a[1], jobName);
                p.sendMessage(_modText.getExperience("rank", pLang).addVariables(_modText.getJobNameInLang(jobName, pLang), p.getName(), _modText.getJobRank(newRank, pLang)));
            }
        } else
            PlayerCache.savePlayerCache(a[1]);
        s.sendMessage(ChatColor.GRAY + _modText.getExperience("added_exp", getPlayerLanguage(s)).addVariables(_modText.getJobNameInLang(jobName, getPlayerLanguage(s)), s.getName(), String.valueOf(PlayerCache.getJobLevel(a[1], jobName))));
    }