Skip to main content

Creating Bosses

webapp_banner.jpg

Creating custom bosses

Before you begin

Where do boss files go?

Boss files go into the configuration folder ~/plugins/EliteMobs/custombosses.

It is possible to create subfolders, such as ~/plugins/EliteMobs/custombosses/mybosses. This is recommended to keep things organized.

One file defines one boss, though it is possible to spawn the same boss several times and even set several spawn locations for the same boss file.

It is possible to use the webapp to quickly and easily create custom bosses and more.

Smallest possible configuration

The smallest possible configuration file for a Custom Boss is:

Note how this is just an empty file. This will still spawn a zombie custom boss with a custom name, as those are the defaults. Everything in this page is optional!

Example boss

Let's take a look at an example of what a boss file looks like.

Example
isEnabled: true
entityType: ZOMBIE
name: '&eTest boss'
level: dynamic
timeout: 10
isPersistent: false
healthMultiplier: 2.0
damageMultiplier: 0.5
helmet: GOLDEN_HELMET
chestplate: IRON_CHESTPLATE
leggings: LEATHER_LEGGINGS
boots: CHAINMAIL_BOOTS
mainHand: GOLDEN_AXE
offHand: SHIELD
isBaby: false
powers:
- invulnerability_knockback.yml
spawnMessage: A test boss has been spawned!
deathMessage: A test boss has been slain by $players!
escapeMessage: A test boss entity has escaped!
locationMessage: 'Test entity: $location'
uniqueLootList:
- magmaguys_toothpick.yml:1
dropsEliteMobsLoot: true
dropsVanillaLoot: true
trails:
- BARRIER
onDamageMessages:
- "I've hit you!"
onDamagedMessages:
- "I've been hit!"

Basic settings

isEnabled

Sets if the boss is enabled.

KeyValuesDefault
isEnabledtrue / falsetrue
Example
isEnabled: true

entityType

Sets the entity type of the boss.

KeyValuesDefault
entityTypePick from here.
Value must also be present in folder ~plugins/EliteMobs/mobproperties.
ZOMBIE
Magma Cubes and Slimes

Since these entity types do not attack players directly, but instead deal damage through contact, this can result in large bursts of damage in a short time. Because of this, we generally do not recommend using them as Elite mobs frequently. However, if you still wish to use them, we suggest setting damageMultiplier to around 0.1.

We also recommend using the following EliteScript to prevent Magma Cubes or Slimes from stun-locking players:

eliteScript:
NerfDamage:
Events:
- ZoneEnterEvent
- ZoneLeaveEvent
Zone:
shape: SPHERE
radius: 1
Target:
targetType: SELF
Actions:
- action: SET_MOB_AI
Target:
targetType: SELF
bValue: false
duration: 10
Example
entityType: ZOMBIE

name

Sets the name of the boss.

KeyValuesDefault
nameString, accepts color codes and the placeholders listed below"Default Name"
Example
name: "$normalLevel &cCool boss!"

create_boss_name_pic_no_level.jpg

If you wish to include the boss level in their name field, simply use one of the following placeholders.

PlaceholderDescriptionExampleOutput (for a level 10 boss)
$levelReplaces with the level"$level Cool boss"10 Cool boss
$normalLevelReplaces with the level, made for normal mobs"$normalLevel Cool boss"[10] Cool boss
$minibossLevelReplaces with the level, made for minibosses"$minibossLevel Cool boss"〖10〗 Cool boss
$bossLevelReplaces with the level, made for bosses"$bossLevel Cool boss"『10』 Cool boss
$reinforcementLevelReplaces with the level, made for reinforcements"$reinforcementLevel Cool boss"〔10〕 Cool Boss
$eventBossLevelReplaces with the level, made for event bosses"$eventBossLevel Cool boss"「10」 Cool boss
Example
name: "$normalLevel &cCool boss!"

create_boss_name_pic.jpg


level

Sets the level of the boss.

KeyValuesDefault
levelPositive Integer numbers or dynamicdynamic

