Limits
Two different ceilings: max-bots, how many bots the server runs at once, and the limits block, how far each slider in the menu may be pushed.
The plugin has two things called a limit and they are not the same thing. One counts bots. The other bounds a number inside one bot. Confusing them is how a server ends up with a cap it did not mean to set.
max-bots | the limits block | |
|---|---|---|
| What it counts | Bots alive on the whole server | Nothing. It bounds one setting |
| Who it stops | The next player to type /bot | The player nudging a slider in the advanced menu |
| What happens at the edge | The spawn is refused with a message | The slider stops moving |
max-bots — how many bots exist
One number, at the bottom of config.yml, for the whole server.
# How many bots may exist on the server at once.
# Every bot thinks once per tick and searches for its own path,
# so this is a real ceiling and not a formality. Raise it only
# after watching the tick time with the current one full.
max-bots: 16The comment is not boilerplate. A bot is not a decoration that sits in a chunk: it observes, decides, aims, moves and swings every single tick, and when terrain gets in its way it runs its own bounded grid search on top of that. Sixteen bots is sixteen of those per tick. The number that tells you whether you can raise it is your tick time with the current ceiling full, not the number itself.
Every spawn goes through one place, so the ceiling has one place to live: /bot spawn, the menu's
spawn button, an automatic respawn and a bot another plugin asks for are all counted the same way. At
the ceiling the spawn fails with BotLimitReachedException, and the player reads bot.limit-reached:
bot:
limit-reached: "%prefix% {error}The server is already running %limit% bots. Try again in a moment."%limit% is the ceiling that refused the spawn.
The count is checked against players who do not already have a bot. If you have one, spawning again replaces it rather than adding to the total, so a full server never locks you out of your own bot.
max-bots is read as at least 1: setting it to zero or a negative number does not disable the
plugin, it leaves you with a ceiling of one.
The limits block — how far a slider goes
Every numeric setting in the advanced menu is a pair of buttons that adds or subtracts a step. This block is where each of those stops.
# Bounds the in-game menu clamps its sliders to.
limits:
min-attack-speed: 0.25
max-attack-speed: 4.0
min-movement-speed: 0.25
max-movement-speed: 3.0
min-attack-reach: 1.0
max-attack-reach: 6.0
min-follow-distance: 1.0
max-follow-distance: 12.0
min-attack-damage: 0.5
max-attack-damage: 40.0
min-max-health: 1.0
max-max-health: 40.0
min-shield-disable: 0.0
max-shield-disable: 20.0
# Totems stop at -1, which is the unlimited setting.
min-totems: -1.0
max-totems: 16.0| Slider | Range | What it bounds |
|---|---|---|
| Attack speed | 0.25 – 4.0 | The multiplier on the cadence the mode chose. |
| Movement speed | 0.25 – 3.0 | The multiplier on walk and sprint speed. 1.0 is a vanilla player. |
| Attack reach | 1.0 – 6.0 | Blocks the bot can hit from. Vanilla players get 3.0. |
| Follow distance | 1.0 – 12.0 | How close it stays out of combat. |
| Attack damage | 0.5 – 40.0 | A fully charged, non-critical hit, in half-hearts. |
| Max health | 1.0 – 40.0 | Maximum health, in half-hearts. |
| Shield disable | 0.0 – 20.0 | Seconds an axe hit keeps its shield down. |
| Totems | -1.0 – 16.0 | Spare totems per life. |
Two things about how a slider lands on its value:
- It rounds to one decimal. A step is applied, clamped into the range, and then rounded, so a slider never accumulates a trailing fraction no matter how many times it is nudged.
- Totems bottom out at
-1, and-1means unlimited. It is not a floor of "none" —0is none, the totem in the kit and nothing after it. One step below that is a bot that never runs out, which the menu shows as∞.
limits is applied when a player moves a slider. It does not re-clamp what you write under
advanced in config.yml. A default set outside its own bounds is used as written, and the first
nudge in the menu pulls it inside the range and leaves it there.
Raising a maximum is a design decision about your server, not a performance one: a bot with forty
half-hearts and six blocks of reach costs the same tick time as a default one. max-bots is the key
that costs tick time. See Behaviour for what a bot actually does
with its tick, and Configuration for every key in the file.
Something missing on this page? Tell us on Discord