docs: public static boolean attemptSmelting(EntityPlayerMP player, ItemStack input)
      {
          if (player == null || input == null)
              return false;
          List<ItemStack> ingredients = new ArrayList<ItemStack>();
          ingredients.add(input);
          ItemStack isOutput = (ItemStack)FurnaceRecipes.instance().getSmeltingList().get(input);
          if (isOutput == null)
              return false;
          int cookingTime = 200;  // Seems to be hard-coded in TileEntityFurnace.
          if (playerHasIngredients(player, ingredients) && totalBurnTimeInInventory(player) >= cookingTime)
          {
              removeIngredientsFromPlayer(player, ingredients);
              burnInventory(player, cookingTime, input);
  
              ItemStack resultForInventory = isOutput.copy();
              ItemStack resultForReward = isOutput.copy();
              player.inventory.addItemStackToInventory(resultForInventory);
              RewardForCollectingItemImplementation.GainItemEvent event = new RewardForCollectingItemImplementation.GainItemEvent(resultForReward);
              MinecraftForge.EVENT_BUS.post(event);
  
              return true;
          }
          return false;
      }