Uploaded image for project: 'Minecraft: Java Edition'
  1. Minecraft: Java Edition
  2. MC-233276

You can feed adult donkeys, horses, llamas or mules with maximum Temper value, but hand animation and animal eating animation/sounds are not played



    • Bug
    • Resolution: Unresolved
    • None
    • 1.17.1, 21w37a, 21w38a, 21w39a, 21w40a, 21w41a, 21w42a, 21w43a, 21w44a, 1.18 Pre-release 1, 1.18 Pre-release 2, 1.18 Pre-release 4, 1.18 Pre-release 5, 1.18 Pre-release 6, 1.18 Pre-release 8, 1.18 Release Candidate 3, 1.18, 1.18.1 Release Candidate 2, 1.18.1, 22w03a, 22w06a, 1.18.2 Pre-release 1, 22w11a, 22w17a, 22w18a, 1.19 Pre-release 1, 1.19, 1.19.1 Pre-release 5, 1.19.2, 22w42a, 22w46a
    • Confirmed
    • Player Animation, Sound


      The bug

      You can feed adult donkeys, horses or mules with maximum Temper value. Furthermore, no visual feedback (hand animation and animal eating animation/sounds) is played though the hay bales/sugar are actually consumed.

      The distinction of this issue from MC-93825 is that it is NOT a desync, and it is not MC-236341 as it happens only with a high temper value, and all food exhibits this behavior. However, sometimes golden carrots do play animation and sounds on the first time.

      To reproduce

      1. Summon a donkey, horse, llama or mule with a Temper value of 100, e.g.
        /summon horse ~ ~ ~ {Temper:100}
      2. Give the animal any food.
        Very rarely, animations and sounds will be played one time.
        No animations and sounds are played.
      3. Notice how the food is actually consumed, i.e. it is not a desync.

      Expected result

      Animations and sounds should be played, or you should not be able to feed said animal (if it is intended that you cannot feed AbstractHorses with a high Temper value, the item should not be consumed and removed from the player's inventory.)

      Analysis (tentative)

      I think that this is the piece of code that causes the issue, but I might be wrong.

      net.minecraft.world.entity.animal.horse.AbstractHorse.java (Mojang mappings, 1.18-pre1)
      protected boolean handleEating(Player $$0, ItemStack $$1) {
              boolean $$2 = false;
              if ($$5 > 0 && ($$2 || !this.isTamed()) && this.getTemper() < this.getMaxTemper()) {
                  $$2 = true;
                  if (!this.level.isClientSide) {
             if ($$2) {
                  this.gameEvent(GameEvent.EAT, this.eyeBlockPosition());

      If the animal's temper is equal or more than its max temper and it is not tamed, $$2 is not set to true, so the game event and animations will not play. At least, this is what I understood.


        Issue Links



              Unassigned Unassigned
              ampolive [Mod] ampolive
              8 Vote for this issue
              4 Start watching this issue