The bug
The advancement trigger consume_item
is not working for single potion item stacks when consumed in Survival or Adventure mode.
How to reproduce
Download the attached data pack
and place it in the
datapacks
folder of your worldOpen the world and drink any potion in Survival mode
→ ❌ The advancement is not grantedDrink any potion in Creative mode
→ ✔ The advancement is granted as expected
Code analysis
Based on 1.12.2 decompiled using MCP 9.40
The method net.minecraft.item.ItemPotion.onItemUseFinish(ItemStack, World, EntityLivingBase)
reduces the stack size before applying the potion effects and testing advancement triggers. Therefore when the triggers are tested 0*potion
(acting like 0*air
) is compared.
Reducing the stack size should probably happen right before the glass bottle is added to the inventory.
Can confirm. This seems to affect all uses of the
nbt
field - most notably,"nbt":"{Potion:\"minecraft:swiftness\"}"
(i.e. testing the type of the potion). It also does NOT affect milk buckets (testing the name on them), which is interesting.