I have a sequenced assembly that i use but idk if is possible for it to keep nbt when creating an item.
event.recipes.create.sequenced_assembly([
Item.of('spartanshields:bronze_basic_shield').withChance(100.0),
], 'spartanshields:copper_basic_shield', [
event.recipes.createFilling('spartanshields:bronze_basic_shield', ['spartanshields:bronze_basic_shield', Fluid.of('createbigcannons:molten_bronze', 90)]),
event.recipes.createPressing('spartanshields:copper_basic_shield', ['spartanshields:copper_basic_shield']),
]).transitionalItem('spartanshields:copper_basic_shield').loops(4)