Lightning gives AI to Witches and Zombie Pigman that were originally Pigs and Villagers that had NoAI set to 1
Lightning can give AI to pigs or villagers who originally had the NoAI NBT tag set to 1.
What I expected to happen was...:
The AI-less pigs or villagers stay at their respective forms when they are struck by lightning.
What actually happened was...:
The AI-less pig or villager actually changed into a zombie pigman or witch with AI.
Steps to Reproduce:
1. Summon a pig or villager using /summon ~ ~ ~ Pig
or /summon ~ ~ ~ Villager
{NoAI:1}2. Summon a lightning bolt using /summon LightningBolt.
3. The two mobs become a witch or zombie pigman with AI.
Environment
Java 7.55
Windows 7
Linked Issues
Created Issue:
Lightning gives AI to Witches and Zombie Pigman that were originally Pigs and Villagers that had NoAI set to 0
Lightning can give AI to pigs or villagers who originally had the NoAI NBT tag set to 1.
What I expected to happen was...:
The AI-less pigs or villagers stay at their respective forms when they are being struck by lightning.What actually happened was...:
The AI-less pig or villager actually changed into a zombie pigman or witch with AI.Steps to Reproduce:
{NoAi:1}
1. Summon a pig or villager using /summon ~ ~ ~ Pigor /summon ~ ~ ~ Villager
{NoAI:1}2. Summon a lightning bolt using /summon LightningBolt.
3. The two mobs become a witch or zombie pigman with AI.
Environment
Java 7.55
Windows 7
Lightning gives AI to Witches and Zombie Pigman that were originally Pigs and Villagers that had NoAI set to0Lightning gives AI to Witches and Zombie Pigman that were originally Pigs and Villagers that had NoAI set to 1
Lightning can give AI to pigs or villagers who originally had the NoAI NBT tag set to 1.
What I expected to happen was...:
The AI-less pigs or villagers stay at their respective forms when they arebeingstruck by lightning.What actually happened was...:
The AI-less pig or villager actually changed into a zombie pigman or witch with AI.Steps to Reproduce:
{NoAi:1}
1. Summon a pig or villager using /summon ~ ~ ~ Pigor /summon ~ ~ ~ Villager
{NoAI:1}2. Summon a lightning bolt using /summon LightningBolt.
3. The two mobs become a witch or zombie pigman with AI.
is duplicated by
relates to
is duplicated by
relates to
relates to
The bug
When a mob transforms into another mob (ex. zombie villager → villager, mooshroom → cow), it loses most of its NBT tags. This also affects conversions to the same mob, like slimes and magma cubes splitting.
It is worth noting CustomName and NoAI are preserved (MC-6773 & MC-67437), so other tags are expected to be saved as well.
Examples
The following is a list of tags that aren't transferred between entities.
| From | Husk | Zombie | Skeleton | Zombie Villager | Villager | Villager | Pig | Piglin | Piglin Brute | Hoglin | Slime | Magma Cube | Tadpole | Mooshroom |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| To | Zombie | Drowned | Stray | Villager | Zombie Villager | Witch | Zombified Piglin | Zombified Piglin | Zombified Piglin | Zoglin | Smaller Slime | Smaller Magame Cube | Frog | Cow |
| AbsorptionAmount | ||||||||||||||
| active_effects | ||||||||||||||
| Age, IsBaby | N/A | N/A | N/A | N/A | N/A | N/A | ||||||||
| AngrTime, Brain.memories.minecraft:angry_at.ttl | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | ||
| AngryAt, Brain.memories.minecraft:angry_at.value | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | ||
| ArmorItems | N/A19 | N/A19 | ||||||||||||
| ArmorDropChances | ||||||||||||||
| Attributes | ||||||||||||||
| CanBreakDoors | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | ||
| CanPickUpLoot | ||||||||||||||
| CustomName | ||||||||||||||
| CustomNameVisible | ||||||||||||||
| DeathLootTable | ||||||||||||||
| DeathLootTableSeed | ||||||||||||||
| FallFlying | N/A19 | N/A19 | ||||||||||||
| Fire | N/A5 | N/A15 | N/A15 | N/A15 | N/A15 | N/A23 | ||||||||
| ForcedAge | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | |
| Gossips | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | ||
| HandItems | N/A19 | N/A19 | ||||||||||||
| HandDropChances | ||||||||||||||
| Health | N/A10 | N/A21 | N/A21 | |||||||||||
| HurtByTimestamp | ||||||||||||||
| HurtTime | ||||||||||||||
| Invulnerable | N/A10 | |||||||||||||
| Leash | ||||||||||||||
| LeftHanded | ||||||||||||||
| Motion | ||||||||||||||
| NoAI | N/A4 | N/A4 | N/A6 | N/A17 | N/A17 | N/A18 | ||||||||
| NoGravity | ||||||||||||||
| Offers | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | ||
| OnGround | ||||||||||||||
| Passengers1 | N/A | N/A | ||||||||||||
| PersistenceRequired | ||||||||||||||
| PortalCooldown | ||||||||||||||
| RootVehicle2 | ||||||||||||||
| Rotation3 | ||||||||||||||
| SleepingX, SleepingY, SleepingZ | ||||||||||||||
| Silent | ||||||||||||||
| Tags | ||||||||||||||
| UUID | ||||||||||||||
| VillagerData | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | ||
| Xp | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | ||
| wasOnGround | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
1 See MC-193083.
2 Not an actual tag saved on mobs, but it's the corresponding tag name on player data: the vehicle this entity rides, see also MC-193083.
3 Desynced, see MC-248587.
4 Cannot be converted (even when setting DrownedConversionTime with commands), see MC-148935, consider to only not trigger/count down the timer if NoAI is present, and allow value 0 to convert.
5 Skeletons MUST be in powdered snow to convert, even via commands. Powdered snow extinguishes burning mobs.
6 Cannot be converted (even when setting StrayConversionTime with commands), consider to only not trigger/count down the timer if NoAI is present, and allow value 0 to convert.
7 Since zombie villagers use IsBaby instead of Age, the time until growing up/being able to breed again is lost. Age gets set to 0 for adults and -24000 for babies upon converting to villagers.
8 The equipment is not dropped, nor brought over to the new form.
9 Always 1b, MC-73178.
10 Mob needs to die to convert, cannot be converted by creative players.
11 MC-183860, fixed.
12 MC-163767,fixed
13 MC-67437, fixed.
14 Always 1b, MC-239883, this could be resolved by making all villagers that spawned naturally be persistent instead and copying the value over.
15 Converted-to mob cannot burn, if this behavior will ever be toggle-able (for example via entity type tag), this should be synchronized though.
16 Always 1b.
17 Cannot be converted (even when setting TimeInOverworld with commands), see MC-172077, consider to only not trigger/count down the timer if NoAI is present, and allow value 0 to convert.
18 Cannot be converted (even when setting TimeInOverworld with commands), consider to only not trigger/count down the timer if NoAI is present, and allow value 0 to convert.
19 Loot is dropped due to mob death.
20 MC-6773, fixed.
21 Mob needs to die to convert, can be converted by creative players.
22 Desynced, and randomized, see MC-248587.
23 Mob splits into multiple mobs, so UUID cannot be preserved for all. However, 1 of the mob should be capable to get it.
24 Magma cubes can't burn, if this behavior will ever be toggle-able (for example via entity type tag), this should be synchronized though.
Since zombie villagers can be converted to villagers and vise versa, the following data is problematic due to not being stored on one of the 2 parties, causing loss of data upon converting and converting back to the original form. This should probably be it's own report, but until the rest of this is fixed, it's just another "tags lost on conversion" entry.
- Zombie villagers don't have ForcedAge, InLove, Inventory, LastGossipDecay, LastRestock, LoveCause, RestocksToday and Willing.
- Zombie villagers don't use Brain.memories.minecraft:home, Brain.memories.minecraft:job_site, Brain.memories.minecraft:last_woken, Brain.memories.minecraft:last_worked_at_poi, Brain.memories.minecraft:meeting_point and Brain.memories.minecraft:potential_job_site.
- Villagers don't have CanBreakDoors.
How to reproduce
- Summon a mob with any of the above tags, and convert it.
/summon minecraft:zombie_villager ~ ~ ~ {Health:10.0f,Invulnerable:1b,Fire:100s,Tags:["foo","bar"],ConversionTime:0}
- Once the mob converted, look at its NBT data
/data get entity @e[type=villager,limit=1,sort=nearest]
→
Note that the tags marked with
do not persist
Confirmed, but the title is wrong, it only apply to mobs that turn into an other one : Pigs and Villagers.
Kinda related to MC-67437.
"We don't accept bug reports about the NoAI tag" what about MC-67437?
The NoAI tag has a very specific purpose: it disables AI updates for that entity. Many entity behaviors were implemented before the AI system was added to Minecraft, and it only covers some basic, common behaviors, so many mob-specific behaviors are still implemented in the mob code, and are thus unaffected by the NoAI tag. Ideally, the AI system would be expanded to cover all of these behaviors, and that code moved out of the mob code. However, that would be a major task, and Mojang still has many other major code cleanup tasks to do which are higher priority. Still, they have slowly been making improvements to the AI system, and some NoAI "bugs" will be fixed over time as they expand the AI system to give it the necessary functionality.
MC-67437 was not about the behavior of entities that had the NoAI tag, it was about the lightning transformation code not copying the NoAI tag across. The involvement of the NoAI tag doesn't automatically make an issue invalid. There are specific types of issues involving it that we've been instructed to mark as invalid or won't fix.
In this case, it's not even the NoAI tag itself that makes this issue invalid. It's the fact that you're changing the tag during the lifetime of the entity, which can have unexpected results. By setting the NoAI tag, you've stopped the AI from updating – but that doesn't mean that the entity will just stop doing what it's already doing. In this case, it means that it will continue targeting the player, because that's the state it was set to by the last AI update it received. For it to change to another state, perform another behavior, or even stop its current behavior would require another AI update. That's simply how the system works, and is intended to work. This isn't a bug, no matter how much you'd rather it behave differently.


Can confirm in 14w34d.
Pigs and villagers struck by lightning also lose their names.
Also happens when a zombie infects a villager or when a Zombie Villager is cured into a Villager.
Regressed in 15w38b, seeMC-88967You say "regressed" but the Tags tag didn't exist when this bug was created/fixed. Plus the title refers to NoAI which is still fixed in 15w38b.