[MC-100333] Entities from old (<= 1.5.2) worlds are killed when loaded in current versions due to a typo in the health data fixer Created: 30/Mar/16 Updated: 26/Jun/16 Resolved: 21/Jun/16
|Project:||Minecraft: Java Edition|
|Affects Version/s:||Minecraft 1.9.1, Minecraft 1.9.2, Minecraft 1.9.4, Minecraft 1.10|
|Fix Version/s:||Minecraft 1.10.1|
|Reporter:||Kademlia||Assignee:||[Mojang] Grum (Erik Broes)|
Entities in old worlds (created in versions older than 1.6, IE anything before or including 1.5.2) spontaneously die when loaded in Minecraft 1.10 or 1.9.4. This shouldn't happen, and they do not die if they were created (or more specifically saved) in a newer version before being loaded in 1.9.4.
This is caused by a typo in the health data fixer, which attempts to use a nonexistent tag named Heath (sic) if it cannot find a HealF tag.
1. Create a world in Minecraft 1.5.2 (or an earlier version). (Alternatively, download the attached one: World from 1_5_2.zip from
This is caused by a typo in the data fixer used to replace the HealF tag with the Health tag. It looks like its logic is to first check if there is a HealF tag, and then if so, use that value for the float Health tag. If there is no HealF tag, it first looks for a Health tag, and if that doesn't exist, it cancels the operation (there is no data for it to fix). But if there is a Health tag (which would be a short rather than a float as it is now), it tries to get the value of a tag named Heath (sic). Since that tag does not exist, it always gets a value of 0. It then uses that value and assigns it to a float tag named Health, which means that it gives the entity 0 health, killing it (this process does work with HealF though).
The HealF tag was introduced in 1.6, and prior to that a Health tag using a short was used; in 1.9 (specifically, 15w33a) the Health tag was changed to a float and HealF was deprecated.
Here's an annotated version of the relevant code snippet with MCP 1.9.4 names. In 1.10, this method is obfuscated as pi.a(dr).
Simply correct the Heath typo in the health data fixer. There is no way to recover entities that were killed when fixed by this fixer, however. (But if they were never loaded, then they will be fine).
|Comment by [Mod] redstonehelper [ 17/Jun/16 ]|
Updated description and summary to that of
|Comment by [Mod] Pokechu22 [ 17/Jun/16 ]|
I should have searched for duplicates with "Heath", not various things relating to entities dying. Whoops, didn't realize that this one existed.
|Comment by 이승우 [ 26/Jun/16 ]|
So, "Heath" is just a typing mistake?
|Comment by [Mod] Pokechu22 [ 26/Jun/16 ]|
@이승우: Yes, "Heath" was just a typo (it was replaced with "Health" in 1.10.1, fixing this bug).