dynamic is used for events and adjusts to the level of nearby players at the time of the boss spawn. It is not recommended for regional bosses.

Example
level: 1

scale

Sets the scale (size) of the boss.

KeyValuesDefault
scaleMultiplier1.0

When scaling, 1.0 represents the default size. To make the entity larger, increase the value (e.g., 1.2). To make the entity smaller, decrease the value (e.g., 0.8).

Example
scale: 1.2

bossType

Sets what type the boss is. This is used to display boss health bars and other features.

KeyValuesDefault
bossTypeNORMAL, MINIBOSS, BOSS, REINFORCEMENT, EVENTNORMAL

MINIBOSS, BOSS, EVENT will make the plugin display health bars when players are fighting these boss types.

Note: REINFORCEMENT is typically auto-assigned to summoned reinforcement mobs but can be manually set if needed.

Example
bossType: MINIBOSS

silent

Sets if the boss sounds should be muted.

KeyValuesDefault
silentBooleanfalse

When set to true, this option mutes all default Minecraft mob sounds, causing the boss to produce no sounds at all.

Example
silent: true

healthMultiplier

Sets the health of the boss. The value of this setting also determines the type of health bar displayed during the fight. Higher values will show a mini-boss or full boss health bar.

KeyValuesDefault
healthMultiplierMultiplier1.0
Example
healthMultiplier: 1.5

damageMultiplier

Sets the damage multiplier of the boss.

KeyValuesDefault
damageMultiplierMultiplier1.0
Example
damageMultiplier: 1.5

isBaby

Sets if the boss uses the baby variant of the mob. Can only be applied to mobs with baby variants. If you would like to disguise the boss but would like it to also remain a baby while in disguise (make sure the disguise entity also supports the baby variant) you can use this setting:

disguise: HOGLIN:baby
KeyValuesDefault
isBabytrue / falsefalse
Example
isBaby: true

helmet/chestplate/leggings/boots/mainhand/offhand

Sets the armor of the boss. Not all minecraft models are able to show armor. Boss armor is purely cosmetic and does not affect gameplay.

KeyValuesDefault
helmetMaterial, UUIDnone
chestplateMaterialnone
leggingsMaterialnone
bootsMaterialnone
mainHandMaterialnone
offHandMaterialnone

Note: This field also lets you set custom models for items. To set the custom model ID, add the ID after the material type following this format: ITEM_MATERIAL:ID. Example: DIAMOND_SWORD:1 sets the boss to wear a diamond sword with the custom model #1 in your texture pack.

Note 2: This field also lets you set custom leather colors with the format ITEM_MATERIAL:CODE where the code is the hexadecimal representation of the color. Example: LEATHER_LEGGINGS:ffa500 would create orange leggings. You can use hex codes, just remove the # from the hex code. You can get hex codes from here.

Note 3: The helmet field also lets you set mob helmets to be player heads. Simply get the UUID of the player head you would like to use and type it into the helmet field. The player needs to be online for this to work or the head will default to a generic MineCraft head. You can get player UUID's from here.

Example
helmet: 198c4123-cafc-45df-ba79-02a421eb8ce7
chestplate: DIAMOND_CHESTPLATE:1
leggings: LEATHER_LEGGINGS:ffa500
boots: NETHERITE_BOOTS
mainHand: DIAMOND_SWORD
offHand: SHIELD

create_boss_armor.jpg


powers

Sets the powers the boss has.

KeyValuesDefault
powersRefer to the list belownone
Example
powers:
- hyper_loot.yml
- attack_arrow.yml

Note: You can check out this page if you want to see a list of premade powers that you can use.


Intermediate configuration - Spawning reinforcements

Reinforcements also go into the powers category, using the following settings:

Note: Reinforcements are configured within the powers section of your boss configuration file, not as a separate section.

