docs: public static DrawBlock getDrawBlockFromBlockState(IBlockState state, List<IProperty> extraProperties)
      {
          if (state == null)
              return null;
  
          DrawBlock block = new DrawBlock();
          Object blockName = Block.REGISTRY.getNameForObject(state.getBlock());
          if (blockName instanceof ResourceLocation)
          {
              String name = ((ResourceLocation)blockName).getResourcePath();
              BlockType type = BlockType.fromValue(name);
              block.setType(type);
          }
  
          Colour col = null;
          Variation var = null;
          Facing face = null;
  
          // Add properties:
          for (IProperty prop : state.getProperties().keySet())
          {
              String propVal = state.getValue(prop).toString();
              boolean matched = false;
              // Try colour first:
              if (col == null)
              {
                  col = attemptToGetAsColour(propVal);
                  if (col != null)
                      matched = true;
              }
              // Then variant:
              if (!matched && var == null)
              {
                  var = attemptToGetAsVariant(propVal);
                  if (var != null)
                      matched = true;
              }
              // Then facing:
              if (!matched && face == null)
              {
                  face = attemptToGetAsFacing(propVal);
                  if (face != null)
                      matched = true;
              }
              if (!matched)
              {
                  if (extraProperties != null)
                      extraProperties.add(prop);
              }
          }
          if (col != null)
              block.setColour(col);
          if (var != null)
              block.setVariant(var);
          if (face != null)
              block.setFace(face);
          return block;
      }