The bug
The data fix / upgrader walker for the BlockEntityTag
of items (net.minecraft.util.datafix.walkers.BlockEntityTag
) is incomplete and incorrect.
Warnings like the following mean that it could not walk the block entity data because it did not recognize the block entity based on the item id.
[Client thread/WARN]: Unable to resolve BlockEntity for ItemStack: minecraft:comparator
Note: It is unclear why the client is logging this since the server should likely be doing the upgrade.
Problems
Block ids are used instead of item ids
Some entries use the block ids instead of item ids. The following lists use ❌ to indicate that an entry should be removed.
Old block entity id map
Maps from item id to the old block entity id, for example RecordPlayer
.
List last updated for 17w50a
Block id | Required action |
---|---|
lit_furnace | ❌ |
standing_sign | ❌ |
wall_sign | ❌ |
piston_head | ❌ |
daylight_detector_inverted | ❌ |
unpowered_comparator | ❌ |
powered_comparator |
|
standing_banner | ❌ |
wall_banner | ❌ |
end_portal | ❌ |
end_gateway | ❌ |
shield | ⚠️ Note |
New block entity id map
Maps from item id to the old block entity id, for example minecraft:jukebox
.
List last updated for 17w50a
Block id | Required action |
---|---|
lit_furnace | ❌ |
standing_sign | ❌ |
wall_sign | ❌ |
piston_head | ❌ |
daylight_detector_inverted | ❌ |
unpowered_comparator | ❌ |
powered_comparator |
|
standing_banner | ❌ |
wall_banner | ❌ |
end_portal | ❌ |
end_gateway | ❌ |
shield | ⚠️ Note |
Note to shields
Shields should possibly not even be contained in these maps since they have no block entity. For current data versions they should probably map to minecraft:banner
. In case their NBT structure changes at some point an data version check should be added.
minecraft:banner
is contained twice
The map for the new block entity ids contains a minecraft:banner
to minecraft:banner
entry twice.
Missing player head item ids
The map for the new block entity ids does not contain the item ids for the new splitted heads / skulls ids:
List last updated for 17w50a
skeleton_skull
wither_skeleton_skull
player_head
zombie_head
creeper_head
dragon_head
Missing bed item ids
The map for the new block entity ids does not contain the item ids for the new splitted bed ids.
Outdated entries not data version filtered
The map for the new block entity ids does not filter based on the data version, this means it walks for outdated entries like for example the flower pot which does not have a block entity anymore.
Attachments
Comments 14
The problem appears to be the data fix / upgrader walker for the BlockEntityTag
for items. I am going to change the report accordingly.
@@unknown could you please include the class name column when taking screenshots of the launcher next time. It could come in really handy.
I added 1.12.2 as affected version since it is affected by the block id used instead of item id too.
In 1.13pre1 I still had the output of armor_stand and comparator, since 1.13pre2 it is gone.
I can only confirm it fixed for armor_stand and comparator, not for the other things on the list.
Just updated a server from 1.15.2 to 1.16.2 and I had :
Unable to resolve BlockEntity for ItemStack: minecraft:dark_oak_sign
Unable to resolve BlockEntity for ItemStack: minecraft:birch_sign
Unable to resolve BlockEntity for ItemStack: minecraft:acacia_sign
The warns appeared only once though. Is it something that could possibly cause world corruption?
Is it something that could possibly cause world corruption?
It would likely not be corrupting the world, but at most make these affected items non-functional (i.e. placing them might not apply the NBT data correctly). However, I don't think there have been any NBT changes for signs in the recent versions which could cause any issues.
Good to know. This affects only items, not the respective blocks, right? I had some signs in my inventory that executed commands when right-clicked. It might have to do with that.
In 1.17.1 the Mojang class name appears to be net.minecraft.util.datafix.schemas.V99
.
It looks like at least some of the points mentioned in the description still apply. For example the map named ITEM_TO_BLOCKENTITY
still uses some block IDs (which do not exist as item IDs) as keys.
I am going to add 1.17.1 as affected version, though the description might in parts be outdated.
Can confirm. For me it happens with an armor_stand and a comparator. Tested in 17w49a.
I don't know which one of my worlds causes it either.