mojira.dev
MC-250943

minecraft.used:minecraft.goat_horn doesn't increase when using goat horns

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 @unknown can be found below.

The following is based on a decompiled version of Minecraft 1.19 Pre-release 2 using Mojang mappings.

net.minecraft.world.item.InstrumentItem.java

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));

Attachments

Comments 8

I got the same problem 

Yep I found the same bug while testing, I hope this gets fixed quickly

I also had same problem. I was using command and goat horn with scoreboard, but it didn't work. I hope this could be fixed in 1.19.1. 

Same problem, this issue is also present in 1.19.1

Can confirm in 1.19.2, I really hope they fix this swiftly.

Following on from my code analysis, I've double-checked my proposed fix and I can confidently confirm that it's fully functioning and works as expected, so I've attached two screenshots to this report, one of which shows the current code and the other that shows the fixed code. I feel this information may be quite insightful hence my reasoning for providing it. 🙂

[media][media]

Hi, just wanted to confirm I experience the bug as well in 1.19.2.

Set up a scoreboard objective to test for 'minecraft.used:minecraft.goat_horn' and the score does not increase after using a goat horn.

The number of times used in statistics also does not increase for goat horns.

Hope this gets fixed soon!

This is already fixed in the snapshots.

Avoma

v-manilsson

Confirmed

Normal

Statistics

goat_horn

22w17a, 22w18a, 22w19a, 1.19 Pre-release 1, 1.19 Pre-release 2, ..., 1.19.1 Pre-release 1, 1.19.1 Pre-release 2, 1.19.1 Pre-release 5, 1.19.1, 1.19.2

22w42a

Retrieved