Reinforcement settings
KeyDescriptionValuesDefault
summonTypeWhat triggers the reinforcement spawn. Mandatory.Refer to the list belownone
filenameFilename of the boss to spawn as a reinforcement. Mandatory.Stringnone
chanceChance of the reinforcement spawning. Optional.Double1.0
amountSets the amount of reinforcements to spawn. Optional.Integer1
inheritAggroMakes the reinforcement inherit the aggro from the boss. Optional.true / falsefalse
spawnNearbyMakes the reinforcements spawn in a 30 block radius from the boss. Optional.true / falsefalse
inheritLevelMakes the reinforcement inherit the level of the boss. Optionaltrue / falsefalse
customSpawnMakes the reinforcement spawn using the custom spawn system. Only used for summonType: GLOBAL
locationSpawn location. Optional.world_name,x,y,z or x,y,z for a location relative to the boss. The offset is relative to the spawn location for regional bosses. You can also use same_as_boss to make reinforcements spawn in the same world as the boss.none
lightningRodSpecial setting for summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL. Makes end crystals spawn lightning around them. Optional.true / falsenone

Summon types set the conditions for the reinforcements spawning. The following is a list of the valid summon types:

Summon types
ValueDescription
ONCEOnly spawns the reinforcements once, the first time the boss is damaged.
ON_HITSpawns the reinforcements on hit.
ON_COMBAT_ENTERSpawns the reinforcements when the boss enters combat.
ON_DEATHSpawns reinforcements when the boss dies.
GLOBALSpawns a reinforcement for every online player. Requires the customSpawn key to have a valid custom spawn set.
ON_COMBAT_ENTER_PLACE_CRYSTALPlaces end crystal reinforcements on combat enter, only for use with custom dragon fights.

Note that it is also possible to spawn reinforcements through Elite Scripts, so there are more customizable ways of spawning reinforcements.

Example
powers:
- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
chance: 0.5
amount: 5
inheritAggro: true
spawnNearby: true
inheritLevel: true
customSpawn: false
location: same_as_boss,10,20,30
lightningRod: false

Expert configuration - Creating your own powers

It is possible to create your own powers, either on the boss file itself or as a new configuration file in the powers folder. You can learn more about that here.

Note: You can also define boss behaviors directly in the boss configuration file using the eliteScript field. For complete documentation on using Elite Scripts, see the powers guide.

Limiting powers based on instanced dungeon difficulty

Instanced dungeons can have difficulty settings, and it is possible to make it so a specific power is only enabled for specific difficulties.

Limiting power options
KeyDescriptionValuesDefault
filenameFilename of the power.Stringnone
difficultyIDDifficulty name, matching the name of the difficulty in the dungeon package.Stringnone

This will only apply to instanced dungeons.

Example
powers:
- filename: movement_speed.yml
difficultyID:
- myDifficultyName1
- myDifficultyName2
- myDifficultyName3

spawnMessage

Sets the message to send when the boss spawns. Requires setting up the announcementPriority.

KeyValuesDefault
spawnMessageStrings and color codesnone
Example
announcementPriority: 3
spawnMessage: I rise once more!

create_boss_spawn_message.jpg


deathMessages

Sets the list of messages to send when the boss dies. Requires setting up the announcementPriority.

KeyValuesDefault
deathMessagesStrings, color codes and the placeholders belownone
Example
announcementPriority: 3
deathMessages:
- '&e&l---------------------------------------------'
- '&4The Test Boss has been killed!'
- '&c&l 1st Damager: $damager1name &cwith $damager1damage damage!'
- '&6&l 2nd Damager: $damager2name &6with $damager2damage damage!'
- '&e&l 3rd Damager: $damager3name &ewith $damager3damage damage!'
- '&4Slayers: $players'
- '&e&l---------------------------------------------'

create_boss_death_message.jpg

Death messages use the following placeholders:

Placeholders
ValueDescription
$damager1nameThe name of the top damager
$damager2nameThe name of the second top damager
$damager3nameThe name of the third top damager
$damager1damageThe damage amount of the top damager
$damager2damageThe damage amount of second top damager
$damager3damageThe damage amount of the third top damager
$playersDisplays a list of all damagers

