The bug
When attempting to modify a phantom's attributes with the /data
command, changes do not take place. Other functions of the /data
command work fine, such as changing its current health, size, etc. but attributes such as attack damage and follow range are not affected.
How to reproduce
Summon a phantom
Run the command (The base modifier can be any number. It makes no difference):
/data merge entity @e[type=minecraft:phantom,limit=1] {Attributes:[{Name:generic.attackDamage,Base:0}]}
The server will say the mob has been modified, but checking using the following command reveals that no change has occurred:
/data get entity @e[type=minecraft:phantom,limit=1]
The commands used above function correctly for all other mobs I have tested.
Code analysis
From 18w31a's source:
Method ang.l()
will directly set the phantom's generic.attackDamage
to a hard-coded 6, plus the value from their Size
tag, which overrides whatever Base
was previously specified. This method is called when the entity has its data set from NBT (whether it's via command or via chunk loading).
Linked issues
testing discovered 1
Comments 7
@kumasasa The command functions properly when used on all other mobs I have tested. Adding quotes did not resolve the issue.
Fixed in 19w08a. However, if the phantom's size is not 0, then the attribute does still reset on reloading the world (I've created MC-181823 for that).
Note that I could only reproduce in 1.13 and 19w07a with the generic.attackDamage
attribute; generic.followRange
did not get reset at all. This is consistent with my understanding of the relevant code.
Did you try to put the attribute name in quotes?