Summary
MythicMobs 5.9.1 throws NoSuchMethodError when using AI Target Selectors ownerAttack and parentDamager on Purpur 1.21.5, causing mobs with these selectors to fail during runtime.
Steps to reproduce https://youtu.be/fuATr8SHfEE
- Install Purpur 1.21.5-2445-HEAD@b1d412f
- Install MythicMobs 5.9.1-${CI_COMMIT_SHORT_SHA}
- Create a mob configuration with ownerAttack or parentDamager in AITargetSelectors
- Create a skill that summons the mob with setowner=true and summonerisparent=true
- Execute the skill using /mm test cast SummonCommanderSoldier or any spawning method
- The error occurs when the mob's AI tries to execute the target selector
Mob Configuration:
CommanderSoldier:
Type: HUSK
Display: '&aSoldado '
Health: 30
Damage: 5
Options:
AlwaysShowName: true
MovementSpeed: 0.3
PreventOtherDrops: true
KnockbackResistance: 0.2
FollowRange: 30
Silent: false
Persistent: true
Despawn: true
DespawnTimer: 3600
PreventRenaming: true
PreventMobKillDrops: true
Equipment:
- IRON_HELMET:4
- IRON_CHESTPLATE:3
- IRON_LEGGINGS:2
- IRON_BOOTS:1
- IRON_SWORD:0
AIGoalSelectors:
- clear
- meleeAttack
- gotoparent
- meleeattack{tps=20}
- randomstroll{radius=10;conditions=[ - targetinrange{r=15} true ]}
AITargetSelectors:
- clear
- ownerAttack # Causes NoSuchMethodError
- ownerDamager
# parentDamager also fails with the same error
Summoning Skill:
SummonCommanderSoldier:
Cooldown: 10
Skills:
- message{m="<caster.name><&co> ¡A mí, soldado!";audience=@PlayersInRadius{r=20}} @self{}
- effect:sound{s=entity.evoker.cast_spell;volume=1.0;pitch=1.2} @Self
- effect:particles{p=cloud;amount=20;hSpread=0.5;vSpread=0.5;speed=0.2} @Self
- delay 10
- setvar{var=skill.faction;value=Troop_<caster.name>;type=STRING} @self
- summon{mob=CommanderSoldier;amount=1;radius=2;setowner=true;summonerisparent=true;then=FactionCreate} @Self
- message{m="&a[✓] &fSoldado invocado."} @Caster
FactionCreate:
Skills:
- setfaction{f=Commander_<skill.var.faction>} @self
- aitarget{target=otherFactionMonsters}
Current behavior
Describe what happens currently, while the bug is affecting your server.
Intended correct behavior
Describe what you think should happen instead of the bug.
Server log file
https://mclo.gs/8hhSEub Debug log snippet [21:04:45] [Server thread/ERROR]: Entity threw exception at world:-103.49348644632107,80.0,-98.4010122272395 java.lang.NoSuchMethodError: 'boolean net.minecraft.world.entity.Mob.setTarget(net.minecraft.world.entity.LivingEntity, org.bukkit.event.entity.EntityTargetEvent$TargetReason, boolean)' at MythicMobs-5.9.1.jar/io.lumine.mythic.core.volatilecode.v1_21_R4.ai.targeters.OwnerHurtGoal$MythicOwnerHurtTargetGoal.start(OwnerHurtGoal.java:78) ~[MythicMobs-5.9.1.jar:?] at net.minecraft.world.entity.ai.goal.WrappedGoal.start(WrappedGoal.java:39) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.world.entity.ai.goal.GoalSelector.tick(GoalSelector.java:114) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.world.entity.Mob.serverAiStep(Mob.java:765) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.world.entity.LivingEntity.aiStep(LivingEntity.java:3502) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.world.entity.Mob.aiStep(Mob.java:515) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.world.entity.monster.Monster.aiStep(Monster.java:45) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.world.entity.monster.Zombie.aiStep(Zombie.java:306) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.world.entity.LivingEntity.tick(LivingEntity.java:3280) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.world.entity.Mob.tick(Mob.java:400) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.world.entity.monster.Zombie.tick(Zombie.java:300) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.server.level.ServerLevel.tickNonPassenger(ServerLevel.java:1365) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.world.level.Level.guardEntityTick(Level.java:1529) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.server.level.ServerLevel.lambda$tick$4(ServerLevel.java:828) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.world.level.entity.EntityTickList.forEach(EntityTickList.java:39) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.server.level.ServerLevel.tick(ServerLevel.java:810) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1759) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1563) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1279) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:311) ~[purpur-1.21.5.jar:1.21.5-2445-b1d412f] at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?] `
`
Proposed fixes
This appears to be a compatibility issue between MythicMobs 5.9.1 and Minecraft 1.21.5/Purpur. The error occurs in OwnerHurtGoal.java:78 where MythicMobs attempts to call a method signature that has changed or been removed in the newer Minecraft version.
Technical Details:
- Affected AI Target Selectors: ownerAttack , parentDamager (confirmed by testing)
- Error Location: io.lumine.mythic.core.volatilecode.v1_21_R4.ai.targeters.OwnerHurtGoal$MythicOwnerHurtTargetGoal.start(OwnerHurtGoal.java:78)
- Missing Method: net.minecraft.world.entity.Mob.setTarget(LivingEntity, TargetReason, boolean)
- Server Version: Purpur 1.21.5-2445-HEAD@b1d412f
- MythicMobs Version: 5.9.1-${CI_COMMIT_SHORT_SHA}
- Additional Plugins: ModelEngine R4.0.9 (no conflicts observed)
- Trigger Mechanism: summon mechanic with setowner=true and summonerisparent=true The issue likely requires updating the volatile code mappings for 1.21.5 to use the correct method signature for setTarget() in the Mob class.