onKillMessage

Sets the message to send when the boss kills a player. Requires setting up the announcementPriority.

KeyValuesDefault
onKillMessageStrings and color codesnone
Example
announcementPriority: 3
onKillMessage: I win, you lose!

create_boss_spawn_message.jpg


slimeSize

Sets the size of the slime boss, but only works for Slimes and Magmacubes.

KeyValuesDefault
slimeSizeInteger4
Example
slimeSize: 5

neutral

Sets if the boss will spawn as neutral or not. This only applies to entity types that can be neutral such as Wolves or Iron Golems.

KeyValuesDefault
neutralBooleanfalse
Example
neutral: true

Advanced settings

timeout

Sets the amount of time, in minutes, before the Custom Boss despawns.

KeyValuesDefault
timeoutTime (in minutes) Integer0
Example
timeout: 20

Sets the boss to escape after 20 minutes.


isPersistent

Sets if the boss can survive a chunk unload. Only recommended for event bosses due to potential performance impact from persistent chunk loading and entity tracking across server restarts.

KeyValuesDefault
isPersistenttrue / falsefalse
Example

Example:

isPersistent: true

damageModifiers

Sets weapons that bosses can be strong or weak against.

KeyValuesDefault
damageModifiersMaterialnone
Example
damageModifiers:
- material:DIAMOND_SWORD,multiplier:0.8
- material:TRIDENT,multiplier:2.0

In this example, bosses will only take 80% damage from diamond swords (or 20% less), but will take 200% damage from tridents (or 2x more).


normalizedCombat

Modifies the boss' damage and max health to match the values of the normalized entity in ~/plugins/EliteMobs/mobproperties. This is the default for regional bosses to guarantee a smooth difficulty curve.

KeyValuesDefault
normalizedCombattrue / falsefalse
Example

Example:

normalizedCombat: true

escapeMessage

Sets the message that gets broadcasted to players when the boss escapes through the timeout mechanic. Requires announcementPriority to be configured.

KeyValuesDefault
escapeMessageStringnone
Example
announcementPriority: 3
timeout: 60
escapeMessage: "Sayonara!"

create_boss_escape_message.jpg


locationMessage

Sets the message show in the boss bar. This is used to track both Custom Boss health and its location in the server. Requires the annoucementPriority to be configured.

KeyValuesDefault
locationMessageString, Color codes and the placeholders listed belownone

Placeholders:

ValueDescription
$distanceGets replaced with the distance the player is from the Custom Boss. This is the preferable option.
$locationGets replaced with the x y z location coordinates of the Custom Boss
Example
announcementPriority: 3
locationMessage: "&4Cool boss: At $location only $distance blocks away!"

create_boss_location_message.jpg

This would show something like Cool boss: At 414,55,347 only 10 blocks away!


uniqueLootList

Sets the Custom Items that drop from the boss.

KeyValuesDefault
uniqueLootListListnone

Loot entries in the Custom Loot follow the Loot Table format. Info about that here! Take note that some older files might be using outdated loot tables that look different than the example.

Example
uniqueLootList:
- filename: magmaguys_toothpick.yml
chance: 0.02
- minecraft:type=DIAMOND:amount=1:chance=0.9
- SCRAP:level=5-10:amount=10-20:ignorePlayerLevel=false:chance=0.5
- UPGRADE_ITEM:level=5-10:amount=1-2:ignorePlayerLevel=false:chance=0.1
- magmaguys_toothpick.yml:0.5:elitemobs.*

dropsEliteMobsLoot

Sets if the boss will drop EliteMobs loot, excluding items in uniqueLootList. Includes coins.

KeyValuesDefault
dropsEliteMobsLoottrue / falsetrue

Recommended to set to false for reinforcement mobs.

Example
dropsEliteMobsLoot: true

dropsVanillaLoot

Sets whether the Custom Boss will drop the vanilla loot usually associated to its vanilla mob type.

KeyValuesDefault
dropsVanillaLoottrue / falsetrue
Example
dropsVanillaLoot: true

