The bug
When using a loot table with the entry type dynamic
and the entry name contents
combined with the set_attributes
function on a shulker box with the /loot
command, the function also changes the items inside the shulker box.
How to reproduce
Put the attached loot table into a loaded datapack at
<datapack>\data\minecraft\loot_tables\blocks
Place a blue shulker box and fill it with a diamond helmet
Step on top of the shulker box and type the command
/loot give @s mine ~ ~-1 ~
in chat
This should leave the former item unchanged and create a new one with modified attributes.
Instead, it will cause the diamond helmet inside the shulker box to also only have +2 Armour unlike the former diamond helmet which had +3 Armour and +2 Armour Toughness.
Confirmed in 1.16.1 and 20w28a. Seems to affect every loot table function that doesn't change the item ID of the items it modifies, not just
set_attributes
. I have attached a datapack containing the provided loot table for easier reproduction.