The Bug:
minecraft.used:minecraft.goat_horn doesn't increase when using goat horns.
Steps to Reproduce:
- Create a scoreboard objective for tracking the use of a goat horn and set it to display on the sidebar.
/scoreboard objectives add UseGoatHorn minecraft.used:minecraft.goat_horn
/scoreboard objectives setdisplay sidebar UseGoatHorn
- Obtain a goat horn and use it.
- Take note as to whether or not minecraft.used:minecraft.goat_horn increases when using goat horns.
Observed Behavior:
The scoreboard doesn't increase.
Expected Behavior:
The scoreboard would increase.
Code Analysis:
Code analysis by Avoma can be found below.
The following is based on a decompiled version of Minecraft 1.19 Pre-release 2 using Mojang mappings.
public class InstrumentItem extends Item { ... @Override public InteractionResultHolder<ItemStack> use(Level level, Player player, InteractionHand interactionHand) { ItemStack itemStack = player.getItemInHand(interactionHand); Optional<Holder<Instrument>> optional = this.getInstrument(itemStack); if (optional.isPresent()) { Instrument instrument = optional.get().value(); player.startUsingItem(interactionHand); InstrumentItem.play(level, player, instrument); player.getCooldowns().addCooldown(this, instrument.useDuration()); return InteractionResultHolder.consume(itemStack); } return InteractionResultHolder.fail(itemStack); } ...
If we look at the above class, we can see that the awardStat() method (the method responsible for incrementing player statistics) is never called throughout this piece of code, thus making minecraft.used:minecraft.goat_horn not increase when using goat horns.
Fix:
Simply calling the awardStat() method where appropriate within this piece of code will resolve this problem. The following line of code can be used to fix this issue.
player.awardStat(Stats.ITEM_USED.get(this));
- is duplicated by
-
MC-255784 criteria minecraft.used:minecraft.goat_horn not working
- Resolved