Probably because the item is still being given to the inventory as 0/4/8/12 but you registered an item renderer for a different metadata value.
i.e. this chunk:
@SideOnly(Side.CLIENT)
public void getSubBlocks(Item itemIn, CreativeTabs tab, List<ItemStack> list)
{
// item , amount, meta
list.add(new ItemStack(itemIn));
list.add(new ItemStack(itemIn, 1, 4));
list.add(new ItemStack(itemIn, 1, 8));
list.add(new ItemStack(itemIn, 1, 12));
}
If you're going to change your metadata values in one place, you need to change them in the other. THIS IS IMPORTANT, IT IS NOT ARBITRARY.
Most importantly, you need to use the metadata values that your block actually drops when broken.
If it exists in your inventory, then you have an item.
item = new ItemMultiTexture(tudorSet, tudorSet, ModBlockTudorSet.subTypes;
Surprise, there it is.
In order to override the unlocalized name you need a custom ItemBlock class. Surprise!
Alternatively, pass a name function to the ItemMultiTexture's constructor. E.g. here is how vanilla handles the stone variants:
registerItemBlock(Blocks.STONE, (new ItemMultiTexture(Blocks.STONE, Blocks.STONE, new Function<ItemStack, String>()
{
@Nullable
public String apply(@Nullable ItemStack p_apply_1_)
{
return BlockStone.EnumType.byMetadata(p_apply_1_.getMetadata()).getUnlocalizedName();
}
})).setUnlocalizedName("stone"));