Mobs
Mobs are listed under mobs: in mobs.yml, next to config.yml. A change applies to the mobs spawned after /gcadmin reload.
mobs:
stone_sentinel:
model: stone_sentinel
name: Stone Sentinel
level: 5
health: 40.0
damage: 5.0
defense: 20.0
skills:
charge: { cooldownTicks: 140, windupTicks: 24, damageMultiplier: 1.5, minRange: 4.0, maxRange: 12.0 }
loot:
- { item: cobblestone, amount: 1-3 }
The tiers
The world is cut into tiers of 10 levels, a zone each, and each tier has its own mobs, of the game's own bodies with the RPG around
them (ai: vanilla). The last one of a tier is an elite: rare (a low weight and a maxAlive of 1 in its zone), with a boss bar and a big life.
| Tier | Zone | Mobs |
|---|---|---|
| 1 to 10 | Heartlands | Zombie (2), Skeleton (4), Meadow Spider (6), Bandit Chief (9) |
| 10 to 20 | Western Woods | Forest Witch (14), Forest Pillager (16), Forest Vindicator (18), Woodland Beast (20) |
| 20 to 30 | Northern Marches | Marches Stray (22), Marches Footman (24), Marches Raider (27), Marches Warlord (30) |
| 30 to 40 | Eastern Coast | Coast Drowned (32), Sunbaked Husk (34), Coast Raider (36), Tide Warden (40) |
The tiers 5 to 10 still use the stone mobs (Stone Sentinel, Stone Crab, Stone Warden), whose levels do not match their zones yet.
The stats
A mob's life, damage and defense come from its level and its role:
| Role | Life | Damage | Defense | What it is |
|---|---|---|---|---|
grunt | x1 | x1 | x1 | What most of a zone is. |
brute | x1.6 | x0.9 | x1.3 | Slower to kill, a little less hard to take. |
skirmisher | x0.7 | x1.2 | x0.6 | Fragile, hurts, usually from afar. 10 % critical hits. |
elite | x6 | x1.4 | x1.5 | Rare, with a boss bar. 15 % critical hits. |
Before the role, a mob of level L has 20 + 6 L + 0.15 L² of life, 3 + 0.9 L of damage and 1.5 L of defense. The numbers are written
out in mobs.yml: change them there. node tools/mob-stats.mjs <level> <role> gives those of a new mob, and --table and --yaml print the
whole roster (see for developers).
These numbers are provisional. Players have a level, but their attack does not grow with it yet: a blow does the damage of the weapon (4 to 8), so the high tiers take very long to clear until players have an attack that grows with their level, and the curve is to be set against it.
Two kinds of mind
ai | What it is |
|---|---|
custom (default) | The module's mind: the mob picks the nearest player in sight, chases them, stops in reach, strikes, and uses its skills and phases. This is what a model and the skills need. |
vanilla | The game's own mind, kept as it is: a zombie walks and hits, a skeleton shoots as a skeleton does. The module only adds the RPG around it: life, damage, defense, name, level and loot. |
type is the entity that makes the body (a zombie by default; skeleton, spider...). With a model it is hidden under the model;
without one the body is seen as it is. A model comes from BetterModel
(plugins/BetterModel/models/<model>.bbmodel) and needs ai: custom.
Settings
| Setting | Default | What it is |
|---|---|---|
type | zombie | The entity of the body. |
ai | custom | custom or vanilla, above. |
model | none | A BetterModel model. |
name, level | Shown above the mob with its life. The level also sets its experience when xp is not given. | |
xp | 0 | Experience given to the player who kills it. The mobs of mobs.yml give 10 times their level. |
boss | false | Shows a boss bar with its life to the players within followRange. |
health | 20 | Its own life, shown above it. The body does not lose life until it runs out. |
damage | 3 | Base damage of its blow. |
defense | 0 | 100 halves the damage it takes, 300 divides it by four (custom damage model). |
critChance, critMultiplier | 0, 1.5 | A chance from 0 to 1 and the damage of a critical hit (custom damage model). |
speed | 0.23 | Blocks per tick, as the movement_speed attribute. |
followRange | 32 | How far it notices a target, in blocks. |
bodyScale | 1 | Size of the invisible body that walks. It can still be hit, so it must stay inside the model. |
scale | 1 | Size of the whole mob (model, body, hitboxes, reaches): 2 is twice as big. |
attackReach | 2.5 | Distance from its center at which it attacks, in blocks. It grows with scale. |
keepDistance | 0 | A target closer than this makes it back away instead of closing in (0: never). It still strikes a target in reach. |
holdRange | 0 | Once its target is in sight within this many blocks, it stops walking to shoot (0: it always closes in). Above keepDistance. |
attackImpactTicks | 7 | From the start of the attack animation to the damage: when the blow lands in the animation. |
attackCooldownTicks | 24 | From the start of a blow to the next. |
splitInto, splitCount | none, 2 | Another mob of the file that appears where this one dies, splitCount times (2 to 8). A slime that splits into smaller slimes, which may split too. |
skills | none | See below. |
phases | none | See below. |
loot | none | See below. |
Skills
Tried in order, each when it is ready and fits. The name of an entry is its type unless it has a type. Every skill has:
| Setting | What it is |
|---|---|
cooldownTicks | Time before it can be used again. |
windupTicks | How long the warning shows before the blow, so players can get out of the way. |
damageMultiplier | Times the mob's damage. |
Distances are for scale 1 and grow with the mob.
| Type | What it does | Its own settings |
|---|---|---|
charge | Marks a band on the ground towards the target, then rushes along it. | minRange, maxRange, overshoot (past the target), speed (blocks per tick), hitRadius, knockback, recoveryTicks (still afterwards) |
ground_zone | Marks a circle under the target, which fills up until the blow. | range, radius, knockUp, animation and animationImpactTicks (played so that its impact falls with the blow) |
shoot | Draws a bow at the target, following it, locks its aim a few ticks before shooting a real arrow (aimed higher with the distance). The drawn bow is the warning: nothing on the ground. | minRange, maxRange, arrowSpeed, lockTicks, recoveryTicks |
Bosses and phases
boss: true shows a boss bar, and scale makes the mob bigger. phases: change it as its life falls. Each starts once the life
falls below belowHealth (0 to 1): the mob stops, roars and changes for transitionTicks, unhurt, then fights with the phase's
scale, speed, damageMultiplier, skillCooldownMultiplier, bossBarColor and skills (which replace the mob's when given).
stone_warden is an example.
Loot
loot: drops where the mob dies, for its killer only:
| Setting | What it is |
|---|---|
item | An item, as in /give. |
amount | A number (3) or a range (1-3). |
chance | From 0 to 1. Always when missing. |
name | A name in MiniMessage, instead of the item's. |
Models
A .bbmodel is a Blockbench file. In it, a bone named b_<anything> holding one hidden cube is a hitbox: BetterModel makes it a
real hitbox that follows the bone through the animations and passes hits on to the mob. Rules when making a model:
- Build a shape from several boxes. A box does not rotate, and its footprint in the game is a square whose side is the average of the cube's width and depth: a long cube is wrong, split it.
- Keep the invisible body inside the model: it can still be hit. Set
bodyScaleto fit. bodyScaleis also what collides with blocks: a large model on a small body clips through walls, because pathfinding does not know the shape of the model.- BetterModel plays
idle,walkanddeathby itself.attackis started by the module.
To see the hitboxes, set debug.hitbox: true in plugins/BetterModel/config.yml.
Natural spawns
blockNaturalSpawns (on by default) stops the game's own hostile mobs from appearing, at any difficulty, so the only ones in the
world are those of the zones. Spawners, eggs and commands still work, and animals and villagers are not touched.