@EventHandler (priority = EventPriority.NORMAL)
	public void join(final PlayerJoinEvent evt) {
		String name = evt.getPlayer().getDisplayName();
		evt.setJoinMessage(null);

		for (Player pl : Bukkit.getServer().getOnlinePlayers()) {
			if (pl.getName().equalsIgnoreCase(evt.getPlayer().getName())) break;
			if (pl.hasPermission("group.mod")) {
				pl.sendMessage(evt.getPlayer().getDisplayName() + ChatColor.GREEN + " has joined the game " + ChatColor.RED + "(" + ChatColor.WHITE + address.get(name) + ChatColor.RED + ")");
				if (!evt.getPlayer().hasPlayedBefore()) {
					pl.sendMessage(String.format("%sThis is their first time on the server!", ChatColor.GREEN));
				}
			} else {
				if (evt.getPlayer().hasPlayedBefore()) {
					pl.sendMessage(String.format("%s%s has joined the game", evt.getPlayer().getDisplayName(), ChatColor.GREEN));
				} else {
					pl.sendMessage(String.format("%s%s has joined the game for the first time", evt.getPlayer().getDisplayName(), ChatColor.GREEN));
				}
			}
		}


        if (!evt.getPlayer().hasPlayedBefore() && !evt.getPlayer().hasPermission("group.users"))
            evt.getPlayer().sendMessage(
                    ChatColor.translateAlternateColorCodes('&', this.plugin.getConfig().getString("new_player").replaceAll("<player>", name)));

		new PlayerList(evt.getPlayer());
		evt.getPlayer().sendMessage(fileHandler.contents);

		new BukkitRunnable() {
			@Override
			public void run() {
				evt.getPlayer().playSound(evt.getPlayer().getLocation(), Sound.CHICKEN_EGG_POP, 2500, 2500);
				for (int i = 0; i < 3; i++) {
					evt.getPlayer().playEffect(EntityEffect.WOLF_HEARTS);
				}
			}
		}.runTaskLater(plugin, 2);
	}