Mojira Archive
MCM-1289

The entity component "minecraft:giveable" have a higher priority value than "minecraft:interact"

Partner Rank: 1

Partner Team Reporting: Starfish Studios

Verification builds: R16 U1, U2, U3 (1.16.100+)

Summary:
The entity component "minecraft:giveable" have a higher priority value than "minecraft:interact" and than the components "minecraft:rideable" and "minecraft:sittable", having less priority.

Impact:
This issue prevents the component "minecraft:giveable" from working if the player right-clicks when an entity has the "minecraft:rideable" or "minecraft:sittable" component added, or if the entity has an available interaction in "minecraft:interact" with the same item listed in "minecraft:giveable". This error is blocking the player from being able to equip saddles and armors on their pets in upcoming Starfish Studios content.
Repro Steps:

  1. Download and install the attached behavior pack.
  2. Join a world with the behavior enabled and summon an adult horse /summon horse ~ ~ ~ custom:spawn_adult.
  3. Give yourself a golden apple /give @s golden_apple and feed this horse until it is tamed.
  4. Give yourself a saddle /give @s saddle.
  5. Right-click the horse with the saddle.
  6. Press Shift and again right-click the horse with the saddle.
  7. Once the saddle is equipped, give yourself a diamond horse armor /give @s diamond_horse_armor.
  8. Right-click the horse with the armor (no Shift pressed).
  9. You are now mounted on the horse. Press Shift to dismount.
  10. Press Shift and again right-click the horse with the diamond horse armor.

Repro Rate: 3/3

Observed Results:

  1. When clicking the horse with the saddle without Shift pressed, minecraft:interact works by playing the burp sound (and displaying the 'Saddle' button on touch screen devices), but minecraft:giveable does not work by not equipping the saddle.
  2. When clicking the horse with the saddle with Shift pressed, minecraft:giveable works because { } minecraft:interact > [ ] on_interact > { } 0 > { } on_interact > { } filters > [ ] all_of > { } 1 indicate for the interaction not to work when sneaking, and because minecraft:rideable doesn't work when sneaking by default.
  3. When clicking the horse with the diamond horse armor without Shift pressed, minecraft:rideable works by mounting the player on the horse, but minecraft:giveable does not work by not equipping the armor.
  4. When clicking the horse with the diamond horse armor with Shift pressed, minecraft:interact works by playing the burp sound (and displaying the 'Equip' button on touch screen devices), but minecraft:giveable does not work by not equipping the armor.

Expected Results:
The minecraft:giveable component should have the same priority value as minecraft:interact. Having more priority than minecraft:rideable (and than minecraft:sittable which currently has more priority), and working together with minecraft:interact. That is useful for adding sounds, triggering events or adding touch screen button text for the interaction, which when right-clicked should make minecraft:giveable work at the same time that minecraft:interact works (equipping an item in the entity and triggering the interaction). This was how it worked before!

Screenshots/Videos attached: No

Regression Builds:
This did not occur until 1.16.40.

Notes:
Codes added for tamed horse:

{ } horse.json > { } minecraft:entity > { } component_groups > { } minecraft:horse_tamed

"minecraft:giveable": {
  "triggers": {
    "items": [
      "saddle",
      "diamond_horse_armor"
    ]
  }
},
"minecraft:interact": {
  "interactions": [
    {
      "on_interact": {
        "filters": {
          "all_of": [
            { "test": "is_family", "subject": "other", "value": "player" },
            { "test": "is_sneaking", "subject": "other", "value": false },
            { "test": "has_equipment", "subject": "other", "domain": "hand", "value": "saddle" }
          ]
        }
      },
      "play_sounds": "burp",
      "interact_text": "Saddle"
    },
    {
      "on_interact": {
        "filters": {
          "all_of": [
            { "test": "is_family", "subject": "other", "value": "player" },
            { "test": "is_sneaking", "subject": "other", "value": true },
            { "test": "has_equipment", "subject": "other", "domain": "hand", "value": "diamond_horse_armor" }
          ]
        }
      },
      "play_sounds": "burp",
      "interact_text": "Equip"
    }
  ]
},

Works As Intended

Jean Lucas

2021-01-19, 11:31 PM

2021-02-05, 08:07 PM

2021-02-05, 08:07 PM

0

0

Future Release

-