diff --git a/src/main/java/net/tylers1066/mob/MobSpawnManager.java b/src/main/java/net/tylers1066/mob/MobSpawnManager.java index 9f9c6f8..3239866 100644 --- a/src/main/java/net/tylers1066/mob/MobSpawnManager.java +++ b/src/main/java/net/tylers1066/mob/MobSpawnManager.java @@ -282,10 +282,7 @@ private void spawnBatch(World world, ProtectedRegion region, MobSpawnData data, Optional result = adapter.spawnMob(mobType, loc, level); if (result.isPresent()) { - UUID uuid = result.get(); - recordSpawn(zoneKey, uuid); - Entity entity = plugin.getServer().getEntity(uuid); - if (entity != null) entity.setPersistent(true); + recordSpawn(zoneKey, result.get()); debug("[MobSpawn] Spawned '" + mobType + "' at " + loc.getBlockX() + "," + loc.getBlockY() + "," + loc.getBlockZ() + " in region '" + region.getId() + "'."); diff --git a/src/main/java/net/tylers1066/mob/mythic/MythicV5Adapter.java b/src/main/java/net/tylers1066/mob/mythic/MythicV5Adapter.java index b7b39dc..13e9087 100644 --- a/src/main/java/net/tylers1066/mob/mythic/MythicV5Adapter.java +++ b/src/main/java/net/tylers1066/mob/mythic/MythicV5Adapter.java @@ -36,7 +36,11 @@ public Optional spawnMob(@NotNull String mobName, @NotNull Location locati } try { ActiveMob active = mythicMob.get().spawn(BukkitAdapter.adapt(location), level); - return Optional.of(active.getEntity().getUniqueId()); + org.bukkit.entity.Entity entity = BukkitAdapter.adapt(active.getEntity()); + // Mark persistent immediately — getServer().getEntity(uuid) in the caller + // may return null if the entity is not yet registered in Bukkit's registry. + entity.setPersistent(true); + return Optional.of(entity.getUniqueId()); } catch (Exception e) { return Optional.empty(); }