PrismarineJS / PrismarineJS/node-minecraft-protocol
item_display metadata not read when head profile is present
Nobody has claimed this yet.
- 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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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