@EventHandler
    public void onCraftItem(PrepareItemCraftEvent event)
    {
    	if (event.getView().getType().name().equals("WORKBENCH")) {
	    	
	        List<HumanEntity> vl = event.getViewers();
	        Player player = null;
	        for(Iterator<HumanEntity> iterator = vl.iterator(); iterator.hasNext();)
	        {
	            HumanEntity he = (HumanEntity)iterator.next();
	            player = (Player)he;
	        }
	        
	        Block block = plugin.config.getBlock(player);
	    	Block blockAbove = player.getWorld().getBlockAt(block.getX(), block.getY() + 1, block.getZ());
	    	ItemStack output = event.getRecipe().getResult();
	    	
	    	if (blockAbove.getType().equals(Material.WALL_SIGN)) { // if block above is a wall sign
	    		Sign sign = (Sign) blockAbove.getState();
	    		String group = sign.getLine(0);
	    		
	    		if (plugin.config.getCraftGroup(group) != null) { // if has crafting group
		    		if (plugin.config.getCraftGroup(group).contains(output.getData().getItemType().name())) {
		    			//can craft
		    		} else {
		    			cancelCraft(player, event, group);
		    		}
	    		} else { // if has no group
	    			if (plugin.config.useGlobalGroup() && plugin.config.getCraftGroup("global").contains(output.getData().getItemType().name())) {
	    				// can craft
	    			} else {
	    				cancelCraft(player, event, "global");
	    			}
	    		}
	        } else { // if not sign
	        	if (plugin.config.useGlobalGroup() && plugin.config.getCraftGroup("global").contains(output.getData().getItemType().name())) {
    				// can craft
    			} else {
    				cancelCraft(player, event, "global");
    			}
	        }
    	}
    }