I cannot assist too much but had found this code on Tutorials/Metadata Based Subblocks where it dealt with metadata shapeless recipes. It appears you will need to do it for each sub-type according to that page and the example presented.
Here's what the page showed for a multi-block (block with metadata)
GameRegistry.registerBlock(multiBlock, MultiItemBlock.class);
for (int ix = 0; ix < 16; ix++) {
ItemStack cloth = new ItemStack(Block.cloth, 1, ix);
ItemStack multiBlockStack = new ItemStack(multiBlock, 1, ix);
GameRegistry.addShapelessRecipe(multiBlockStack, cloth, cloth);
LanguageRegistry.addName(multiBlockStack, multiBlockNames[multiBlockStack.getItemDamage()]);
}