Uploaded image for project: 'Minecraft: Java Edition'
  1. Minecraft: Java Edition
  2. MC-131258

Furnace gives full experience even if items are removed partially from output slot

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • None
    • Minecraft 1.13-pre1, 1.15.2, 1.16.3, 24w38a
    • None
    • Confirmed
    • (Unassigned)

      If there are multiple items in the output slot and some of the stack is taken, e.g. by right clicking or pressing Q, the tracked recipe backlog will be fully cleared instead of just clearing the amount of recipes that matched the amount of items removed. The player will then get the experience for this entire backlog of recipes even though they didn't take all the items. Taking more items from the output slot gives no experience unless more is smelted, where in that case only those newer recipes' experience is given.

       

      Background:

      With the JSON smelting recipes in 1.13, the Furnace keeps track of the different recipes it has done in order to give the proper amount of experience when the player takes the result from the output slot.
       

      The NBT of a freshly placed Furnace contains the NBT Short tag:

      RecipesUsedSize: 0s

       

      When something is smelted, for example a Log into Charcoal, this value is increased by one and some additional tags are added to keep track of this recipe.

      RecipesUsedSize: 1s,
      RecipeLocation0: "minecraft:charcoal",
      RecipeAmount0: 1

       

      Smelting another Log will increase RecipeAmount0 by 1.

      RecipesUsedSize: 1s,
      RecipeLocation0: "minecraft:charcoal",
      RecipeAmount0: 2

       

      Assuming some Data Pack called melonpack adds a recipe to smelt, for example, Melons into Charcoal with the filename melon_to_charcoal.json, one can insert a Melon into a Furnace, allowing the results of both recipes to stack since they are the same item. Once done smelting, the NBT will look like this:

      RecipesUsedSize: 2s,
      RecipeLocation0: "minecraft:charcoal",
      RecipeAmount0: 2,
      RecipeLocation1: "melonpack:melon_to_charcoal",
      RecipeAmount1: 1 

       

      This recipe tracking is done so that once the player takes this stack of items out, they are given the total experience from all of the recipes. In this case, 2x the experience from minecraft:charcoal, and 1x the experience from melonpack:melon_to_charcoal.

       

            Unassigned Unassigned
            Virtuoel Virtuoel
            Votes:
            6 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              CHK: