Две команды:
1. /execute as @e[type=minecraft:item,nbt={Item:{id:"minecraft:grass_block",Count:1b}}] at @s if entity @e[type=minecraft:item,nbt={Item:{id:"minecraft:stone",Count:1b}},distance=..1] run summon minecraft:item ~ ~ ~ {Tags:["i1"],Item:{id:"minecraft:iron_ingot",Count:1b}}
2. /execute as @e[type=minecraft:item,nbt={Item:{id:"minecraft:grass_block",Count:1b}}] at @s if entity @e[type=minecraft:item,nbt={Item:{id:"minecraft:stone",Count:1b}},distance=..1] run kill @e[distance=..1,type=minecraft:item,tag=!i1]
@e[type=minecraft:item,nbt={Item:{id:"minecraft:grass_block",Count:1b}}] - основной предмет от которого будет работать команда
if entity @e[type=minecraft:item,nbt={Item:{id:"minecraft:stone",Count:1b}},distance=..1] - вторичный предмет. Это можно прописать, если в крафте больше 2 предметов (можно перевести как: "если находится предмет[блок травы, в количестве 1 штуки ] в радиусе менее одного блока")
summon minecraft:item ~ ~ ~ {Tags:["i1"],Item:{id:"minecraft:iron_ingot",Count:1b}} - появление нового предмета при крафте
kill @e[distance=..1,type=minecraft:item,tag=!i1] - убийство предметов, участвовавших в крафте
minecraft:grass_block - id предмета который участвует в крафте/получается при крафте
Count:1b - количество предмета
1 команда 2 команда
\/ \/
в этом примере из блока травы и камня получается железный слиток