Your facing value from getStateFromMeta doesn't take account of the Y axis. Do this
@Override
public IBlockState getStateFromMeta(int meta) {
EnumFacing enumFacing = EnumFacing.getFront(meta);
if (enumFacing.getAxis() == EnumFacing.Axis.Y) {
enumFacing = EnumFacing.NORTH;
}
return this.getDefaultState().withProperty(FACING, enumFacing);
}
Also you should set default blockstate when a block gets added onto the world.
@Override
public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state)
{
this.setDefaultFacing(worldIn, pos, state);
}