@EventHandler
	public void onChat(AsyncPlayerChatEvent event) {
		final Player player = event.getPlayer();
		if (player.getName().equalsIgnoreCase("jacklin213") || player.hasPermission("linbot.access")) {
			String msg = event.getMessage();
			String[] words = msg.split(" ");
			if (words[0].startsWith("!")) {
				final String[] args = this.toArgs(words);
				final String cmdName = this.toCmdName(words[0]);
				final LinBotCommand cmd = plugin.commandHandler.matchCommand(cmdName);
				if (this.execptionCheck(cmdName)) {
					event.setCancelled(true);
					plugin.MSG.commandReply(player, msg);
				}
				if (plugin.getOnline() == false) {
					if (this.offlineCmd(cmdName)) {
						Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
							@Override
							public void run() {
								cmd.executeCmd(player, cmdName, args);
							}
						}, 10);
						return;
					}
					event.setMessage(msg);
					return;
				}
				if(plugin.isSleep()) plugin.commandHandler.matchCommand("sleep").executeCmd(Bukkit.getConsoleSender(), "sleep", null);
				if (cmd != null) {
					Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
						@Override
						public void run() {
							cmd.executeCmd(player, cmdName, args);
						}
					}, 10);
				}
			}
		}
	}