dropsRandomLoot

Sets whether the Custom Boss will drop procedurally generated loot from EliteMobs. Does not include elite coins.

KeyValuesDefault
dropsRandomLoottrue / falsetrue
Example
dropsRandomLoot: true

trails

Sets the trail that the boss leaves behind when moving.

KeyValuesDefault
trailsParticles or item materialsnone
Example
trails:
- CLOUD

onDamageMessages

Sets the message that the Boss Mob displays when they hit a player. This is a list, and the one used is randomized from the list.

KeyValuesDefault
onDamageMessagesListnone
Example
onDamageMessages:
- "I hit you!"
- "Haha I hit you!"

create_boss_damage_message.jpg


onDamagedMessages

Sets the message that the Boss Mob displays when damaged by a player. This is a list, and the one used is randomized from the list.

KeyValuesDefault
onDamagedMessagesListnone
Example
onDamagedMessages:
- "You hit me!"
- "I've been hit!"

create_boss_damaged_message.jpg


mountedEntity

Sets the entity that the boss will mount and ride.

KeyValuesDefault
onDamagedMessagesFilename of the boss to mount or entity typenone

Don't try to make the boss mount itself.

Example
mountedEntity: wild_wolf.yml

create_boss_mounted.jpg

Note: Regional bosses will share their leash with the entity they're mounting, meaning they'll both be dragged back to the spawn location if they exceed the distance allowed by their leash.


announcementPriority

Sets the priority level for announcements. Lower priorities mean no announcements are made, higher priorities can announce not only on chat but also on discord if configured.

KeyValuesDefault
announcementPriorityInteger1

Here is a list of what the priorities do:

ValueDescription
0The boss will be fully silent, with no announcement messages.
1This is the default. Bosses can send chat messages, on spawn message, on death and escape messages.
2On top of the things in 1, the boss will be set to be trackable by players through the /em menu.
3On top of the things in 2, broadcast messages will be mirrored on Discord if configured. Discord configuration info here.

Here's an example of a boss that is trackable, is able to send spawn/death/escape messages on chat and on Discord:

Example
announcementPriority: 3

Note: You will have to configure the spawnMessage, deathMessage/deathMessages, escapeMessage for chat and discord announcements and the locationMessage for the tracking feature if you wish to use the corresponding Announcement Priority level.


followDistance

Set the distance at which bosses aggro and enter combat. Measured from the mob itself.

KeyValuesDefault
followDistanceDoublenone, uses defaults from Minecraft

Note 1: Regional bosses have half the followDistance when out of combat. This is so they don't aggro from too far away, which can cause annoying combat issues due to leash constraints.

Note 2: The higher the followDistance, the more intensive on the server CPU the boss becomes. Use carefully and responsibly!

Example
followDistance: 30

Sets a range of 30 blocks where if a player gets within that distance near the boss it will start chasing/attacking the player.


onDeathCommands

Sets the list of commands to run on custom boss death.

KeyValuesDefault
onDeathCommandsListnone

The list supports the following placeholders:

ValueDescription
$levelPlaceholder for the boss level.
$namePlaceholder for the boss name.
$chance=x$Makes a command have a chance to run.
$playersMakes the command run once for every player in the damagers list and replaces each time with the username of a different player on that list.
$locationXX coordinate of the boss at the time of death.
$locationYY coordinate of the boss at the time of death.
$locationZZ coordinate of the boss at the time of death.
$damager1nameUsername of the top damager
$damager2nameUsername of the second top damager
$damager3nameUsername of the third top damager

Take a look at the example below to get a better understanding of how these work.

Example
onDeathCommands:
- "say $players has killed $name! That was level $level!"
- "$chance=0.5$ say What a kill!"

create_boss_mounted.jpg

If Player1, Player2 and Player3 all damaged the boss before killing it, this is what the command output will be from console:

say Player1 has killed CustomBossName! That was level X!
say Player2 has killed CustomBossName! That was level X!
say Player3 has killed CustomBossName! That was level X!

