private void jobJoin(Player play, String job) {
        String pLang = PlayerCache.getLang(play.getName());
        String jobName = UpperCaseFirst.toUpperFirst(McJobs.getPlugin().getLanguage().getJobNameInLang(job, pLang).toLowerCase());
        job = job.toLowerCase();
        String sPlay = play.getName();
        if(PlayerJobs.getJobsList().get(job) == null) {
          play.sendMessage(ChatColor.RED + _modText.getJobCommand("exist", pLang).addVariables(jobName, sPlay, ""));
          return;
        }
        
        if(PlayerCache.hasJob(sPlay, job)) {
          play.sendMessage(ChatColor.RED + _modText.getJobJoin("have", pLang).addVariables(jobName, sPlay, ""));
          return;
        }
        
        if((!play.hasPermission("mcjobs.jobsavail." + job)) && (!play.hasPermission("mcjobs.jobsavail.all")) && (McJobs.getPlugin().getConfig().getBoolean("advanced.usePerms"))) {
          play.sendMessage(ChatColor.GRAY + _modText.getJobJoin("jobperm", pLang).addVariables(jobName, sPlay, ""));
          return;
        }
        
        if(!PlayerCache.isJoinable(sPlay, job)) {
            play.sendMessage(ChatColor.GRAY + _modText.getJobJoin("jobperm", pLang).addVariables(jobName, sPlay, ""));

            Integer time = PlayerCache.getRejoinTime(sPlay, job);
            if (time == null) {
                play.sendMessage("ERROR: time is null!");
                return;
            }
            
            if (time < 0)
                time = 1;

            String timed = TimeFormat.getFormatedTime(time, play);
            PrettyText text = new PrettyText();
            String str = ChatColor.GRAY + _modText.getJobJoin("timer", pLang).addVariables(jobName, sPlay, timed);

            text.formatPlayerText(str, play);

            return;
        }
        if(PlayerCache.getJobCount(play.getName()) < PlayerCache.getAllowedJobCount(play.getName())) {
            PlayerCache.addJob(play.getName(), job);

            play.sendMessage(ChatColor.GRAY + _modText.getJobJoin("join", pLang).addVariables(jobName, play.getName(), ""));

            McJobsEventJobChange event = new McJobsEventJobChange(play, job, true, false);
            Bukkit.getServer().getPluginManager().callEvent(event);
        } else {
            play.sendMessage(ChatColor.GRAY + _modText.getJobJoin("toomany", pLang).addVariables(jobName, play.getName(), ""));
            play.sendMessage(ChatColor.YELLOW + _modText.getJobJoin("command", pLang).addVariables(jobName, play.getName(), ""));
            return;
        }
        PlayerCache.savePlayerCache(sPlay);
    }