Rough Mobs Revamped

Rough Mobs Revamped

2M Downloads

Target Blocker Friendly Fire Crash

SandwichHorror opened this issue ยท 19 comments

commented

The game tends to brick itself when a creature shoots or otherwise attacks a blacklisted target (skeleton to skeleton, wither vs. wither skeleton, etc). Note that I am also running Epic Siege Mod and Special AI. Epic Siege certainly modifies mobs' behavior universally, but it's not updated very often at all. It seems the entity is causing a ticking error because it wants to retaliate, but cannot. If this is something that can possibly be fixed on your end (rather than the other mob mods) I would greatly appreciate it!

Description: Ticking entity

java.lang.NullPointerException
    at net.minecraft.entity.Entity.isOnSameTeam(Entity.java:2315)
    at net.minecraft.entity.ai.EntityAIHurtByTarget.alertOthers(SourceFile:57)
    at net.minecraft.entity.ai.EntityAIHurtByTarget.startExecuting(SourceFile:38)
    at net.minecraft.entity.ai.EntityAITasks.onUpdateTasks(SourceFile:102)
    at net.minecraft.entity.EntityLiving.updateEntityActionState(EntityLiving.java:885)
    at net.minecraft.entity.EntityLivingBase.onLivingUpdate(EntityLivingBase.java:2359)
    at net.minecraft.entity.EntityLiving.onLivingUpdate(EntityLiving.java:678)
    at net.minecraft.entity.monster.EntityMob.onLivingUpdate(EntityMob.java:45)
    at net.minecraft.entity.monster.AbstractSkeleton.onLivingUpdate(AbstractSkeleton.java:144)
    at net.minecraft.entity.EntityLivingBase.onUpdate(EntityLivingBase.java:2179)
    at net.minecraft.entity.EntityLiving.onUpdate(EntityLiving.java:377)
    at net.minecraft.entity.monster.EntityMob.onUpdate(EntityMob.java:50)
    at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:1996)
    at net.minecraft.world.WorldServer.updateEntityWithOptionalForce(WorldServer.java:832)
    at net.minecraft.world.World.updateEntity(World.java:1958)
    at net.minecraft.world.World.redirect$updateEntity$zck000(World.java:5623)
    at net.minecraft.world.World.updateEntities(World.java:1762)
    at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:613)
    at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:767)
    at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:668)
    at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:279)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526)
    at java.lang.Thread.run(Unknown Source)
commented

Having the same crash with this feature on, only relevant AI changing mod besides this one being AIImprovements. Playing on latest 1.12.2

commented

I am back online and will investigate.

commented

๐Ÿ‘€ thanks for looking into this again!

commented

Hi there any updates on this?

commented

Send me your rough mobs config and tell me what mods and versions you are using and i will look. Into it. Thanks.

commented

Issue appears to be caused by these two lines in the EntityAIHurtByTarget file (while trying to alert others):

for(EntityCreature entitycreature : this.taskOwner.world.getEntitiesWithinAABB(this.taskOwner.getClass(), (new AxisAlignedBB(this.taskOwner.posX, this.taskOwner.posY, this.taskOwner.posZ, this.taskOwner.posX + 1.0D, this.taskOwner.posY + 1.0D, this.taskOwner.posZ + 1.0D)).grow(d0, 10.0D, d0))) {
         if (this.taskOwner != entitycreature && entitycreature.getAttackTarget() == null && (!(this.taskOwner instanceof EntityTameable) || ((EntityTameable)this.taskOwner).getOwner() == ((EntityTameable)entitycreature).getOwner()) && !entitycreature.isOnSameTeam(this.taskOwner.getRevengeTarget())) {
For each entity in a 10-block area,
if the entity is not me and the entity isn't attacking anyone and 
   I'm not tameable OR
       my owner is the entity's owner and the entity isn't on the same team as my target

However, the game throws a NPE because the entity that was attacked has no target - i.e., one of the AI mods set the revenge target to null - causing the game to pass a null target to the isOnSameTeam method and throwing a NPE.

commented

I will say, the original issue isn't fixed yet - only the comment about bosses not working has been fixed.

commented

Unfortunately, neither mods are open-source (lookin at you funwayguy) so it makes it a tad harder to troubleshoot. If the issue was indeed caused by Rough Mobs, then it'd have to be such that Rough Mobs gets its onTarget event called exactly when the EntityAIHurtByTarget task executes, which would cause the revenge target to be set to null immediately after the task's shouldExecute method is called, causing the NPE.

commented

Accidentally closed issue

commented

After spending some time digging on this tonight, I've determined this is clearly caused by one of the other mods mentioned above (I don't know which), and not Rough Mobs Revamped. There are two options at this point: either the fix can be done in the offending mods listed above, or I can try to figure something out in Rough Mobs that solves the problem when these mods are installed.

I'll have to do more digging and maybe I'll get to it, but if anyone else want to take a stab at it feel free. I'm crazy busy with work at the moment, and don't know when I'll get to it if ever. As it stands, the feature seems to work fine without the other mods installed, so this really isn't a bug with Rough Mobs per se. I'll leave the issue report open though until a solution is found.

commented

If this helps matters at all, the combination of a "fight-starting" item and a Forge setting to instantly despawn ticking crashed entities (versus bricking the world) allowed me to do some more testing.

Regardless of whether it had been damaged already, when making a mob aggro to another mob it is supposed to be forbidden from attacking, (example config: zombie blocked from attacking skeleton) it instantly despawned as per the ticking entity crash.

This makes me think that this issue has to do specifically with target selection rather than damage affecting that target selection.

In an ideal world, if the mob developed an "illegal" aggro, it would immediately reset to have no current target whatsoever.

commented

In an ideal world, if the mob developed an "illegal" aggro, it would immediately reset to have no current target whatsoever.

Well yeah, that's exactly what's happening currently. However, it resets it just a tad too early/late, since it happens right after the AI task chooses to execute and right before the AI task uses the target.

commented

For relevant AI-tweaking mods, Latest 1.12.2 versions of:
Epic Siege Mod
SpecialAI
Zombie Awareness/Coroutil
Rough Mobs Revamped (obviously)

I removed most of the offending mobs, but added back in the wither skeleton and wither relations so you can test it. Had to change the cfg to txt to upload it here.

commented
commented

Thanks. Iโ€™ll look into this.

commented

bump

commented

When the Ender Dragon or Wither are put into the target blocker, it doesn't actually work. The Ender Dragon ends up aggroing all the endermen on the island, it's pretty chaotic.

commented

Hi, I've had this problem myself and through tons of trial and error, I found that the issue lies with Special AI. In my testing, every other AI mod mentioned here works with Rough Mobs Revamped. I still don't know why Special AI breaks it, though.

commented

Any update on this? Does it being incompatible with SpecialAI help narrow down the source of the issue?