PrismarineJS / PrismarineJS/node-minecraft-protocol

item_display metadata not read when head profile is present

Open
#1,380 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

possible bug
Dominant language
JavaScript
Stars
1.4k
Forks
290
Avg merge
4d 8h
Merged PRs (30d)
7

Description

[X] The FAQ doesn't contain a resolution to my issue

Versions

  • minecraft-protocol: 1.54.0
  • server: vanilla/spigot/paper 1.21.1
  • node: 22

Detailed description of a problem

Minecraft-protocol can currently not read item_display player heads when a profile is specified in the metadata.

When spawning this (I copied this as an example from a mineflayer issue):

summon block_display ~-0.5 ~-0.5 ~-0.5 {teleport_duration:2, Passengers:[{id:"minecraft:item_display",item:{id:"minecraft:player_head",Count:1,components:{"minecraft:profile":{id:[I;-1744031622,2084127869,-1680359937,1504765564],properties:[{name:"textures",value:"ewogICJ0aW1lc3RhbXAiIDogMTc0MDU3NzEyNjQ1MywKICAicHJvZmlsZUlkIiA6ICI4ZjllYTBhNWJhOGE0NTNkYTgzNTBmYjRmNzVmOTJiOSIsCiAgInByb2ZpbGVOYW1lIiA6ICJDeWJlck1pbm55IiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2MwOWU3OWZlZWEwNjFjOGFkNGU4MzE1YTMxYzJlNjg0Y2IwNGE2YTY1OWNjM2YxNTk2YzYwOTE5NjkxNDVkZDEiLAogICAgICAibWV0YWRhdGEiIDogewogICAgICAgICJtb2RlbCIgOiAic2xpbSIKICAgICAgfQogICAgfQogIH0KfQ=="}]}}},item_display:"none",transformation:[0.2165063509f,-0.25f,0f,0.428125f,0.125f,0.4330127019f,0f,0.25f,0f,0f,0.127f,0f,0f,0f,0f,1f]},{id:"minecraft:item_display",item:{id:"minecraft:player_head",Count:1,components:{"minecraft:profile":{id:[I;-1659641422,-1328908116,1574678496,1025501856],properties:[{name:"textures",value:"ewogICJ0aW1lc3RhbXAiIDogMTc0MDc0NzQ3OTkyMiwKICAicHJvZmlsZUlkIiA6ICJjNWVmOGQ1NDIwOWY0OTdlYWYzYzA1NjA3MjZhYTMwNSIsCiAgInByb2ZpbGVOYW1lIiA6ICJNaXNoX0RheCIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS84YzFmNzJiMDlhODNkOTc4NTdmZDRlNmZmNDU1NDQ0ODFlZTE4MzU3MTVkOTNhZWViZDA4NTM3MDdmMGQxYTAzIiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0="}]}}},item_display:"none",transformation:[1f,0f,0f,0.125f,0f,0.1875f,0f,0.3125f,0f,0f,0.1875f,-0.0625f,0f,0f,0f,1f]},{id:"minecraft:item_display",item:{id:"minecraft:player_head",Count:1,components:{"minecraft:profile":{id:[I;-417829621,499414305,599967922,228796151],properties:[{name:"textures",value:"ewogICJ0aW1lc3RhbXAiIDogMTc0MTI2MjY1ODI2MCwKICAicHJvZmlsZUlkIiA6ICJjYmNkNDQzZGE1NTI0OGU3ODM3NWNmZjYwMmQzZWI0NyIsCiAgInByb2ZpbGVOYW1lIiA6ICJPX1JlaSIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zYzM2ZjM5MzUyNGE0MTdiYWFhMDg3MWFkZTIzZGE0ZGM5ZDllM2Q3OTE5NGJjMDcyNWExM2VmODlkM2E2MTFkIiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0="}]}}},item_display:"none",transformation:[0.375f,0f,0f,0.28125f,0f,0.125f,0f,0.21875f,0f,0f,0.25f,0f,0f,0f,0f,1f]},{id:"minecraft:item_display",item:{id:"minecraft:player_head",Count:1,components:{"minecraft:profile":{id:[I;-1712792595,-422447315,880239510,-224738496],properties:[{name:"textures",value:"ewogICJ0aW1lc3RhbXAiIDogMTc0MTI2MjY2Mjg3NSwKICAicHJvZmlsZUlkIiA6ICI2MTU1NTMyOTY2OWM0ZDA5YmFiOGJlNDNkYWUwYTRjMyIsCiAgInByb2ZpbGVOYW1lIiA6ICJmaTAxNSIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9jYWVjNjA2MWU2OTkyOWZmZTdhOGY5YjY4YTg2MWIwMWQ4NWZhZWY1MjZkNzkzMzNkNjYxYWM0NmUxZjk4YTYiLAogICAgICAibWV0YWRhdGEiIDogewogICAgICAgICJtb2RlbCIgOiAic2xpbSIKICAgICAgfQogICAgfQogIH0KfQ=="}]}}},item_display:"none",transformation:[0f,-0.125f,0f,0.375f,0.25f,0f,0f,0.21875f,0f,0f,0.3125f,0f,0f,0f,0f,1f]},{id:"minecraft:item_display",item:{id:"minecraft:player_head",Count:1,components:{"minecraft:profile":{id:[I;-425608159,443406303,1613921337,-740588461],properties:[{name:"textures",value:"ewogICJ0aW1lc3RhbXAiIDogMTc0MTI2MjY2NzgzNSwKICAicHJvZmlsZUlkIiA6ICIyYjcyZWYyYWUzMmQ0Zjc1OGEyMThlMDI4MTViYmNjZSIsCiAgInByb2ZpbGVOYW1lIiA6ICJ2b2xrb2RhZl82MyIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS83NDVkZGJkODE1YTE3ZjhjZmE3ZjUyNjNhYmIzOWY2MTFmOTNmMjhhZmI1ZWUwMTYwN2YxOTRkYzI2ZWRiMDk1IiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0="}]}}},item_display:"none",transformation:[0.0625f,-0.0009526279f,0f,0.453125f,0.1082531755f,0.00055f,0f,0.308125f,0f,0f,0.125f,-0.046875f,0f,0f,0f,1f],view_range:0.2f},{id:"minecraft:item_display",item:{id:"minecraft:player_head",Count:1,components:{"minecraft:profile":{id:[I;969493673,-1043155156,1672834615,1039622207],properties:[{name:"textures",value:"ewogICJ0aW1lc3RhbXAiIDogMTc0MDU3NDg4NTE1OSwKICAicHJvZmlsZUlkIiA6ICJkNDAwODgyZmY3OGQ0ZGVhYjliMGNlMTc2YmQ1ZTQyMyIsCiAgInByb2ZpbGVOYW1lIiA6ICJQcmF4aWJldGwiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjJlNDA1Y2U3MzQxZDM4NmM2ZmM5OGNjNjMwMzMwOWY0M2JkNDhiNWE2M2FhZTFkZWU5ZmQ3OWM1NWQ1MTU3MCIKICAgIH0KICB9Cn0="}]}}},item_display:"none",transformation:[4.6e-9f,0f,0.125f,0.40625f,0.125f,0f,-4.6e-9f,0.15625f,0f,0.0011f,0f,0f,0f,0f,0f,1f],view_range:0.2f},{id:"minecraft:item_display",item:{id:"minecraft:player_head",Count:1,components:{"minecraft:profile":{id:[I;1926620306,-1951415472,1081643122,-1234955781],properties:[{name:"textures",value:"ewogICJ0aW1lc3RhbXAiIDogMTc0MDU3NDg5MTA2NSwKICAicHJvZmlsZUlkIiA6ICJkZjM1MjcwM2MxMzI0MjYwYjQ1NGQ3ODI3MjU5YjVhOSIsCiAgInByb2ZpbGVOYW1lIiA6ICJMdW5jaGVyMTU1IiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzdlZTAyZjA2MTRlODkwM2IwMjE2OGQ3YTgyNTc1OWVkZjk0ZTM5NmQzNDNlYmRhMzk3ZTdjY2FmNWZkYTEwNTAiCiAgICB9CiAgfQp9"}]}}},item_display:"none",transformation:[4.6e-9f,0f,0.125f,0.28125f,0.125f,0f,-4.6e-9f,0.15625f,0f,0.0011f,0f,0f,0f,0f,0f,1f],view_range:0.2f},{id:"minecraft:item_display",item:{id:"minecraft:player_head",Count:1,components:{"minecraft:profile":{id:[I;-281848655,2062453722,1699536097,-1187231155],properties:[{name:"textures",value:"ewogICJ0aW1lc3RhbXAiIDogMTc0MDU3NDg4NTE1OSwKICAicHJvZmlsZUlkIiA6ICJkNDAwODgyZmY3OGQ0ZGVhYjliMGNlMTc2YmQ1ZTQyMyIsCiAgInByb2ZpbGVOYW1lIiA6ICJQcmF4aWJldGwiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjJlNDA1Y2U3MzQxZDM4NmM2ZmM5OGNjNjMwMzMwOWY0M2JkNDhiNWE2M2FhZTFkZWU5ZmQ3OWM1NWQ1MTU3MCIKICAgIH0KICB9Cn0="}]}}},item_display:"none",transformation:[3.7e-9f,0f,0.125f,0.34375f,0.125f,0f,-3.7e-9f,0.09375f,0f,0.0011f,0f,0f,0f,0f,0f,1f],view_range:0.2f},{id:"minecraft:item_display",item:{id:"minecraft:player_head",Count:1,components:{"minecraft:profile":{id:[I;-1996915133,-923970283,403257776,1021120216],properties:[{name:"textures",value:"ewogICJ0aW1lc3RhbXAiIDogMTc0MDc0NzQ3OTkyMiwKICAicHJvZmlsZUlkIiA6ICJjNWVmOGQ1NDIwOWY0OTdlYWYzYzA1NjA3MjZhYTMwNSIsCiAgInByb2ZpbGVOYW1lIiA6ICJNaXNoX0RheCIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS84YzFmNzJiMDlhODNkOTc4NTdmZDRlNmZmNDU1NDQ0ODFlZTE4MzU3MTVkOTNhZWViZDA4NTM3MDdmMGQxYTAzIiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0="}]}}},item_display:"none",transformation:[1f,0f,0f,0.125f,0f,0.1875f,0f,0.3125f,0f,0f,0.1875f,0.0625f,0f,0f,0f,1f]},{id:"minecraft:item_display",item:{id:"minecraft:player_head",Count:1,components:{"minecraft:profile":{id:[I;1808043836,1307451922,1086837709,401940789],properties:[{name:"textures",value:"ewogICJ0aW1lc3RhbXAiIDogMTc0MTI2MjY3MjY3OCwKICAicHJvZmlsZUlkIiA6ICIwZWQ2MDFlMDhjZTM0YjRkYWUxZmI4MDljZmEwNTM5NiIsCiAgInByb2ZpbGVOYW1lIiA6ICJOZWVkTW9yZUFjY291bnRzIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2YwOGExZTU2ZmVhYzBmNDM2OTNkYWM4MTJmMzJhZmVmMTY0MDdlZTExODIxYmYwNDA4YTkyMjE1OTY1ZjRmZDQiLAogICAgICAibWV0YWRhdGEiIDogewogICAgICAgICJtb2RlbCIgOiAic2xpbSIKICAgICAgfQogICAgfQogIH0KfQ=="}]}}},item_display:"none",transformation:[0.0625f,-0.0009526279f,0f,0.453125f,0.1082531755f,0.00055f,0f,0.308125f,0f,0f,0.125f,0.046875f,0f,0f,0f,1f],view_range:0.2f},{id:"minecraft:item_display",item:{id:"minecraft:player_head",Count:1,components:{"minecraft:profile":{id:[I;1739305844,82696078,1473221993,-1870441528],properties:[{name:"textures",value:"ewogICJ0aW1lc3RhbXAiIDogMTc0MTI2MjY2NzgzNSwKICAicHJvZmlsZUlkIiA6ICIyYjcyZWYyYWUzMmQ0Zjc1OGEyMThlMDI4MTViYmNjZSIsCiAgInByb2ZpbGVOYW1lIiA6ICJ2b2xrb2RhZl82MyIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS83NDVkZGJkODE1YTE3ZjhjZmE3ZjUyNjNhYmIzOWY2MTFmOTNmMjhhZmI1ZWUwMTYwN2YxOTRkYzI2ZWRiMDk1IiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0="}]}}},item_display:"none",transformation:[0f,-0.125f,0f,0.125f,0.125f,0f,0f,0.28125f,0f,0f,0.125f,0f,0f,0f,0f,1f],view_range:0.2f},{id:"minecraft:item_display",item:{id:"minecraft:player_head",Count:1,components:{"minecraft:profile":{id:[I;-311039284,-1420681984,-1844946264,-424616257],properties:[{name:"textures",value:"ewogICJ0aW1lc3RhbXAiIDogMTc0MTI2MjY2NzgzNSwKICAicHJvZmlsZUlkIiA6ICIyYjcyZWYyYWUzMmQ0Zjc1OGEyMThlMDI4MTViYmNjZSIsCiAgInByb2ZpbGVOYW1lIiA6ICJ2b2xrb2RhZl82MyIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS83NDVkZGJkODE1YTE3ZjhjZmE3ZjUyNjNhYmIzOWY2MTFmOTNmMjhhZmI1ZWUwMTYwN2YxOTRkYzI2ZWRiMDk1IiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0="}]}}},item_display:"none",transformation:[0f,-0.125f,0f,-0.0625f,0.125f,0f,0f,0.28125f,0f,0f,0.125f,0f,0f,0f,0f,1f],view_range:0.2f}]}

It can not read the 'children' (passengers) entity metadatas because the profile is present. When stripping all components:profile stuff, minecraft-protocol can correctly read the metadata again. However, I need to get metadata of item_display heads with profiles

Current code

// See that entity_metadata 
  bot._client.on('entity_metadata', (packet) => {
    console.log(`[entity_metadata] Entity: ${packet.entityId}, Metadata:`, packet.metadata || 'MISSING')
  })

// or do this 5 seconds after bot spawn:
const itemDisplays = Object.values(bot.entities).filter(e => e.name === 'item_display')
 itemDisplays.map(display => {
    console.log('\n')
    console.log(getTransformation(display.metadata))
  })

Expected behavior

The protocol should read metadata of item_display entities even when it has a profile component

Additional context

Thanks in advance for help

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the problem using the entity_metadata listener and the itemDisplays lookup shown in the issue, comparing heads with and without the profile component. Trace where entity metadata and passenger entities stop being read, then verify that item_display metadata remains available when profiles are present.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.