Asynchronous getEntities Call with MythicMobs and ModelEngine
Hello,
I am encountering a persistent IllegalStateException: Asynchronous Chunk getEntities call.
The issue is triggered when a MythicMobs skill (running on the async lumine-scheduler) executes a ModelEngine mechanic, such as applying a model. The ModelEngine code then attempts to call the getEntities method, which is not thread-safe. This unsafe operation is correctly caught by the server's AsyncCatcher, resulting in the error shown in the logs below.
Forcing the problematic skill to run on the main thread using the ;sync=true parameter in the MythicMobs config serves as a temporary workaround, but the underlying async issue remains.
Environment details:
- Server Version: Purpur 1.21.8
- MythicMobs Version: Premium 5.10.0-SNAPSHOT
- ModelEngine Version: R4.0.9
The full error log is attached below for your review. Please let me know if you need any more information.
Thank you for your time and help.
Error and warn messages:
[08:53:37 ERROR]: Thread lumine-scheduler-83 failed main thread check: Chunk getEntities call java.lang.Throwable: null at org.spigotmc.AsyncCatcher.catchOp(AsyncCatcher.java:9) ~[purpur-1.21.8.jar:1.21.8-2489-4fd4df0] at net.minecraft.server.level.ServerLevel.getEntities(ServerLevel.java:2549) ~[purpur-1.21.8.jar:1.21.8-2489-4fd4df0] at net.minecraft.world.level.Level.getEntity(Level.java:1899) ~[purpur-1.21.8.jar:1.21.8-2489-4fd4df0] at net.minecraft.world.level.Level.getEntity(Level.java:97) ~[purpur-1.21.8.jar:1.21.8-2489-4fd4df0] at net.minecraft.world.entity.EntityReference.getEntity(EntityReference.java:58) ~[purpur-1.21.8.jar:1.21.8-2489-4fd4df0] at net.minecraft.world.entity.EntityReference.get(EntityReference.java:91) ~[purpur-1.21.8.jar:1.21.8-2489-4fd4df0] at net.minecraft.world.entity.OwnableEntity.getOwner(OwnableEntity.java:16) ~[purpur-1.21.8.jar:1.21.8-2489-4fd4df0] at net.minecraft.world.entity.OwnableEntity.getRootOwner(OwnableEntity.java:22) ~[purpur-1.21.8.jar:1.21.8-2489-4fd4df0] at net.minecraft.world.entity.TamableAnimal.getTeam(TamableAnimal.java:194) ~[purpur-1.21.8.jar:1.21.8-2489-4fd4df0] at net.minecraft.world.entity.Entity.getTeamColor(Entity.java:604) ~[purpur-1.21.8.jar:1.21.8-2489-4fd4df0] at ModelEngine-R4.0.9.jar/com.ticxo.modelengine.v1_21_R5.entity.EntityHandlerImpl.getGlowColor(EntityHandlerImpl.java:525) ~[ModelEngine-R4.0.9.jar:?] at ModelEngine-R4.0.9.jar/com.ticxo.modelengine.api.entity.data.BukkitEntityData.syncUpdate(BukkitEntityData.java:110) ~[ModelEngine-R4.0.9.jar:?] at ModelEngine-R4.0.9.jar/com.ticxo.modelengine.api.entity.data.BukkitEntityData.(BukkitEntityData.java:64) ~[ModelEngine-R4.0.9.jar:?] at ModelEngine-R4.0.9.jar/com.ticxo.modelengine.api.entity.data.BukkitEntityData.(BukkitEntityData.java:55) ~[ModelEngine-R4.0.9.jar:?] at ModelEngine-R4.0.9.jar/com.ticxo.modelengine.api.entity.BukkitEntity.createEntityData(BukkitEntity.java:53) ~[ModelEngine-R4.0.9.jar:?] at ModelEngine-R4.0.9.jar/com.ticxo.modelengine.api.entity.BukkitEntity.(BukkitEntity.java:44) ~[ModelEngine-R4.0.9.jar:?] at ModelEngine-R4.0.9.jar/com.ticxo.modelengine.api.ModelEngineAPI.createModeledEntity(ModelEngineAPI.java:128) ~[ModelEngine-R4.0.9.jar:?] at ModelEngine-R4.0.9.jar/com.ticxo.modelengine.api.ModelEngineAPI.getOrCreateModeledEntity(ModelEngineAPI.java:153) ~[ModelEngine-R4.0.9.jar:?] at ModelEngine-R4.0.9.jar/com.ticxo.modelengine.core21.mythic.mechanics.entity.ModelMechanic.addModel(ModelMechanic.java:107) ~[ModelEngine-R4.0.9.jar:?] at ModelEngine-R4.0.9.jar/com.ticxo.modelengine.core21.mythic.mechanics.entity.ModelMechanic.castAtEntity(ModelMechanic.java:67) ~[ModelEngine-R4.0.9.jar:?] at MythicMobsPremium-5.10.0-SNAPSHOT.jar/io.lumine.mythic.core.skills.SkillMechanic.lambda$executeTargetedEntitySkill$16(SkillMechanic.java:637) ~[MythicMobsPremium-5.10.0-SNAPSHOT.jar:?] at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) ~[?:?] at MythicMobsPremium-5.10.0-SNAPSHOT.jar/io.lumine.mythic.core.skills.SkillMechanic.executeTargetedEntitySkill(SkillMechanic.java:633) ~[MythicMobsPremium-5.10.0-SNAPSHOT.jar:?] at MythicMobsPremium-5.10.0-SNAPSHOT.jar/io.lumine.mythic.core.skills.SkillMechanic.lambda$executeSkills$12(SkillMechanic.java:588) ~[MythicMobsPremium-5.10.0-SNAPSHOT.jar:?] at MythicMobsPremium-5.10.0-SNAPSHOT.jar/io.lumine.mythic.core.skills.SkillMechanic.runMechanic(SkillMechanic.java:627) ~[MythicMobsPremium-5.10.0-SNAPSHOT.jar:?] at MythicMobsPremium-5.10.0-SNAPSHOT.jar/io.lumine.mythic.core.skills.SkillMechanic.executeSkills(SkillMechanic.java:588) ~[MythicMobsPremium-5.10.0-SNAPSHOT.jar:?] at MythicMobsPremium-5.10.0-SNAPSHOT.jar/io.lumine.mythic.core.skills.SkillMechanic.execute(SkillMechanic.java:505) ~[MythicMobsPremium-5.10.0-SNAPSHOT.jar:?] at MythicMobsPremium-5.10.0-SNAPSHOT.jar/io.lumine.mythic.core.mobs.MobType.lambda$executeSkills$8(MobType.java:1340) ~[MythicMobsPremium-5.10.0-SNAPSHOT.jar:?] at MythicMobsPremium-5.10.0-SNAPSHOT.jar/io.lumine.mythic.bukkit.utils.Delegates$RunnableToSupplier.get(Delegates.java:121) ~[MythicMobsPremium-5.10.0-SNAPSHOT.jar:?] at MythicMobsPremium-5.10.0-SNAPSHOT.jar/io.lumine.mythic.bukkit.utils.promise.LuminePromise$SupplyRunnable.run(LuminePromise.java:654) ~[MythicMobsPremium-5.10.0-SNAPSHOT.jar:?] at MythicMobsPremium-5.10.0-SNAPSHOT.jar/io.lumine.mythic.bukkit.utils.tasks.LumineExecutors$SchedulerWrappedRunnable.run(LumineExecutors.java:70) ~[MythicMobsPremium-5.10.0-SNAPSHOT.jar:?] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?] at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?] [08:53:37 ERROR]: [MythicMobs] [SCHEDULER] Exception thrown whilst executing task [08:53:37 WARN]: java.lang.IllegalStateException: Asynchronous Chunk getEntities call! [08:53:37 WARN]: at org.spigotmc.AsyncCatcher.catchOp(AsyncCatcher.java:10) [08:53:37 WARN]: at net.minecraft.server.level.ServerLevel.getEntities(ServerLevel.java:2549) [08:53:37 WARN]: at net.minecraft.world.level.Level.getEntity(Level.java:1899) [08:53:37 WARN]: at net.minecraft.world.level.Level.getEntity(Level.java:97) [08:53:37 WARN]: at net.minecraft.world.entity.EntityReference.getEntity(EntityReference.java:58) [08:53:37 WARN]: at net.minecraft.world.entity.EntityReference.get(EntityReference.java:91) [08:53:37 WARN]: at net.minecraft.world.entity.OwnableEntity.getOwner(OwnableEntity.java:16) [08:53:37 WARN]: at net.minecraft.world.entity.OwnableEntity.getRootOwner(OwnableEntity.java:22) [08:53:37 WARN]: at net.minecraft.world.entity.TamableAnimal.getTeam(TamableAnimal.java:194) [08:53:37 WARN]: at net.minecraft.world.entity.Entity.getTeamColor(Entity.java:604) [08:53:37 WARN]: at ModelEngine-R4.0.9.jar//com.ticxo.modelengine.v1_21_R5.entity.EntityHandlerImpl.getGlowColor(EntityHandlerImpl.java:525) [08:53:37 WARN]: at ModelEngine-R4.0.9.jar//com.ticxo.modelengine.api.entity.data.BukkitEntityData.syncUpdate(BukkitEntityData.java:110) [08:53:37 WARN]: at ModelEngine-R4.0.9.jar//com.ticxo.modelengine.api.entity.data.BukkitEntityData.(BukkitEntityData.java:64) [08:53:37 WARN]: at ModelEngine-R4.0.9.jar//com.ticxo.modelengine.api.entity.data.BukkitEntityData.(BukkitEntityData.java:55) [08:53:37 WARN]: at ModelEngine-R4.0.9.jar//com.ticxo.modelengine.api.entity.BukkitEntity.createEntityData(BukkitEntity.java:53) [08:53:37 WARN]: at ModelEngine-R4.0.9.jar//com.ticxo.modelengine.api.entity.BukkitEntity.(BukkitEntity.java:44) [08:53:37 WARN]: at ModelEngine-R4.0.9.jar//com.ticxo.modelengine.api.ModelEngineAPI.createModeledEntity(ModelEngineAPI.java:128) [08:53:37 WARN]: at ModelEngine-R4.0.9.jar//com.ticxo.modelengine.api.ModelEngineAPI.getOrCreateModeledEntity(ModelEngineAPI.java:153) [08:53:37 WARN]: at ModelEngine-R4.0.9.jar//com.ticxo.modelengine.core21.mythic.mechanics.entity.ModelMechanic.addModel(ModelMechanic.java:107) [08:53:37 WARN]: at ModelEngine-R4.0.9.jar//com.ticxo.modelengine.core21.mythic.mechanics.entity.ModelMechanic.castAtEntity(ModelMechanic.java:67) [08:53:37 WARN]: at MythicMobsPremium-5.10.0-SNAPSHOT.jar//io.lumine.mythic.core.skills.SkillMechanic.lambda$executeTargetedEntitySkill$16(SkillMechanic.java:637) [08:53:37 WARN]: at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) [08:53:37 WARN]: at MythicMobsPremium-5.10.0-SNAPSHOT.jar//io.lumine.mythic.core.skills.SkillMechanic.executeTargetedEntitySkill(SkillMechanic.java:633) [08:53:37 WARN]: at MythicMobsPremium-5.10.0-SNAPSHOT.jar//io.lumine.mythic.core.skills.SkillMechanic.lambda$executeSkills$12(SkillMechanic.java:588) [08:53:37 WARN]: at MythicMobsPremium-5.10.0-SNAPSHOT.jar//io.lumine.mythic.core.skills.SkillMechanic.runMechanic(SkillMechanic.java:627) [08:53:37 WARN]: at MythicMobsPremium-5.10.0-SNAPSHOT.jar//io.lumine.mythic.core.skills.SkillMechanic.executeSkills(SkillMechanic.java:588) [08:53:37 WARN]: at MythicMobsPremium-5.10.0-SNAPSHOT.jar//io.lumine.mythic.core.skills.SkillMechanic.execute(SkillMechanic.java:505) [08:53:37 WARN]: at MythicMobsPremium-5.10.0-SNAPSHOT.jar//io.lumine.mythic.core.mobs.MobType.lambda$executeSkills$8(MobType.java:1340) [08:53:37 WARN]: at MythicMobsPremium-5.10.0-SNAPSHOT.jar//io.lumine.mythic.bukkit.utils.Delegates$RunnableToSupplier.get(Delegates.java:121) [08:53:37 WARN]: at MythicMobsPremium-5.10.0-SNAPSHOT.jar//io.lumine.mythic.bukkit.utils.promise.LuminePromise$SupplyRunnable.run(LuminePromise.java:654) [08:53:37 WARN]: at MythicMobsPremium-5.10.0-SNAPSHOT.jar//io.lumine.mythic.bukkit.utils.tasks.LumineExecutors$SchedulerWrappedRunnable.run(LumineExecutors.java:70) [08:53:37 WARN]: at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) [08:53:37 WARN]: at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)