Additionally, there is a 50% chance that the following will also be output:

say What a kill!

onSpawnCommands

Sets the list of commands that will run on boss spawn.

KeyValuesDefault
onSpawnCommandsListnone

This uses the same placeholders as onDeathCommands! Damager placeholders won't apply as there won't be any damagers at this time.

Example
onSpawnCommands:
- say Boss has spawned!

create_boss_mounted.jpg


onCombatEnterCommands

Sets the list of commands that will run when the boss enters combat.

KeyValuesDefault
onCombatEnterCommandsListnone

This uses the same placeholders as onDeathCommands! Damager placeholders won't apply as there won't be any damagers at this time.

Example
onCombatEnterCommands:
- say Boss has entered combat!

create_boss_mounted.jpg


onCombatLeaveCommands

Sets the list of commands to run when the boss leaves combat.

KeyValuesDefault
onCombatLeaveCommandsListnone

This uses the same placeholders as onDeathCommands!

Example
onCombatLeaveCommands:
- say Boss has left combat!

create_boss_mounted.jpg


disguise

Sets the LibsDisguises disguise if that plugin is enabled. More info here.

KeyValuesDefault
disguiseStringnone
customDisguiseDataStringnone
Example disguise
disguise: CHICKEN

create_boss_mounted.jpg

Example custom disguise
disguise: custom:the_beast_sanctuary_beast
customDisguiseData: player the_beast_sanctuary_beast setskin {"id":"44e6d42b-bd8d-4e48-873b-fae7afed36e4","name":"Unknown","properties":[{"name":"textures","value":"ewogICJ0aW1lc3RhbXAiIDogMTY2NjcwNjYwODA1MCwKICAicHJvZmlsZUlkIiA6ICI3MmY5MTdjNWQyNDU0OTk0YjlmYzQ1YjVhM2YyMjIzMCIsCiAgInByb2ZpbGVOYW1lIiA6ICJUaGF0X0d1eV9Jc19NZSIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS82YmYyMTY4NmM1MGQ1ODhmZmExMDZhZDdjNmViZTk1ZWZiMjE2NDU5ODRjZDFjZWYwODkzNDc4NzMzNmI2YTI3IiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0=","signature":"jSsQvpUeWVtyqjtnydPadormkrZLVihetiX4dFQb3+BF/1x6wOgsNKRnnwj6J1mfu2im79LYEJbL+fQ9p1SJIW1uZ6hV7vPSAGUopyXGHNibNXorfV/dGjM77S0t86Jls50XWgJAnLn5RdhQcHahDAHHZ8to6K0HW5gvKKSalR5X/myaiV0E5ujJ+LUFWIiuDmtsmyxTX1zsohyYrVMo/4sD0DpBN+as95wO476gLb5fDTDV569QwExlDOt60W8qSzPw6ncYsOKJIiRE3EddspUm3/NrfDiKApUh8UbzVtwu1XlVAxWNgYN3PkqhWKuE4kvORQuoSJzOgSHkiqdXsQOED2HXfOKdfsnpZUwjepIU5A+/mu0gc3mPQPToKSss2bC1nXn//0bOZZSuQRgTS6PkKDHIQ1nClSZQZlJIsiLmaaN2k1tIHTIlDquKN6G1Ta9c3t6G5kugjqRo78ebbt7l3e0Z3BcdOkuO2WbvBjIg5Uiqyf+cYDZedJ+OEOqL/U6VVlsmbw0rd5deHrbnPn9cRzmWGjrXnxIlAszl+0Uqabj/BrkWcbBCwZJEPaV1hHpC4nJX1m5xvKZHB2Bw0AYWaQ3f3tRBbCA/xqwCS0Px1QohzV0nvtiMbjB38ziT1M5DgLtAVLcHPio7THZMxXAi4IjEIMac9ODbh5OxthA="}],"legacy":false}

create_boss_mounted.jpg

Sets a custom disguise from skindex. Check this page to learn how to correctly format this data.


