@EventHandler
	public void onPlayerSpin(final PlayerInteractEvent event) {
		final Block block = event.getClickedBlock();
		if(block == null)
			return;
		if(FancyRoulette.instance.tableManager.isBlockSpinner(block)) {
			if(! event.getPlayer().hasPermission("roulette.spin")) {
				event.getPlayer().sendMessage(ChatColor.DARK_RED + "Error! " + ChatColor.WHITE + "You don't have enough permissions to spin the roulette!");
			} if(spinning.contains(block)) {
				event.getPlayer().sendMessage("This spinner is already spinning! Wait for it to finish first.");
				return;
			} event.getPlayer().sendMessage(ChatColor.GOLD + "" + ChatColor.BOLD + "The roulette is spinning!");
			final Random rand = new Random();
			spinning.add(block);
			for(int i = 0; i < 30; ++i) {
				Bukkit.getScheduler().scheduleSyncDelayedTask(FancyRoulette.instance, new Runnable() {
					public void run() {
						Wool woolColor = new Wool(block.getType(), block.getData());
						int color = rand.nextInt(16);
						woolColor.setColor(DyeColor.values()[color]);
						event.getClickedBlock().setType(Material.WOOL);
						event.getClickedBlock().setData(woolColor.getData());
					}
				}, (long)(5 * i));
			}
			
			Bukkit.getScheduler().scheduleSyncDelayedTask(FancyRoulette.instance, new Runnable() {
				public void run() {
					Wool winningColor = new Wool(block.getType(), block.getData());
					onSpinEnd(winningColor, block);
					spinning.remove(block);
				}
			}, (long)(160));
		}
	}