Skip to main content

Creating World Bosses

World Bosses are also sometimes referred to as Regional Bosses.

What are they?​

World Bosses are Custom Bosses set to spawn in a specific location on a specific delay. These are also the bosses used in Dungeons. Though in this section we will specifically be discussing making World Bosses for use outside of dungeons.

What are they for?​

World Bosses allow players to face a fixed challenge while knowing that the loot will be rewarding.

What do I need to make a World Boss?​

  1. A location. A boss room is recommended, with a roughly 15 block radius (30 blocks across) due to the Minecraft aggro range. Additionally, make sure that the terrain is protected through a WorldGuard region (so players can't build traps) and that the terrain can't be exploited for combat.
  2. A respawn time. The respawn timer is essential. I don't recommend doing less than a 30 minute respawn timer or else the boss respawning will be less of an event. 1 hour is a fairly good time, but you may also want to make it so the boss respawns once per day or even once per week.
  3. An escape time. The longer the respawn, the longer the escape time should be. Also take into account that the escape time should be long enough that people can comfortably challenge the boss. Escape timers are important if you don't want to allow players to kamikaze the boss to death. This is not mandatory, nor even recommended if you want to do massive week-long respawn bosses.
  4. A Custom Boss. World Bosses are really just Custom Bosses with custom spawning rules. Make sure you select powers with a good raid-size combat compatibility.
  5. Interesting loot. The big draw for the World Bosses, challenge aside, is the loot. Make sure that players can get something from it that they simply can't get from elsewhere.
  6. A theme. A good Regional boss should have a theme, with a thematic location and thematic loot.

Custom Boss configuration options for World Bosses:​

These settings are added to the normal Custom Boss config files. An extensive wiki page on those can be found here.


isRegionalBoss​

Sets whether the boss is a regional boss. Regional bosses are another name for World Bosses, so you want to set that to true.

KeyValuesDefault
isRegionalBossBooleanfalse
Example
isRegionalBoss: true

spawnLocations​

Spawn locations should be set from in-game using the command /em place boss <filename.yml>.

Run it as a player with elitemobs.place.admin, after loading a boss configuration with isRegionalBoss: true. Each use adds another placement of that same boss. The command centers the position in a block and looks upward for a passable spot; check that the chosen location has enough room for your boss.

While it is possible to manually add locations from config, I don't recommend trying to do that as it is just too easy to get it wrong.

KeyValuesDefault
spawnLocationsString Listnone
Example

Locations in configuration files (for advanced users) The Regional Boss' config files stores all the instances of that Regional Boss in a single file by storing multiple spawn locations as well as respawn timers.

In practical terms, that means that this entry:

spawnLocations:
- elitemobs_sewer_maze,-70.17178578884845,168.2,-173.17112099568718,-271.24023,64.19999:1610710903931
- elitemobs_sewer_maze,-135.02262355317436,168.2,-153.28849346821508,-98.53906,60.750263:1609026066482
- elitemobs_sewer_maze,-70.43846307626053,168.2,-174.13499832314378,-271.24023,64.19999:1610710886530
- elitemobs_sewer_maze,-130.39762674971664,168.2,-171.67396911490718,-47.532227,51.900173:1609026066482
- elitemobs_sewer_maze,-117.12782160766056,162.2,-166.40989416757444,-71.37402,-1.4997427:1610710974882
- elitemobs_sewer_maze,-105.13138759611667,168.2,-169.85898023126538,-124.34766,41.24988:1610710945331
- elitemobs_sewer_maze,-106.21847515732084,169.2,-152.3609257554766,-170.86523,21.450315:1610537606222

contains 7 different Regional Bosses, in different locations, and with different respawn timers.

Let's break the details down, taking a look at the first Regional Boss:

- elitemobs_sewer_maze,-70.17178578884845,168.2,-173.17112099568718,-271.24023,64.19999:1610710903931

Since this follows the format world,x,y,z,yaw,pitch:unixTimeStamp, the boss is spawning in a world called elitemobs_sewer_mazeat x = -70.17178578884845, y = 168.2, z = -173.17112099568718, yaw = -271.24023, pitch = 64.19999.

The timestamp stores the respawn deadline as milliseconds since the Unix epoch. This preserves the deadline through restarts; use a converter that accepts milliseconds when inspecting it.

To remove a saved respawn deadline, stop the server before editing the file and delete the :unixTimeStamp suffix, including the colon. The entry becomes world,x,y,z,yaw,pitch. The running plugin periodically saves placements and can overwrite manual edits. A placement without a deadline restores without a spawn announcement, once its world and chunk can support spawning.


spawnCooldown​

Sets the delay after death or timeout before the next spawn attempt, in minutes. 0 queues an immediate attempt; a negative value disables scheduled respawning. The world and chunk must be available before a live entity appears. Patrol bosses additionally require an entity-ticking position.

Note: longer respawns are recommended for big bosses!.

KeyValuesDefault
spawnCooldownInteger0
Example
spawnCooldown: 20

timeout​

Sets the escape delay from spawning, in minutes, rather than from the start of combat. Values below 1 disable it. Restoring a regional boss after a chunk/world load or restart starts the full delay again; it is not a persisted deadline. Phase changes preserve the current encounter's timer.

Note: This should be long enough for players to comfortably complete the fight.

KeyValuesDefault
timeoutInteger0
Example
timeout: 60

Sets the boss to escape after 60 minutes if not defeated.


leashRadius​

Sets the return boundary around the placed spawn location. With native navigation, eligible creature bosses begin a soft return at half this radius, and the hard return uses the full radius. The return can teleport the boss if it fails to reach its destination. Ender Dragons are excluded from these native leash goals. Without native navigation, a check every 3 seconds returns bosses that exceed the full radius; this fallback only runs for radii of at least 1. When a native leash return finishes, the boss heals to full health only if regenerateCustomBossHealthOnCombatEnd is enabled in MobCombatSettings.yml (default true).

Note: try avoiding making combat areas that require leashes shorter than 20 blocks, as it will make the fight worse.

KeyValuesDefault
leashRadiusDouble0 (disabled)
Example
leashRadius: 30

escapeMessage​

Sets the message sent to players in the boss's world when it escapes due to timeout. It requires a nonempty message and announcementPriority of at least 1. Priority 3 or higher also sends it through configured Discord integration. Escape removes the boss and starts its respawn delay unless removeAfterDeath: true removes the placement permanently.

KeyValuesDefault
escapeMessageStringnone
Example
escapeMessage: "&cThe World Boss has escaped!"

announcementPriority​

Controls announcements and eligibility for player tracking. Messages must be configured. Tracking also requires showCustomBossLocation in MobCombatSettings.yml; locationMessage is optional.

LevelBehavior
0No spawn/escape announcements or tracking; configured death messages can still reach attackers
1Configured spawn/death/escape chat messages and player tracking through /em when enabled
2Identical to level 1 (no additional behavior)
3Level 1 + Discord notifications (if configured)

Spawn chat follows announcementBroadcastWorldOnly in events.yml. Death chat at positive priority is server-wide and also requires doCustomEliteMobsDeathMessages in MobCombatSettings.yml. Escape chat is world-only. Restored bosses can be tracked without repeating their spawn announcement. Set the priority explicitly; adding a message does not automatically change a file's default of 0.

KeyValuesDefault
announcementPriorityInteger0
Example
announcementPriority: 3

Sets the boss to announce in chat and Discord, and allows players to track it.


isPersistent​

Preserves the boss for restoration after its chunk unloads. The live entity is removed while unloaded and restored when the relevant chunk loads; this does not keep the chunk loaded or the boss actively fighting.

Placed regional bosses already enable persistence through their regional lifecycle, independently of this ordinary Custom Boss setting.

Note: Too many persistent bosses (hundreds) can cause performance issues.

KeyValuesDefault
isPersistentBooleanfalse
Example
isPersistent: true

removeAfterDeath​

Determines if the World Boss is permanently removed after being defeated. Useful for one-time event bosses or special encounters that should not respawn.

When false (default), death or timeout queues another spawn after spawnCooldown, unless that value is negative.

When true, death or timeout permanently removes that placed boss from the spawn location list.

KeyValuesDefault
removeAfterDeathBooleanfalse
Example
removeAfterDeath: true

Transitive Blocks​

Transitive blocks are configured through onSpawnBlockStates and onRemoveBlockStates. These store the block changes for the ON_SPAWN and ON_REMOVE states described below.

This is how you can make bosses open or close doors / areas or even modify an arena during combat if you are using it with phase bosses!

KeyValuesDefault
onSpawnBlockStatesSee Detailed Explanationnone
KeyValuesDefault
onRemoveBlockStatesSee Detailed Explanationnone
Detailed Explanation

All of the blocks are relative to the spawn location. Make sure that you have your final spawn location before starting to set any blocks.

The editor requires elitemobs.transitiveblocks and a player sender. Place exactly one copy of the regional boss while recording; the editor rejects multiple placements for the same configuration. Phase configuration files can use their parent regional boss. These settings store block data, not container inventories or other block-entity contents, and are not rotated by the boss's yaw.


If you already made a large Transitive Block area and now need to move the boss, but you do not want to redo the Transitive Blocks. Then you can use the EliteScript Teleport action to move the boss to the correct location after it spawns. Do keep in mind that you will have to adjust your leash accordingly.

Due to the complexity of setting blocks, it is not recommended you do this manually. You should use the following commands to do it:

  • /em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
  • /em transitiveBlocks edit <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
  • /em transitiveBlocks registerArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
  • /em transitiveBlocks editArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
  • /em transitiveBlocks cancel

Let's break this down.

/em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

Run this once to start a fresh selection for ON_SPAWN or ON_REMOVE, then again to save it. A fresh registration replaces that state's previous saved list. Finish or cancel your current selection before starting another file or state; an active session is committed when another valid registration/edit command is issued.

ON_SPAWN applies the saved blocks when a regional boss spawns or respawns. ON_REMOVE applies on death or the kill command, and when advancing a phase before the next phase's block configuration replaces it. Timeout, full-heal phase reset, reload and shutdown do not apply the defeated state.

While recording, right-click a block to save its current block state, or left-click it to save air at that position. These clicks are cancelled, so they select the desired state without placing or breaking the block. Each position is stored once: clicking a saved position with the other button removes it from the selection. Clicks outside the boss's world are refused with a message. Run the command again to save your selection.

/em transitiveBlocks edit <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

If you want to modify already set blocks, you can use this command. Works in a very similar way to /em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>.

/em transitiveBlocks registerArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

Just like /em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>, this allows you to register blocks, but it allows selecting them by getting two diametrically opposed corners (same as the worldedit / worldguard region selection) instead of individually selecting blocks.

Left-click one corner and right-click the opposite corner, then run the command again to save the blocks inside the selection. Both corners must be in the boss's world, and you must stand in that world when you save. Otherwise EliteMobs refuses the save with a message and keeps your selection active. Blocks from the area replace any block already selected at the same position.

defaultTransitiveBlockLimiter in config.yml defaults to 500 blocks, but currently only produces a warning: the command still saves an oversized selection. Keep selections small yourself. Applying the saved states loads their target chunks and changes all of their blocks on one tick, which can cause lag for large areas.

/em transitiveBlocks editArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

Loads the existing saved states and adds the selected area's current block states. The same corner selection and size-warning behavior as registerArea applies.

/em transitiveBlocks cancel

Discards the current unsaved selection. It does not undo actual building changes you made in the world or changes already committed to the boss configuration.


Pro tips to make a good, big Regional Boss fight​

  1. Actually think about how the powers on your Custom Boss compliment each other. You don't want your boss to spend most of its time stopped because he's casting something, as that can actually make the fight really easy. You also don't want the boss to have all ranged attacks and no melee powers or the opposite unless you're designing something very specific. Playtesting is important.

  2. Choose health with the ceiling in mind. Boss health is clamped at the server's active settings.attribute.maxHealth.max, normally 2048. With healthMultiplier: 10.0, a boss reaches that ceiling at level 33. Raising its level further changes combat scaling without adding health. See healthMultiplier before combining a large multiplier with a high level.

  3. Damage - not too much. EliteMobs are already extremely deadly by default, and the powers tend to be exponentially deadlier. Instead of boosting the damage through the ceiling, consider using powers to make the boss hit harder.

  4. Exploits, everywhere. Make extra sure the terrain isn't exploitable. Put the boss in a closed room to prevent people from trying to snipe it from far. The arrow invulnerability power is probably extremely important for a lot of World Bosses since Minecraft mobs can't deal with getting sniped from chunks away, so if you want to allow bow attacks make sure bows can't be exploited.

  5. Know the plugin. There's a lot of tiny tricks to beating EliteMobs, like how some powers can be countered by using shields, while others should be countered by dodging or even temporarily running away from the boss. The more you know how the powers work and how they're countered, the better the bosses you make will be.


Complete World Boss Example​

This example combines the main settings. Replace the world and coordinates with your own location, and ensure the listed powers and custom item are enabled. Record arena block changes in-game; the single block here only illustrates the format.

isEnabled: true
entityType: ZOMBIE
name: "&cThe Zombie King"
level: 30
healthMultiplier: 10.0
damageMultiplier: 2.0

# World Boss specific settings
isRegionalBoss: true
isPersistent: true

# Spawn settings
spawnLocations:
- world,100,64,100,0,0
spawnCooldown: 60

# Combat boundaries
leashRadius: 30
timeout: 20

# Messages and announcements
spawnMessage: "&cThe Zombie King has risen!"
deathMessage: "&aThe Zombie King has been defeated by $players!"
escapeMessage: "&eThe Zombie King has escaped..."
announcementPriority: 2

# Arena modification
onSpawnBlockStates:
- 0,0,0/minecraft:barrier
onRemoveBlockStates:
- 0,0,0/minecraft:air

# Boss features
powers:
- zombie_friends.lua
- ground_pound.lua
uniqueLootList:
- filename=magmaguys_toothpick.yml:chance=1.0

This boss will:

  • Queue a spawn at the specified location 60 minutes after death or timeout, appearing when its world and chunk are available
  • Escape after 20 minutes from spawning or restoration if not defeated
  • Announce spawn/death/escape in chat and allow player tracking
  • Restore after its chunk is loaded again
  • Modify arena blocks when spawning and dying
  • Drop unique loot when defeated
Check the health ceiling before increasing level

At level 30 with healthMultiplier: 10.0, the example has 1400 health under the default cap. It reaches 2048 at level 33. Base health is capped before the multiplier, and the multiplied result is capped again, so lowering the multiplier cannot restore level-based health growth after base health already reaches the cap. See healthMultiplier.