public Sign findNearBySign( Block var1, String var2 )
	{
		Sign found = null;
		
		List<Block> possible = new ArrayList<Block>();
		
		if ( var1 == null )
			return null;
		
		possible.add( var1.getRelative( BlockFace.UP ) );
		possible.add( var1.getRelative( BlockFace.NORTH ) );
		possible.add( var1.getRelative( BlockFace.EAST ) );
		possible.add( var1.getRelative( BlockFace.SOUTH ) );
		possible.add( var1.getRelative( BlockFace.WEST ) );
		possible.add( var1.getRelative( BlockFace.NORTH_EAST ) );
		possible.add( var1.getRelative( BlockFace.NORTH_WEST ) );
		possible.add( var1.getRelative( BlockFace.SOUTH_EAST ) );
		possible.add( var1.getRelative( BlockFace.SOUTH_WEST ) );
		
		Block level1 = var1.getRelative( BlockFace.UP );
		if ( level1 != null )
		{
			possible.add( level1 );
			possible.add( level1.getRelative( BlockFace.UP ) );
			possible.add( level1.getRelative( BlockFace.NORTH ) );
			possible.add( level1.getRelative( BlockFace.EAST ) );
			possible.add( level1.getRelative( BlockFace.SOUTH ) );
			possible.add( level1.getRelative( BlockFace.WEST ) );
			possible.add( level1.getRelative( BlockFace.NORTH_EAST ) );
			possible.add( level1.getRelative( BlockFace.NORTH_WEST ) );
			possible.add( level1.getRelative( BlockFace.SOUTH_EAST ) );
			possible.add( level1.getRelative( BlockFace.SOUTH_WEST ) );
		}
		
		Block level2 = var1.getRelative( BlockFace.DOWN );
		if ( level2 != null )
		{
			possible.add( level2 );
			possible.add( level2.getRelative( BlockFace.UP ) );
			possible.add( level2.getRelative( BlockFace.NORTH ) );
			possible.add( level2.getRelative( BlockFace.EAST ) );
			possible.add( level2.getRelative( BlockFace.SOUTH ) );
			possible.add( level2.getRelative( BlockFace.WEST ) );
			possible.add( level2.getRelative( BlockFace.NORTH_EAST ) );
			possible.add( level2.getRelative( BlockFace.NORTH_WEST ) );
			possible.add( level2.getRelative( BlockFace.SOUTH_EAST ) );
			possible.add( level2.getRelative( BlockFace.SOUTH_WEST ) );
		}
		
		if ( level2.getRelative( BlockFace.DOWN ) != null )
			possible.add( level2.getRelative( BlockFace.DOWN ) );
		
		for ( Block sign : possible )
		{
			if ( sign.getState() instanceof Sign )
			{
				found = (Sign) sign.getState();
				
				if ( var2 == null )
					break; // Any found sign is okay
					
				if ( found.getLine( 0 ).replaceAll( ChatColor.GOLD.toString(), "" ).equalsIgnoreCase( var2 ) )
					break;
				else
					found = null;
			}
		}
		
		return found;
	}