customModel

Sets the custom model to use, if you have a custom model and the FreeMinecraftModels or ModelEngine plugins. More info on making and using custom models here.

KeyValuesDefault
customModelStringnone
Example
customModel: your_model

customModelMountPointID

Sets the mount point ID for custom models when the boss is mounting or being mounted by another entity.

KeyValuesDefault
customModelMountPointIDStringnone
Example
customModelMountPointID: your_mount_point_id


frozen

Sets if the boss can move. Frozen bosses can still attack.
Note: this might not work on some entities.

KeyValuesDefault
frozentrue / falsefalse
Example
frozen: true

song

Sets the music a boss will play, starting when it spawns. Requires the .ogg file for the song to be in the resource pack.

KeyValuesDefault
songStringnone

Note: The song setting requires followDistance to be set, as followDistance determines the range at which the song starts playing. Check out the example on how to set the length (milliseconds) of the song.

Example

There are two ways to set up songs. Here is the first one:

song: name=elitemobs:ice_queen.idle length=76370

This will play the song ice_queen.idle for 76370 milliseconds and then loop it. Note that the location of the song is determined by the resource pack.

Here is the second way of setting up songs:

song: name=elitemobs:ice_queen.end_transition length=14328->name=elitemobs:ice_queen.end_loop length=28657

This will play the song ice_queen.end_transition for 14328 milliseconds and then transition to ice_queen.end_loop for 28657 milliseconds and loop the end_loop.

This allows bosses to have an "intro" or "transition" song and then a main track that loops.


cullReinforcements

Sets if the reinforcements of the boss will be removed when the boss dies.

KeyValuesDefault
cullReinforcementstrue / falsetrue
Example
cullReinforcements: true

movementSpeedAttribute

Sets the movement speed of the boss.
Note: anything beyond 0.36 might be too fast.

KeyValuesDefault
movementSpeedAttributeDoublenone
Example
movementSpeedAttribute: 0.3

Boss phases

Bosses can have phases that change when the boss reaches a certain percentage of health. When this happens, the boss starts using a different configuration file, meaning that everything about the boss can change, including things like the entity type.
To learn more about boss phases click here.

KeyDescriptionValuesDefault
phasesSets the phases that the boss will have. MandatoryListnone
phaseSpawnLocationSets where the phase boss spawns. OptionalStringnone
Example

For this example, we are going to show three different configuration files.

First boss configuration file: phase_1_boss.yml

name: "Phase 1"
entityType: ZOMBIE
phases:
- phase_2_boss.yml:0.60
- phase_3_boss.yml:0.30

Second boss configuration file: phase_2_boss.yml

name: "Phase 2"
entityType: SKELETON

Third boss configuration file: phase_3_boss.yml

name: "Phase 3"
phaseSpawnLocation: same_as_boss,10,64,100,0,0
entityType: RAVAGER

This boss would change to the configuration file phase_2_boss.yml at 60% health, and to the configuration file phase_3_boss.yml at 30% health in the same world as phase 2 and at coordinates x=10, y=64 and z=100. The entity type and name of the boss would also change.

The format for an entry is filename:healthPercentage.

phaseSpawnLocation is optional, if it is not set the boss will change phases where it's standing.

The following things are important to know when designing a phase boss:

  • The configuration file for the first phase sets all phases of the boss.
  • Threat / damage counted is kept between phases for players.
  • Switching phases is based on the percentage of health lost, which is preserved when switching to a different phase. This means increasing or decreasing the healthMultiplier between phases will not heal or damage the boss, it will still switch with the same percentage, but will have more or less health for that phase.
  • Phase bosses revert to phase 1 if they go out of combat.
  • Phase bosses which are also regional bosses share the same leash radius and timeout mechanic across all phases, and will respawn as the phase 1 boss when the timer is finished.
  • The configuration file for the last phase sets the loot for the boss.
  • Phases can not be skipped - overkill damage will still make the boss switch phases at the percentage defined.
  • Phase bosses that have mounts cease to be mounted when switching phases.

