The bug
Vexes summoned by evokers do not transfer over their team tag to the vexes. This results in vexes attacking members of the team the evoker is on.
How to reproduce
- Create a team and join the team.
/team add yellow /team join yellow @s
- Summon an evoker being a member of the team.
/summon evoker ~ ~1 ~ {Team:"yellow"}
- Switch to survival or adventure mode
→ The evoker does not attack you - Summon a villager and wait for the evoker to spawn vexes.
/summon villager ~ ~ ~ {NoAI:1b}
→ The vexes attack villager
- Wait for the villager to die.
→ When the villager is dead the vexes attack you, but the evoker who summoned them is on your team
Code analysis
The following is based on yarn 1.15.2 names.
In the method net.minecraft.entity.mob.EvokerEntity$SummonVexGoal.castSpell() sets the initial stuff (angles, position, ect...) but there's no call to set a team. To fix this issue, this call should be added (before the spawn of the entity):
vexEntity4.world.getScoreboard().addPlayerToTeam(vexEntity4.getUuidAsString(), EvokerEntity.this.getScoreboardTeam().getName());