Example boss json:
{
"entity": "minecraft:zombie", ID of the entity used as boss
"name": "Corvin the Rotten", Custom name
"visualscale": 1.2, Visual size amplifier
"experience": 300, Exp dropped
"effects": {
"minecraft:slowness": 1 Potion effects with "id": potionlevel
},
"attributes": { Entity Attributes, those only apply if the base entity has those already
"generic.max_health": 100, health value
"generic.follow_range": 50, follow range
"generic.knockback_resistance": 10, knockback resistance
"generic.attack_damage": 10 base attack damage, only affects melee
},
"customattributes": { Custom attributes, special values which this mod adds, further explained below
"dropgear": 1 Drops gear by slot
},
"gear": { List of gear the entity gets equipped with
"mainhand": "{id: \"minecraft:netherite_hoe\", Count: 1b, tag: {Damage: 0}}",
"chestplate": "{id: \"minecraft:netherite_chestplate\", Count: 1b, tag: {Damage: 0}}",
"helmet": "{id: \"minecraft:netherite_helmet\", Count: 1b, tag: {Damage: 0}}",
"leggings": "{id: \"minecraft:netherite_leggings\", Count: 1b, tag: {Damage: 0}}",
"feet": "{id: \"minecraft:netherite_boots\", Count: 1b, tag: {Damage: 0}}"
},
"ai-goals": { List of special AI behaviours added to this boss
"brutalbosses:aftercombatregen": { Boss starts to regen life after not having a target for a bit
"amount": 1
},
"brutalbosses:whirldwind": { Boss does every 200 ticks a whirldwind attack and applies the wither potion effect on hit
"potiononhit": "minecraft:wither",
"potionduration": 200,
"knockback": 4,
"cooldown": 200
},
"brutalbosses:charge": {} Boss gets the charge AI which occasionally gives it a speedboost
},
"spawnatchest": { This section determines where the boss spawns by setting the loottables of chests it spawns next to and the weight to appear
"minecraft:chests/simple_dungeon": 5,
"minecraft:chests/stronghold_crossing": 1,
"minecraft:chests/stronghold_corridor": 1,
"minecraft:chests/jungle_temple": 1,
"minecraft:chests/ruined_portal": 1,
"betterdungeons:skeleton_dungeon/chests/common": 1,
"betterdungeons:skeleton_dungeon/chests/middle": 1,
"betterdungeons:zombie_dungeon/chests/common": 5,
"betterdungeons:zombie_dungeon/chests/special": 5,
"betterdungeons:zombie_dungeon/chests/tombstone": 5
}
}
How to create your own custom boss of any entity:
Easiest is to download the datapack for the default bosses and modify it.
After downloading the bosses datapack unzip it and remove all but one of the boss files, we only keep those we want to change.
Rename the file to any new name you like, the name of the file is only used to summon the boss via command(replace with the actual name)
/brutalbosses spawnboss <filename>
Now you can modify the contents of the file, starting with putting in the ID of the entity you want to use and more, see below for more info.
To use the pack make sure this file structure is kept:
data/brutalbosses/bosses/
You also need a pack.meta file at the highest level next to the data folder, the datapack given already has one which you just need to modify to give it a different name (check minecraft wiki for pack.meta format to see further customization)
Then you zip up the datapack, make sure you include both the data folder and the pack.meta file, those need to be on the highest level inside the zip file. Give the zip file a custom name for your datapack.
Make sure your modifications follow the json syntax, so similar to the given default boss files.
in a {} scope you list entries seperated by comma ,
except the last entry does not get one.
"entity": "minecraft:zombie"
The first entry is the type of entity which acts as a boss, here you can choose any entity you like, but note that they'll need to have AI capabilities, so e.g. Armor stands do not work.
"entitynbt": ""
Allows you to add extra entity NBT data to the boss entity. You can get the nbt data by using the
/data get entity @e[limit=1,sort=nearest,type=!minecraft:player] command.
Copy the output of it from the latest.log file and replace all " with " .
"visualscale": 1.2
Sets the visual size of the entity, this only affects the clientsize visuals and hitbox, 1.2 multiplies the original scale, so its 20% large with this value. Values smaller than 1 decrease the size, e.g. 0.5 halves it.
"experience": 300
here you set the amount of experience dropped
"name": "Testname"
here you set the name of the boss
"namevisible": true
here you set whether the nameplate is shown
"protect_treasure": true
Sets the boss to protect the treasure of the chest it spawned on, by default false.
"droppeditemamount": 3
here you set the amount of items dropped from the loottable of the chest it spawned at, default is 3.
"showbossbar": true
here you set whether a bossbar is shown, default is true.
Example
"effects": { "minecraft:slowness": 1, "minecraft:resistance": 1 }
Here you set the potion effects which the boss has applied to itself.
"minecraft:slowness": 1
is potion ID: potion level.
List of vanilla potion IDs, you could use modded IDs too.
minecraft:speed
Increases movement speedminecraft:slowness
Decreases movement speedminecraft:haste
Increases mining speedminecraft:mining_fatigue
Decreases mining speedminecraft:strength
Increases attack damageminecraft:jump_boost
Increases jump heightminecraft:regeneration
Adds health regenerationminecraft:resistance
Grants damage reductionminecraft:fire_resistance
Grants fire immunityminecraft:water_breathing
Grants drowning immunityminecraft:invisibility
Gives invisibilityminecraft:weakness
Decreases attack damageminecraft:health_boost
Increases Healthminecraft:absorption
Gives absorbtionminecraft:glowing
Makes the boss glowminecraft:levitation
Gives levitationminecraft:slow_falling
Gives slow fallminecraft:conduit_power
Gives conduit power buffminecraft:dolphins_grace
Gives dolphins grace buff
Example
"attributes": {
"generic.max_health": 100,
"generic.follow_range": 50,
"generic.knockback_resistance": 10,
"generic.attack_damage": 10
}
Here you apply attribute values to your boss entity, note that not all entity have all attributes so some may not have an effect/log an error upon trying to apply.
"generic.max_health": 100
is attribute id: attribute numeric value
List of vanilla Attribute IDs, you could use modded IDs too.
generic.max_health
Increases max health, max 1024generic.follow_range
Sets the follow range, default 32, max 2048generic.knockback_resistance
Sets the knockback resistence, default 0.0, max 1.0generic.movement_speed
Sets the base movement speed, default 0.69, max 1024.0generic.flying_speed
Sets base flying speed, default 0.4, max 1024generic.attack_damage
Sets base attack damage for melee, default 2.0, max 2048.0generic.attack_knockback
Sets the knockback value of attacks, for basic attacks, default 0.0, max 5.0generic.armor
Sets the base armor value, default 0, max 30generic.armor_toughness
Sets the base armor toughness, default 0, max 20zombie.spawn_reinforcements
Zombie exclusive chance to spawning reeinforcements, default 0, max 1
Example
"customattributes": {
"dropgear": 1
}
Custom attributes are special attributes added by the brutalbosses mod.
"dropgear": 1
is attribute id: attribute numeric value
List custom attributes and their uses
attack_speed
Sets an attack speed modifier for melee attackers, e.g. 0.2 is five times slower, 1.5 50% fasterprojectile_damage_bonus
Adds damage bonus to all projectiles fired by this entitydropgear
Specifies which gearslots the boss drops on death, values 1-6, 6 drops all slots. Slot order: 1. mainhand 2. offhand 3. feet 4. legs 5. chest 6. headremovespellcastinggoals
Special attribute for evoker/illusioner entities which removes any vanilla spell casting AI on them
Example
"gear": {
"mainhand": "{id: \"minecraft:netherite_hoe\", Count: 1b, tag: {Damage: 0}}",
"chestplate": "{id: \"minecraft:netherite_chestplate\", Count: 1b, tag: {Damage: 0}}",
"helmet": "{id: \"minecraft:netherite_helmet\", Count: 1b, tag: {Damage: 0}}",
"leggings": "{id: \"minecraft:netherite_leggings\", Count: 1b, tag: {Damage: 0}}",
"feet": "{id: \"minecraft:netherite_boots\", Count: 1b, tag: {Damage: 0}}"
}
Equips the entity with custom items, note that only few entities are able to visually show the equipped items.
"mainhand": "{id: \"minecraft:netherite_hoe\", Count: 1b, tag: {Damage: 0}}"
is equipment slot: itemstack nbt
The possible equipment slots are: mainhand, offhand, feet, legs, chest, head
To allow dropping the items on death check the custom attribute dropgear
.
Get the itemstack nbt values by taking the item in your hand and running this command:
/data get entity @s SelectedItem
To easy copy&paste the result you can copy the output from your games log file under minecraft/logs/latest.log
Note that " has to be " in json/datapack.
Example:"{id:"minecraft:shield",Count:1b,tag:{Damage:0}}"
Example
"ai-goals": {
"brutalbosses:aftercombatregen": {
"amount": 1
},
"brutalbosses:whirldwind": {
"potiononhit": "minecraft:wither",
"potionduration": 200,
"knockback": 4,
"cooldown": 200
},
"brutalbosses:charge": {}
}
Add custom AI's to the bosses to give them unique attacks and behaviour.
"brutalbosses:charge": {}
syntax is ai_ID : {} params. No params means default parameters are used. If you want to use the default parameter of a value you do not need to specify it.
Phases: You can specify health dependent AI behaviour on most custom AI's through the healthinterval
AI parameter, which you find in the AI details list below. For multiple health intervals in which the AI is active use this format:
"healthinterval": "100-50;30-20;10-0"
which would make the AI active from 100% to 50% HP, 30% to 20% HP and 10% to 0% HP.
Duplicate AI's: to add multiple of the same AI you can add a number from 1-4 to the end of the AI name, e.g.brutalbosses:whirldwind
and brutalbosses:whirldwind1
.
List of AI's, their effects and parameters
Adds minecrafts random walking AI to the entity, makes them randomly path around.
Parameters:
{}
empty/none
Adds player targeting to the entity.
Parameters:
{}
empty/none
Adds minecrafts melee attack ai to the entity, which includes chasing it and hitting it. Disables other minecraft attack/move ai's.
Parameters:
{}
empty/none
Adds minecrafts crossbow attack ai to the entity, which includes chasing it and hitting it. Disables other minecraft attack/move ai's.
Parameters:
{}
empty/none
Adds a special AI of brutal bosses which switches between melee attacking and using its offhanditem, if the offhand item is a shield it will block.
Parameters:
{}
empty/none
Adds a special AI of brutal bosses which switches between melee attacking and using its offhanditem, if the offhand item is a shield it will block. Disables other minecraft attack/move ai's.
Parameters:
{}
empty/none
Adds an AI which rescues the entity when it is stuck in lava for a period of time. Useful esp for fire resistant entities to not have them stuck forever.
Parameters:
{}
empty/none
Adds an ai to chase its target, disables vanilla movement/attack AI's, as those already do movement.
Parameters:
{
"healthinterval": "100-0" The health interval in which this AI is active, in health percent, default: 100-0
"chasedistance": 20 The distance in blocks at which the boss follows its target, default: 2
}
Adds a special attack AI which shoots a certain amount of fireballs in the given intervals.
Parameters:
{
"healthinterval": "100-0" The health interval in which this AI is active, in health percent, default: 100-0
"projectile_count": 3, The amount of projectiles prepared and shot, default: 1
"projectile_interval": 60, The interval in ticks between usages, default: 50
"projectile_distance": 25, The max distance of the target allowed to use this projectile, default: 15
"projectile_speed": 1.0, The speed multiplier of the projectile, default: 1.0(normal speed)
"projectile_aoe": false Whether to shoot a projectile on each nearby player when firing, default: false
}
Adds a special attack AI which shoots a certain amount of wither skulls in the given intervals.
Parameters:
{
"healthinterval": "100-0" The health interval in which this AI is active, in health percent, default: 100-0
"projectile_count": 3, The amount of projectiles prepared and shot, default: 1
"projectile_interval": 60, The interval in ticks between usages, default: 50
"projectile_distance": 25, The max distance of the target allowed to use this projectile, default: 15
"projectile_speed": 1.0, The speed multiplier of the projectile, default: 1.0(normal speed)
"projectile_aoe": false Whether to shoot a projectile on each nearby player when firing, default: false
"dangerous": false Whether wither skulls are dangerous, dangerous means they fly through blocks and glow blue, those are the ones the actual wither uses
}
Adds a special attack AI which shoots a certain amount of snowballs in the given intervals.
Parameters:
{
"healthinterval": "100-0" The health interval in which this AI is active, in health percent, default: 100-0
"projectile_count": 3, The amount of projectiles prepared and shot, default: 1
"projectile_interval": 60, The interval in ticks between usages, default: 50
"projectile_distance": 25, The max distance of the target allowed to use this projectile, default: 15
"projectile_speed": 1.0, The speed multiplier of the projectile, default: 1.0(normal speed)
"projectile_aoe": false Whether to shoot a projectile on each nearby player when firing, default: false
}
Adds a special AI which regenerates health after the boss is not fighting for a while and has no target.
Parameters:
{
"amount": 2 The amount of health regenerated per tick, default: 2
}
Adds a special attack AI which shoots a cobweb projectile at a target, creates a cobweb on impact.
Parameters:
{
"healthinterval": "100-0" The health interval in which this AI is active, in health percent, default: 100-0
"projectile_count": 3, The amount of projectiles prepared and shot, default: 1
"projectile_interval": 60, The interval in ticks between usages, default: 50
"projectile_distance": 25, The max distance of the target allowed to use this projectile, default: 15
"projectile_speed": 1.0, The speed multiplier of the projectile, default: 1.0(normal speed)
"projectile_aoe": false Whether to shoot a projectile on each nearby player when firing, default: false
}
Adds a special AI which summons reinforcement mobs in an interval.
Parameters:
{
"healthinterval": "100-0" The health interval in which this AI is active, in health percent, default: 100-0
"interval": 600, Interval at which entities are summoned, default: 500 ticks
"maxcount": 10, Maximum amount of summoned entities alive at the same time, default: 2
"count": 2, The amount of entities summoned per activation
"ownerdamagepct": 0f, The percentage of health the boss looses when a summoned minion died
"entities": [ The list of entities of which a summon is randomly chosen, default: [] empty. To add
a special entity you can provide the entities NBT used when creating it, by using the
/data get entity @e[limit=1,sort=nearest,type=!minecraft:player] command. Copy the output of it
from the latest.log file and replace all " with \" . Example for a zombie summon with nbt data,
for a small zombie:
{
"entityid": "minecraft:zombie",
"entitynbt": "{Brain: {memories: {}}, HurtByTimestamp: 251, IsBaby: 1b, Attributes: [{Base: 0.0d, Name: \"minecraft:zombie.spawn_reinforcements\"}, {Base: 0.08d, Name: \"forge:entity_gravity\"}, {Base: 0.23000000417232513d, Name: \"minecraft:generic.movement_speed\"}], Invulnerable: 0b, FallFlying: 0b, PortalCooldown: 0, AbsorptionAmount: 0.0f, InWaterTime: -1, FallDistance: 0.0f, CanUpdate: 1b, DeathTime: 0s, ForgeCaps: {\"brutalbosses:bosscap\": {}}, HandDropChances: [0.085f, 0.085f], PersistenceRequired: 0b, UUID: [I; -1356225159, 445793596, -1560838011, 528914832], Motion: [0.0d, -0.0784000015258789d, 0.0d], Health: 18.119999f, LeftHanded: 0b, Air: 300s, OnGround: 1b, Rotation: [88.88051f, 0.0f], HandItems: [{}, {}], ArmorDropChances: [0.085f, 0.085f, 0.085f, 0.085f], Pos: [-59.22638885988113d, 55.0d, 100.53636996754722d], CanBreakDoors: 0b, Fire: -1s, ArmorItems: [{}, {}, {}, {}], CanPickUpLoot: 0b, HurtTime: 0s, DrownedConversionTime: -1}"
},
{
"entityid": "minecraft:skeleton"
},
{
"entityid": "minecraft:husk"
},
{
"entityid": "minecraft:wither_skeleton"
},
{
"entityid": "minecraft:stray"
}
]
}
Adds a special melee AI which does a whirldwind attack in an area around the boss. Can apply potion effects
Parameters:
{
"healthinterval": "100-0" The health interval in which this AI is active, in health percent, default: 100-0
"attackdist": 4, The distance at which the whirldwind can be used, default: 4
"extradamage": 2, Additional damage the whirldwind deals in addition to normal melee hit damage, default: 2
"potiononhit": "minecraft:slowness", The potion effect applied on hitting an entity, default: none
"potionlevel": 1, The level of the potion effect applied, default: 1
"potionduration": 80, The duratin of the potion applied in ticks, default: 60
"knockback": 4, The strength of the knockback applied, default: 4
"cooldown": 80, The ticks between usages, default: 80
"knockup": false Whether to do a knock upwards instead of backwards, default: false
}
Adds a special melee hit AI, which can apply potion effects. Does not include moving and is thus not disabled by e.g. the chasing AI and normally used alongside it.
Parameters:
{
"healthinterval": "100-0" The health interval in which this AI is active, in health percent, default: 100-0
"attackdist": 2, The distance at which the melee hit can be used, default: 2
"damage": 2, Additional damage the hit deals in addition to normal melee hit damage, default: 2
"potiononhit": "minecraft:slowness", The potion effect applied on hitting an entity, default: none
"potionlevel": 1 The level of the potion effect applied, default: 1
"potionduration": 60, The duratin of the potion applied in ticks, default: 60
"knockback": 0, The strength of the knockback applied, default: 0
"cooldown": 30 The ticks between usages, default: 30
}
Adds a special charge AI, which speeds up the entity for a short amount of time to charge at its target
Parameters:
{
"healthinterval": "100-0" The health interval in which this AI is active, in health percent, default: 100-0
"mindist": 3, The minimum distance at which the charge effect activates, default: 3
"duration": 20, Duration in ticks of the increased speed, default: 20
"interval": 200 Ticks between usages, default: 200
}
Adds a special AI which shoots big exploding fireballs at its target
Parameters:
{
"healthinterval": "100-0" The health interval in which this AI is active, in health percent, default: 100-0
"projectile_count": 3, The amount of projectiles prepared and shot, default: 1
"projectile_interval": 60, The interval in ticks between usages, default: 50
"projectile_distance": 25, The max distance of the target allowed to use this projectile, default: 15
"projectile_speed": 1.0, The speed multiplier of the projectile, default: 1.0(normal speed)
"projectile_aoe": false Whether to shoot a projectile on each nearby player when firing, default: false
}
Adds a special AI which shoots items of any kind at its targets, with custome effects The item parameter needs to be in the same format as used in the gear section, check the gear section on how to obtain the right string.
Parameters:
{
"healthinterval": "100-0" The health interval in which this AI is active, in health percent, default: 100-0
"projectile_count": 3, The amount of projectiles prepared and shot, default: 1
"projectile_interval": 60, The interval in ticks between usages, default: 50
"projectile_distance": 25, The max distance of the target allowed to use this projectile, default: 15
"projectile_speed": 1.0, The speed multiplier of the projectile, default: 1.0(normal speed)
"projectile_aoe": false Whether to shoot a projectile on each nearby player when firing, default: false
"projectilesize": 1.0, The size modifier for the projectile, default: 1.0
"item": "{id: \"minecraft:nether_star\", Count: 1b}", The item used to shoot at the target, default: nether star
"damage": 0, The magic damage dealth by the projectile, default: 0
"teleport": false, Whether the boss teleports to the location or entity on hit, default: false
"lightning": false Whether the projectile does lightning on impact, default: false
"explode": false Whether the projectile explodes on impact, default: false
}
Adds a special AI which applies the given potion effects for the given duration. Also can display an item behind the entity, like a banner.
Parameters:
{
"interval": 600, The interval in ticks between usages, default: 200
"duration": 100, The potion duration in ticks, default: 100
"visibleitem": "{id: \"minecraft:gray_banner\", Count: 1b, tag: {BlockEntityTag: {Patterns: [{Pattern: \"bri\", Color: 15}, {Pattern: \"bo\", Color: 15}]}}}", The item shown behind the entity as visual indicator, default: none.
"visibleitemsize": 4.0, The size of the item shown behind the entity, default: 1.0
"healthinterval": "100-80", The health interval in which this AI is active, in health percent, default: 100-0
"potions": { The list of potions and their level to apply for the duration above
"minecraft:resistance": 4,
"minecraft:regeneration": 2
}
}
Example
"spawnatchest": {
"minecraft:chests/simple_dungeon": 5,
"minecraft:chests/stronghold_crossing": 1,
"minecraft:chests/stronghold_corridor": 1,
"minecraft:chests/jungle_temple": 1,
"minecraft:chests/ruined_portal": 1,
"betterdungeons:skeleton_dungeon/chests/common": 1,
"betterdungeons:skeleton_dungeon/chests/middle": 1,
"betterdungeons:zombie_dungeon/chests/common": 5,
"betterdungeons:zombie_dungeon/chests/special": 5,
"betterdungeons:zombie_dungeon/chests/tombstone": 5
}
The spawn location of a boss is determing by lootable containers put into a structure, when the structure generates with a fitting container then the config's global spawn chance is rolled and a random boss of the weighted pool is chosen and spawned.
The bosses loot consist of custom loot set via gear in the gear section and items found in the chest it spawned next to, so the spawn location also determines the appropiate loot to drop.
You set the spawn location by giving the boss a list of loot table IDs and weights, the higher the weight the more likely this boss it to be chosen of all bosses which can spawn at this loot table.
"minecraft:chests/simple_dungeon": 5,
The first entry here is the loottable id, second is the weight of this boss.
Weight is pretty simple, a weight of 5 simply means that for this loottable there are 5 entries for this boss, lets e.g. say you have a zombie boss and a spider boss both on the same loottable. The zombieboss has weight 5, the spiderboss weight 3. Then the list of bosses which a position is randomly chosen from to spawn looks like this:
zombieboss
zombieboss
zombieboss
zombieboss
zombieboss
spiderboss
spiderboss
spiderboss
So the zombieboss has a chance of 5/8 to be chosen and spiderboss has a chance of 3/8. If you want to fine-grain the chances you can add the loottable to the dummy boss, and add an aditional weight there, when the dummy boss is chosen there just won't be a boss spawning.
So to add a boss spawn to a certain dungeon you need to find the loottable ID of the chest used in that dungeon and put it into the bosses spawnatchest
list like above. This is how compat with custom dungeon/structures and loot pools is achieved, bosses spawn next to a certain loot table so you can add any modded ID there aswell.
To find a loottable of a chest, or display lootables of chests without bosses in the log you can enable the config option printChestLoottable
which shows the loottable of a chest on first open, or prints a message about unused chests into the latest.log.
Loot dropped is taken from the loot table the boss spawns at to not break any item progression and be in line with the intended rewards of that dungeon/structure. You can use this to adapt boss difficult to loot, e.g. the more difficult bosses you spawn at end city treasures, the easier ones at the simple dungeon loottable.
List of default vanilla loottables used:
- minecraft:chests/simple_dungeon
- minecraft:chests/end_city_treasure
- minecraft:chests/abandoned_mineshaft
- minecraft:chests/nether_bridge
- minecraft:chests/stronghold_library
- minecraft:chests/stronghold_crossing
- minecraft:chests/stronghold_corridor
- minecraft:chests/desert_pyramid
- minecraft:chests/jungle_temple
- minecraft:chests/jungle_temple_dispenser
- minecraft:chests/igloo_chest
- minecraft:chests/woodland_mansion
- minecraft:chests/underwater_ruin_small
- minecraft:chests/underwater_ruin_big
- minecraft:chests/buried_treasure
- minecraft:chests/shipwreck_map
- minecraft:chests/shipwreck_supply
- minecraft:chests/shipwreck_treasure
- minecraft:chests/pillager_outpost
- minecraft:chests/bastion_treasure
- minecraft:chests/bastion_other
- minecraft:chests/bastion_bridge
- minecraft:chests/bastion_hoglin_stable
- minecraft:chests/ruined_portal
- minecraft:chests/village/village_weaponsmith
- minecraft:chests/village/village_toolsmith
- minecraft:chests/village/village_armorer
- minecraft:chests/village/village_cartographer
- minecraft:chests/village/village_mason
- minecraft:chests/village/village_shepherd
- minecraft:chests/village/village_butcher
- minecraft:chests/village/village_fletcher
- minecraft:chests/village/village_fisher
- minecraft:chests/village/village_tannery
- minecraft:chests/village/village_temple
- minecraft:chests/village/village_desert_house
- minecraft:chests/village/village_plains_house
- minecraft:chests/village/village_taiga_house
- minecraft:chests/village/village_snowy_house
- minecraft:chests/village/village_savanna_house
Thats it, have fun!