docs: static IBlockState applyFacing(IBlockState state, Facing facing)
      {
          for (IProperty prop : state.getProperties().keySet())
          {
              if (prop.getName().equals("facing"))
              {
                  if (prop.getValueClass() == EnumFacing.class)
                  {
                      EnumFacing current = (EnumFacing) state.getValue(prop);
                      if (!current.getName().equalsIgnoreCase(facing.name()))
                      {
                          return state.withProperty(prop, EnumFacing.valueOf(facing.name()));
                      }
                  }
                  else if (prop.getValueClass() == EnumOrientation.class)
                  {
                      EnumOrientation current = (EnumOrientation) state.getValue(prop);
                      if (!current.getName().equalsIgnoreCase(facing.name()))
                      {
                          return state.withProperty(prop, EnumOrientation.valueOf(facing.name()));
                      }
                  }
              }
          }
          return state;
      }