Nbt Crafting (Fabric)

Nbt Crafting (Fabric)

630k Downloads

[bug] Shapeless recipe cannot resolve dollar reference

Jade-TheCat opened this issue ยท 1 comments

commented

Version
1.16.2
Describe the bug
de.siphalor.nbtcrafting.dollar.DollarEvaluationException: Could not resolve reference to nbt tag '$i0' with a shapeless recipe

To Reproduce

  1. Use this JSON:
    { "type": "crafting_shapeless", "ingredients": [ { "item": "yabm:backpack", "data": { "deny": { "Size": "$1.." } } }, { "item": "minecraft:gold_ingot" }, { "item": "minecraft:gold_ingot" }, { "item": "minecraft:gold_ingot" }, { "item": "minecraft:chest" } ], "result": { "item": "yabm:backpack", "count": 1, "data": { "$": { "value": "$i0", "paths": { "/Inventory\\[\\d+\\]/": "append" } }, "Size": 1 } } }
  2. When you insert the ingredients into the crafting table, the error appears in the logs and the merge is not performed on craft.

Expected behavior
Merge the Inventory tag of the ingredient backpack into the result backpack

Log
[21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: de.siphalor.nbtcrafting.dollar.DollarEvaluationException: Could not resolve reference to nbt tag '$i0' [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at de.siphalor.nbtcrafting.dollar.part.unary.ReferenceDollarPart.evaluate(ReferenceDollarPart.java:23) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at de.siphalor.nbtcrafting.dollar.Dollar.evaluate(Dollar.java:18) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at de.siphalor.nbtcrafting.dollar.type.MergeDollar.apply(MergeDollar.java:30) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at de.siphalor.nbtcrafting.api.RecipeUtil.applyDollars(RecipeUtil.java:102) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at de.siphalor.nbtcrafting.api.RecipeUtil.getDollarAppliedResult(RecipeUtil.java:41) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.recipe.ShapelessRecipe.handler$zdc001$craft(ShapelessRecipe.java:528) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.recipe.ShapelessRecipe.craft(ShapelessRecipe.java) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.recipe.ShapelessRecipe.craft(ShapelessRecipe.java:25) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.screen.CraftingScreenHandler.updateResult(CraftingScreenHandler.java:70) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.screen.CraftingScreenHandler.method_17401(CraftingScreenHandler.java:80) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.screen.ScreenHandlerContext.method_17394(ScreenHandlerContext.java:42) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.screen.ScreenHandlerContext$2.run(ScreenHandlerContext.java:29) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.screen.ScreenHandlerContext.run(ScreenHandlerContext.java:41) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.screen.CraftingScreenHandler.onContentChanged(CraftingScreenHandler.java:80) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.inventory.CraftingInventory.setStack(CraftingInventory.java:62) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.screen.slot.Slot.setStack(Slot.java:61) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.screen.ScreenHandler.method_30010(ScreenHandler.java:269) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.screen.ScreenHandler.onSlotClick(ScreenHandler.java:186) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.server.network.ServerPlayNetworkHandler.onClickWindow(ServerPlayNetworkHandler.java:1193) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.network.packet.c2s.play.ClickWindowC2SPacket.apply(ClickWindowC2SPacket.java:36) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.network.packet.c2s.play.ClickWindowC2SPacket.apply(ClickWindowC2SPacket.java:26) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.network.NetworkThreadUtils.method_11072(NetworkThreadUtils.java:20) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.server.ServerTask.run(ServerTask.java:17) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.util.thread.ThreadExecutor.executeTask(ThreadExecutor.java:136) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.util.thread.ReentrantThreadExecutor.executeTask(ReentrantThreadExecutor.java:22) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.server.MinecraftServer.executeTask(MinecraftServer.java:749) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.server.MinecraftServer.executeTask(MinecraftServer.java:1721) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.util.thread.ThreadExecutor.runTask(ThreadExecutor.java:109) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.server.MinecraftServer.method_20415(MinecraftServer.java:729) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.server.MinecraftServer.runTask(MinecraftServer.java:723) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.util.thread.ThreadExecutor.runTasks(ThreadExecutor.java:119) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.server.MinecraftServer.method_16208(MinecraftServer.java:709) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:663) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:224) [21:25:03] [Server thread/INFO] (Minecraft) [STDERR]: at java.lang.Thread.run(Thread.java:748)

Additional context
Using 2.0.0-rc.6+mc1.16.2-pre1 from Maven

commented

Oh, that's because merge expressions are not allowed to begin with a dollar.
Replace $i0 with i0.