Compatibility
Minecraft: Java Edition
1.21.x
Platforms
Creators
Details
Licensed GPL-3.0-only
Published 6 months ago
Updated 6 days ago
Changelog
EliteMobs 10.0.4
- [New] Scaled combat system for natural elite mobs! When enabled (on by default), overworld elites simulate combat at the player's skill level, so gear matters but mob level doesn't. This makes natural elites feel equally fair regardless of player progression. Dungeon bosses using normalized combat are unaffected. Configurable via useScaledCombatForNaturalElites in MobCombatSettings.yml.
- [New] Scaled combat can also be enabled per custom boss via the scaledCombat config field, allowing content creators to opt specific bosses into level-independent combat.
- [New] Scaled combat damage multiplier configs! Separate scaledDamageToEliteMultiplier and scaledDamageToPlayerMultiplier settings allow fine-tuning scaled combat difficulty independently from normalized and standard combat.
- [New] Scaled combat entities display a symbol (⚔ or ☠) instead of a numeric level in their nametag, configurable via scaledStandardLevelSymbol and scaledHighThreatLevelSymbol. High-threat symbols appear when the boss has a health multiplier above 1.
- [New] Scaled combat health displays show percentage-based damage popups and health bars instead of raw numbers, since the actual HP values are meaningless to the player.
- [New] Scaled combat reward resolver! Loot, coins, and skill XP from scaled-combat elites use the player's combat level instead of the mob's internal level, ensuring rewards always match progression.
- [New] Legacy health scaling toggle! useRecommendedHealthScaling (default true) lets servers opt into smaller legacy-style HP values for natural elites, closer to EliteMobs 9 numbers. Not recommended for new servers.
- [New] Strength and Weakness potion effects now affect player damage against elites! Configurable via strengthDamageMultiplierV2 and weaknessDamageMultiplierV2 (default 0.2 per level each). Strength/Weakness are combined linearly so equal levels cancel exactly.
- [New] Potion multiplier added to the damage formula and damage breakdown display — Strength, Weakness, and Resistance are now centralized in PotionCombatModifierCalculator.
- [New] Geyser/Floodgate Bedrock player detection! GeyserDetector now actually detects Bedrock players via reflection-based integration with Floodgate and Geyser APIs, replacing the old placeholder stub.
- [New] Combat level display height adjusted for Bedrock players — the floating combat level text is offset higher for Geyser/Floodgate clients to account for Bedrock rendering differences.
- [New] /em loot reward <player> <filename> command — gives a custom item to a player scaled to their combat level, with overflow items dropped on the ground.
- [New] /em loot debug <level> limited command — equips a limited debug loadout (armor, sword, bow, shield, arrows only) for faster testing without cluttering the inventory with every weapon type.
- [New] Boss tracking bars now work for all bosses with announcementPriority >= 1, even without a custom locationMessage — a sensible default message ("$name: $distance blocks away!") is used automatically.
- [New] Boss announcementPriority now defaults to 1 when the boss has any announcement content (spawn/death/escape/location messages), instead of always defaulting to 0.
- [New] Wormhole-aware boss tracking! Boss tracking bars and boss bars now route through wormholes — if a boss is in another world, the tracking bar shows the distance to the nearest wormhole entrance that leads to the boss's world instead of showing "other world."
- [New] Wormhole-aware quest tracking compass! The quest compass now uses centralized wormhole navigation logic to point players toward the nearest wormhole when the objective is in another world.
- [New] Back button in dungeon browser menus! When opening a dungeon teleport from the teleports page (inventory or dialog), the level selection and difficulty selection menus now include a back button to return to the teleport browser.
- [New] PlaceholderAPI placeholders for Maces and Spears skill levels (%elitemobs_player_maces_level%, %elitemobs_player_spears_level%).
- [New] Dynamic quest rewards are now generated at turn-in time using the player's current combat level, not the quest's original level. If the player is in a dynamic dungeon, the dungeon's selected level is used instead. This prevents stale rewards from quests accepted long ago.
- [New] Dynamic quest level scaling reworked — quests now use the player's full combat level (1-100) instead of the old divided quest level (1-20), producing more granular quest difficulty and reward scaling.
- [Fix] Fixed ranged-only weapons (bows, crossbows) used in melee dealing full weapon damage instead of counting as unarmed strikes — melee hits with ranged weapons now use fist attack speed (4.0) and weapon level 0.
- [Fix] Fixed 1-shot protection using base max health instead of total max health (including skill bonuses), allowing players with armor skill health bonuses to still be one-shot in some cases.
- [Fix] Fixed wormhole code crashing on Paper servers when accessing Location.getWorld() for unloaded worlds — Paper throws IllegalArgumentException instead of returning null. All wormhole location access now catches this exception.
- [Fix] Fixed instanced dungeon kill objectives from one instance leaking into and completing objectives in other instances of the same dungeon — objectives now check instance identity before counting kills.
- [Fix] Fixed instanced dungeon kill objectives accumulating in the static listener list across runs, causing stale objectives to remain registered after dungeon completion or closure.
- [Fix] Fixed instanced dungeon completion check running even when the dungeon state isn't ONGOING, potentially triggering completion logic during cleanup.
- [Fix] Fixed players reviving in instanced dungeons teleporting into the banner block instead of on top of it, and not having their health restored.
- [Fix] Fixed quest objective names causing NullPointerException when the objective name is null — both chat progression messages and menu summary lines now safely handle null names.
- [Fix] Fixed quest reward item display name causing NullPointerException when the item has no custom display name — falls back to the material type name.
- [Fix] Fixed quest turn-in objective crashing when the NPC name is null.
- [Fix] Fixed quest dialog and Bedrock quest views showing color code artifacts — dialog text processing now fully strips color codes and collapses multi-line text into single lines for clean rendering.
- [Fix] Fixed quest inventory menu word-wrapping using a hardcoded 30-character width instead of the configured maxCharactersPerLine value.
- [Fix] Fixed quest inventory menu lore applying broken character-level word wrapping with color code tracking — replaced with simple line-per-entry rendering.
- [Fix] Fixed /em skillcheck output showing double plugin prefix by switching from Logger.sendMessage to Logger.sendSimpleMessage.
- [Fix] Fixed script SUMMON_ENTITY action crashing when getEntityClass() returns null for an EntityType, or when the location/world is null.
- [Fix] Fixed script SUMMON_ENTITY scheduling a removal task even when duration is 0, causing unnecessary timer overhead.
- [Fix] Fixed script SUMMON_ENTITY error messages not including the script filename, making debugging harder.
- [Fix] Fixed Welcome Quest referencing "Odigos" instead of the correct NPC names "Casus" and "Dux".
- [Fix] Fixed Invisibility power only applying at amplifier 3 instead of 5.
- [Tweak] Plugin initialization refactored to use MagmaCore's centralized PluginInitializationContext system — the progress bar, async/sync phasing, error handling, and shutdown cancellation are now managed by MagmaCore instead of being hand-rolled in EliteMobs. This prepares for multi-plugin initialization coordination.
- [Tweak] MagmaCore API calls updated to pass plugin instance (this) for multi-plugin support — affects MagmaCore.onEnable(), MagmaCore.shutdown(), MagmaCore.initializeImporter(), NightbreakContentManager.downloadAsync(), NightbreakContentManager.checkAccessAsync(), FirstTimeSetupMenu, and SetupMenu.
- [Tweak] EMPackage now implements NightbreakManagedContent interface for standardized content management.
- [Tweak] Teleport config keys migrated from teleportText/Hover/Command to teleportTextV2/HoverV2/CommandV2 to reset any user customizations that broke with the new dialog-aware teleport system.
- [Tweak] Updated MagmaCore dependency.
Files
Metadata
Release channel
ReleaseVersion number
10.0.4Loaders
Game versions
1.21.4–1.21.11Downloads
1279Publication date
March 11, 2026 at 2:27 PMPublisher

MagmaGuy
Member





