froobynooby/FarmControl

[Bug] Animals disappearing after exception while default ''

Closed this issue · 1 comments

ptrap commented

Server: Purpur 1.16.5 build 1064
Farmcontrol version: 1.1.3
Other plugins that do have animal stuff, most on the standard settings: GriefPrevention, Terra, WorldGuard

After spawning 30 sheep

next to eachother and enabling the default 'soft-nerf-animal-farms' profile, the server will throw an exception that makes most of the sheep disappear

STR:

  • Change the soft-nerf-animal-farms profile count to 1500, /farmcontrol reload
  • spawn 30 sheep in a small area with fences
  • wait, sheeps are not despawning
  • change the count back to 15, /farmcontrol reload
  • after a small bit, the server code itself starts spitting exceptions and a lot of the animals are despawning

Error in the console:

[23:38:45 WARN]: Entity threw exception at world:-1055.925000011921,70.0,462.14596286640847
[23:38:45 WARN]: java.util.ConcurrentModificationException
[23:38:45 WARN]:        at java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719)
[23:38:45 WARN]:        at java.base/java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:741)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.PathfinderGoalSelector.doTick(PathfinderGoalSelector.java:109)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.EntityInsentient.inactiveTick(EntityInsentient.java:207)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.EntityAgeable.inactiveTick(EntityAgeable.java:30)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.WorldServer.entityJoinedWorld(WorldServer.java:1541)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.WorldServer.doTick(WorldServer.java:1143)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.MinecraftServer.b(MinecraftServer.java:1563)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:433)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1412)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1138)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291)
[23:38:45 WARN]:        at java.base/java.lang.Thread.run(Thread.java:834)
[23:38:45 WARN]: Entity threw exception at world:-1049.5075544036852,70.0,459.6014259991778
[23:38:45 WARN]: java.util.ConcurrentModificationException
[23:38:45 WARN]:        at java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719)
[23:38:45 WARN]:        at java.base/java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:741)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.PathfinderGoalSelector.doTick(PathfinderGoalSelector.java:109)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.EntityInsentient.inactiveTick(EntityInsentient.java:207)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.EntityAgeable.inactiveTick(EntityAgeable.java:30)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.WorldServer.entityJoinedWorld(WorldServer.java:1541)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.WorldServer.doTick(WorldServer.java:1143)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.MinecraftServer.b(MinecraftServer.java:1563)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:433)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1412)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1138)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291)
[23:38:45 WARN]:        at java.base/java.lang.Thread.run(Thread.java:834)
[23:38:45 WARN]: Entity threw exception at world:-1049.3033855601473,70.0,462.6299424535344
[23:38:45 WARN]: java.util.ConcurrentModificationException
[23:38:45 WARN]:        at java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719)
[23:38:45 WARN]:        at java.base/java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:741)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.PathfinderGoalSelector.doTick(PathfinderGoalSelector.java:109)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.EntityInsentient.doTick(EntityInsentient.java:882)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.EntityLiving.movementTick(EntityLiving.java:2922)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.EntityInsentient.movementTick(EntityInsentient.java:652)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.EntityAgeable.movementTick(EntityAgeable.java:152)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.EntityAnimal.movementTick(EntityAnimal.java:60)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.EntitySheep.movementTick(EntitySheep.java:163)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.EntityLiving.tick(EntityLiving.java:2648)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.EntityInsentient.tick(EntityInsentient.java:406)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.WorldServer.entityJoinedWorld(WorldServer.java:1539)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.WorldServer.doTick(WorldServer.java:1143)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.MinecraftServer.b(MinecraftServer.java:1563)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:433)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1412)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1138)
[23:38:45 WARN]:        at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291)
[23:38:45 WARN]:        at java.base/java.lang.Thread.run(Thread.java:834)

Used FarmControl config:

version: 3
cycle-period: 600
world-settings:
  default:
    profiles:
      proactive:
        - soft-nerf-animal-farms
      reactive:
    reactive-mode-settings:
      trigger-tps-threshold: 18.0
      untrigger-tps-threshold: 19.9
      untrigger-settings:
        minimum-cycles-before-undo: 10
        maximum-undos-per-cycle: 40
        entity-undo-weight:
          default: 1
          villager: 5
    exclusion-settings:
      tamed: true
      named: true
      love-mode: true
      leashed: true
      younger-than: 0
      type:
      metadata:
        - Elitemob
        - Elitemobs_NPC
        - Supermob
        - infernalMetadata
        - NPC
        - shopkeeper
    action-settings:
      undo-on:
        default:
          interact: false
          damage: true
          target: true
          tempt: true
        remove-ai:
          interact: true
          damage: true
          target: true
        remove-awareness:
          interact: true
          damage: true
          target: true
        disable-collisions:
          tempt: true
tps-tracker-settings:
  collection-period: 1200
  trim-outliers-to-within: 100.0
paper-settings:
  mspt-tracker-settings:
    collection-period: 1200
    trim-outliers-to-within: 100.0
  world-settings:
    default:
      alternative-reactive-mode-settings:
        use-alternative-settings: false
        trigger-mspt-threshold: 47.0
        untrigger-mspt-threshold: 40.0

profiles.yml is stock except for the count change listed in the STR

Thank you for the detailed bug report!

The issue is with undoing the remove-random-movement when an entity is tempted. It is quite a non-trivial issue to fix nicely, so for the moment I have removed the ability for this action to be undone when an entity is tempted. I will try to come up with a better solution at some point