Regional bosses

Regional bosses are a specific type of Custom Bosses that spawn at a specific configured location and are able to respawn at that location after a delay. Additionally, they can have leashes that make sure they stay in a specific zone, among other features.

These are used for all of the dungeon content. To learn more about regional bosses click here.

KeyDescriptionValuesDefault
isRegionalBossSets if the boss is regional. Should be true if you want a regional boss.true / falsefalse
spawnLocationSets the spawn locations of the boss.Add these through the /em addSpawnLocation [filename.yml] command!none
spawnCooldownSets the respawn cooldown of the boss, in minutes.Integer0
leashRadiusSets the distance the boss can go from its spawn point before getting pulled back. Measured from spawn.Doublenone
onSpawnBlockStatesSets the blocks the boss will modify when it spawns.Check commands belownone
onRemoveBlockStatesSets the blocks the boss will modify when it despawns.Check commands belownone

As indicated, Regional Bosses can have onSpawnBlockStates and onRemoveBlockStates.

This is a very useful feature for modifying combat arenas during combat, especially when combined with phase switches, as it becomes possible to open and close combat arenas through changing block states.

The format for these is too complex to write manually, so a few commands exist to help you set them up:

CommandDescription
/em registerblocks [regional_boss_file.yml] [on_spawn/on_remove]Starts registering manual block selections for on spawn or on remove block states.
/em registerblocksedit [regional_boss_file.yml] [on_spawn/on_remove]Edits the on spawn or on remove block states.
/em registerblocksarea [regional_boss_file.yml] [on_spawn/on_remove]Allows admins to select large areas of blocks to save as states.
/em registerblocksareaedit [regional_boss_file.yml] [on_spawn/on_remove]Allows admins to edit large areas of blocks to save as states.
Example use:

Let's say you want to make a fight where a boss spawns in an arena that has an open door, and you want to make it so the door closes when the fight starts and reopens when the fight is over.

To do this, you will need two boss phases and to register three different sets of block states. For this example, I will name these phases phase_1_boss.yml and phase_2_boss.yml respectively.

  1. Use /em registerblocks phase_1_boss.yml on_spawn or /em registerblocksedit phase_1_boss.yml on_spawn to register the door blocks in their open state.

This means registering the air blocks. Area selection is recommended here.

This is necessary to make sure that the door is open when the boss spawns so players are guaranteed to have a way in.

  1. Use /em registerblocks phase_2_boss.yml on_spawn or /em registerblocksedit phase_2_boss.yml on_spawn to register the door blocks in their closed state.

This means registering the solid blocks of the door that would prevent the player from leaving.

This is necessary to change the door to be solid when the boss enters phase 2, preventing players from leaving.

  1. Use /em registerblocks phase_2_boss.yml on_remove or /em registerblocksedit phase_2_boss.yml on_remove to register the door blocks in their open state.

This means registering the same blocks from the first step again (the air blocks).

This is necessary to open the door when the boss dies, allowing players to leave the arena.


alert

Sets whether the boss is alert. By default, Regional Bosses are slowed and have a shorter aggro distance when they are out of combat. This setting prevents Regional Bosses from being slowed and having a shorter aggro distance while outside of combat, so they will always behave the same way in or out of combat.

KeyValuesDefault
alertBooleantrue
Example
alert: true

removeAfterDeath

Sets whether the Regional Boss will be permanently deleted after being killed. This is what BetterStructures uses for Shrines, where the Regional Boss is only designed to be fought against once and then never again at that location.

KeyValuesDefault
removeAfterDeathBooleanfalse
Example
removeAfterDeath: true

Instanced bosses

Instanced bosses are a subtype of Regional Bosses used in Instanced Dungeons.

KeyDescriptionValuesDefault
instancedMakes the custom boss instanced. Mandatory.true / falsefalse

Setting bosses to instanced is mandatory for instanced dungeons to work correctly. We also recommend removing leashes for any instanced bosses.

Example
instanced: true