Drills
The four kinds, the sixteen shipped drills with every key they are written with, and how to add a seventeenth.
A drill is not a name the code knows. It is a block of numbers under drills in config.yml: one of
four kinds, and how many targets, how big, how far, where, for how long, whether they move and what
the player holds. The sixteen shipped drills are those numbers and nothing else, which makes them the
reference for any drill you add. Menus, records, leaderboards and placeholders pick a new block up by its
id.
The four kinds
| Kind | What the player does | Scored on |
|---|---|---|
FLICK | Hits targets. A hit one disappears and another appears somewhere else. | Points per minute: hits earn, misses and expired targets cost. |
REACTION | Waits for a grey target to light up, then hits it. | The average reaction, corrected for ping; a click before the light costs. |
TRACK | Keeps the crosshair on a player-shaped target that strafes. Clicking does nothing. | The percentage of the session the crosshair was on it. |
COMBO | Fights a player-shaped target with a real weapon, at three blocks of reach. Every hit knocks it back. | Points per minute like FLICK, plus a bonus for every hit that extends a combo. |
The formulas are on Scoring.
The shipped drills
| Drill | Name | Kind | Weight | Targets | Size | Distance | What makes it |
|---|---|---|---|---|---|---|---|
gridshot | Gridshot | FLICK | 1.0 | 3 | 0.8 | 6 | A 3×3 grid straight ahead, 11° between cells. |
scatter | Scatter | FLICK | 1.0 | 3 | 0.8 | 6–8 | Three targets anywhere in a 50° spread, 9° apart. |
sixshot | Sixshot | FLICK | 1.3 | 6 | 0.55 | 7 | Six small targets on a 5×4 grid, 8° between cells. |
microshot | Microshot | FLICK | 1.4 | 1 | 0.45 | 7–8 | One small target close to the crosshair: a 24° spread. |
spidershot | Spidershot | FLICK | 1.2 | 1 | 0.7 | 6–8 | Every other target dead ahead, so each flick out comes back. |
flick | Wide flicks | FLICK | 1.2 | 1 | 0.7 | 5–10 | A 110° spread, each target at least 25° from the last. |
precision | Precision | FLICK | 1.6 | 1 | 0.35 | 8–12 | One tiny target, far away. |
decay | Decay | FLICK | 1.3 | 2 | 0.75 | 6–9 | Targets expire after 1.2 seconds. |
switch | Target switch | FLICK | 1.3 | 4 | 0.7 | 6–9 | Four up, one lit at a time; only the lit one counts. |
strafe | Strafe shot | FLICK | 1.4 | 1 | 0.9 | 6–7 | One target that strafes and hops instead of respawning. |
reaction | Reaction | REACTION | 1.0 | 1 | 1.0 | 6 | Ten lights, 1 to 3.5 seconds apart. |
tracking | Tracking | TRACK | 1.0 | 1 | 0.6 × 1.8 | 5 | A player-sized target strafing at 2–4.5 blocks a second. |
evasive | Evasive | TRACK | 1.4 | 1 | 0.6 × 1.8 | 4.5 | Faster strafes, quicker turns, more hops. |
combo | Combo 1.8 | COMBO | 1.3 | 1 | 0.6 × 1.8 | 3–3.5 | Diamond sword, no attack cooldown, 0.8 blocks of knockback. |
combo_19 | Combo 1.9 | COMBO | 1.4 | 1 | 0.6 × 1.8 | 3–3.5 | Diamond sword with the cooldown: an uncharged swing is rushed. |
axe | Axe timing | COMBO | 1.5 | 1 | 0.6 × 1.8 | 3–3.5 | Diamond axe with the cooldown, a 1.6-second combo window. |
Every drill runs 30 seconds except reaction, which ends on its tenth light and is capped at 90.
Sizes and distances are blocks, before the player's own settings
multiply them.
As written in the generated file:
drills:
gridshot:
display-name: Gridshot
icon: LIME_CONCRETE
description: Three targets on a 3×3 grid.
kind: FLICK
weight: 1.0
duration: 30.0
targets: 3
size: 0.8
height: 0.0
distance:
min: 6.0
max: 6.0
spread:
yaw: 0.0
pitch-min: 0.0
pitch-max: 0.0
grid:
columns: 3
rows: 3
spacing: 11.0
lifetime: 0.0
ordered: false
return-to-centre: false
min-separation: 0.0
weapon: ""
scatter:
display-name: Scatter
icon: GREEN_CONCRETE
description: Three targets anywhere. Hit them fast.
kind: FLICK
weight: 1.0
duration: 30.0
targets: 3
size: 0.8
height: 0.0
distance:
min: 6.0
max: 8.0
spread:
yaw: 50.0
pitch-min: -8.0
pitch-max: 22.0
lifetime: 0.0
ordered: false
return-to-centre: false
min-separation: 9.0
weapon: ""
sixshot:
display-name: Sixshot
icon: BLUE_CONCRETE
description: Six small targets on a wide grid.
kind: FLICK
weight: 1.3
duration: 30.0
targets: 6
size: 0.55
height: 0.0
distance:
min: 7.0
max: 7.0
spread:
yaw: 0.0
pitch-min: 0.0
pitch-max: 0.0
grid:
columns: 5
rows: 4
spacing: 8.0
lifetime: 0.0
ordered: false
return-to-centre: false
min-separation: 0.0
weapon: ""
microshot:
display-name: Microshot
icon: PINK_CONCRETE
description: Small targets close to the crosshair.
kind: FLICK
weight: 1.4
duration: 30.0
targets: 1
size: 0.45
height: 0.0
distance:
min: 7.0
max: 8.0
spread:
yaw: 24.0
pitch-min: -4.0
pitch-max: 10.0
lifetime: 0.0
ordered: false
return-to-centre: false
min-separation: 3.0
weapon: ""
spidershot:
display-name: Spidershot
icon: COBWEB
description: Flick out, then back to the centre.
kind: FLICK
weight: 1.2
duration: 30.0
targets: 1
size: 0.7
height: 0.0
distance:
min: 6.0
max: 8.0
spread:
yaw: 100.0
pitch-min: -15.0
pitch-max: 30.0
lifetime: 0.0
ordered: false
return-to-centre: true
min-separation: 18.0
weapon: ""
flick:
display-name: Wide flicks
icon: ORANGE_CONCRETE
description: Wide flicks. Turn fast, stop exact.
kind: FLICK
weight: 1.2
duration: 30.0
targets: 1
size: 0.7
height: 0.0
distance:
min: 5.0
max: 10.0
spread:
yaw: 110.0
pitch-min: -12.0
pitch-max: 30.0
lifetime: 0.0
ordered: false
return-to-centre: false
min-separation: 25.0
weapon: ""
precision:
display-name: Precision
icon: WHITE_CONCRETE
description: Tiny, distant targets. Be exact.
kind: FLICK
weight: 1.6
duration: 30.0
targets: 1
size: 0.35
height: 0.0
distance:
min: 8.0
max: 12.0
spread:
yaw: 40.0
pitch-min: -6.0
pitch-max: 18.0
lifetime: 0.0
ordered: false
return-to-centre: false
min-separation: 6.0
weapon: ""
decay:
display-name: Decay
icon: MAGENTA_CONCRETE
description: Targets vanish after a second.
kind: FLICK
weight: 1.3
duration: 30.0
targets: 2
size: 0.75
height: 0.0
distance:
min: 6.0
max: 9.0
spread:
yaw: 70.0
pitch-min: -10.0
pitch-max: 25.0
lifetime: 1.2
ordered: false
return-to-centre: false
min-separation: 12.0
weapon: ""
switch:
display-name: Target switch
icon: YELLOW_CONCRETE
description: Only the lit target counts.
kind: FLICK
weight: 1.3
duration: 30.0
targets: 4
size: 0.7
height: 0.0
distance:
min: 6.0
max: 9.0
spread:
yaw: 90.0
pitch-min: -10.0
pitch-max: 28.0
lifetime: 0.0
ordered: true
return-to-centre: false
min-separation: 14.0
weapon: ""
strafe:
display-name: Strafe shot
icon: CYAN_CONCRETE
description: A strafing target. Lead your shot.
kind: FLICK
weight: 1.4
duration: 30.0
targets: 1
size: 0.9
height: 0.0
distance:
min: 6.0
max: 7.0
spread:
yaw: 40.0
pitch-min: 0.0
pitch-max: 8.0
lifetime: 0.0
ordered: false
return-to-centre: false
min-separation: 0.0
weapon: ""
motion:
speed-min: 2.5
speed-max: 5.5
acceleration: 10.0
arc-degrees: 70.0
switch-min-ticks: 6
switch-max-ticks: 20
hop-chance: 0.35
hop-height: 1.0
hop-ticks: 10
reaction:
display-name: Reaction
icon: RED_CONCRETE
description: Hit the target the moment it lights.
kind: REACTION
weight: 1.0
duration: 90.0
targets: 1
size: 1.0
height: 0.0
distance:
min: 6.0
max: 6.0
spread:
yaw: 0.0
pitch-min: 0.0
pitch-max: 0.0
lifetime: 0.0
ordered: false
return-to-centre: false
min-separation: 0.0
weapon: ""
reaction:
min-delay: 1.0
max-delay: 3.5
attempts: 10
tracking:
display-name: Tracking
icon: LIGHT_BLUE_CONCRETE
description: Keep your crosshair on the target.
kind: TRACK
weight: 1.0
duration: 30.0
targets: 1
size: 0.6
height: 1.8
distance:
min: 5.0
max: 5.0
spread:
yaw: 0.0
pitch-min: 0.0
pitch-max: 0.0
lifetime: 0.0
ordered: false
return-to-centre: false
min-separation: 0.0
weapon: ""
motion:
speed-min: 2.0
speed-max: 4.5
acceleration: 8.0
arc-degrees: 80.0
switch-min-ticks: 8
switch-max-ticks: 25
hop-chance: 0.25
hop-height: 1.0
hop-ticks: 10
evasive:
display-name: Evasive
icon: PURPLE_CONCRETE
description: Faster tracking, more hops.
kind: TRACK
weight: 1.4
duration: 30.0
targets: 1
size: 0.6
height: 1.8
distance:
min: 4.5
max: 4.5
spread:
yaw: 0.0
pitch-min: 0.0
pitch-max: 0.0
lifetime: 0.0
ordered: false
return-to-centre: false
min-separation: 0.0
weapon: ""
motion:
speed-min: 3.5
speed-max: 7.0
acceleration: 16.0
arc-degrees: 90.0
switch-min-ticks: 4
switch-max-ticks: 14
hop-chance: 0.5
hop-height: 1.2
hop-ticks: 8
combo:
display-name: Combo 1.8
icon: IRON_SWORD
description: 1.8 combat. Keep the combo going.
kind: COMBO
weight: 1.3
duration: 30.0
targets: 1
size: 0.6
height: 1.8
distance:
min: 3.0
max: 3.5
spread:
yaw: 0.0
pitch-min: 0.0
pitch-max: 0.0
lifetime: 0.0
ordered: false
return-to-centre: false
min-separation: 0.0
weapon: DIAMOND_SWORD
motion:
speed-min: 1.5
speed-max: 3.5
acceleration: 8.0
arc-degrees: 60.0
switch-min-ticks: 6
switch-max-ticks: 18
hop-chance: 0.0
hop-height: 0.0
hop-ticks: 10
combo:
knockback: 0.8
knockback-up: 0.4
approach-speed: 4.5
combo-window: 0.7
attack-cooldown: false
combo_19:
display-name: Combo 1.9
icon: DIAMOND_SWORD
description: Hit only on a fully charged swing.
kind: COMBO
weight: 1.4
duration: 30.0
targets: 1
size: 0.6
height: 1.8
distance:
min: 3.0
max: 3.5
spread:
yaw: 0.0
pitch-min: 0.0
pitch-max: 0.0
lifetime: 0.0
ordered: false
return-to-centre: false
min-separation: 0.0
weapon: DIAMOND_SWORD
motion:
speed-min: 1.5
speed-max: 3.5
acceleration: 8.0
arc-degrees: 60.0
switch-min-ticks: 6
switch-max-ticks: 18
hop-chance: 0.0
hop-height: 0.0
hop-ticks: 10
combo:
knockback: 0.9
knockback-up: 0.4
approach-speed: 4.5
combo-window: 1.0
attack-cooldown: true
axe:
display-name: Axe timing
icon: DIAMOND_AXE
description: Full axe swings only. Time every hit.
kind: COMBO
weight: 1.5
duration: 30.0
targets: 1
size: 0.6
height: 1.8
distance:
min: 3.0
max: 3.5
spread:
yaw: 0.0
pitch-min: 0.0
pitch-max: 0.0
lifetime: 0.0
ordered: false
return-to-centre: false
min-separation: 0.0
weapon: DIAMOND_AXE
motion:
speed-min: 1.5
speed-max: 3.5
acceleration: 8.0
arc-degrees: 60.0
switch-min-ticks: 6
switch-max-ticks: 18
hop-chance: 0.0
hop-height: 0.0
hop-ticks: 10
combo:
knockback: 0.9
knockback-up: 0.4
approach-speed: 4.5
combo-window: 1.6
attack-cooldown: truegrid, motion, reaction and combo are left out of a drill when they do nothing: a grid with
columns: 0, a motion with speed-max: 0, a reaction with attempts: 0, a combo with knockback: 0.
Write one in to turn it on.
Every key
The drill itself
| Key | What it is |
|---|---|
The key itself (gridshot) | The drill id: what /aim train gridshot takes, what records, sessions and boards are filed under. |
display-name | What players read in menus, messages, the boss bar and the sidebar. Palette tokens allowed. |
icon | The menu row's item: a material, or a head written the way the menu files write one. Empty is TARGET. |
description | One line under the drill in menus. |
kind | FLICK, REACTION, TRACK or COMBO. |
weight | How hard the drill is by itself. It multiplies the difficulty, and so the rating, of every session. 0 or less is 1.0. |
duration | Seconds a session lasts. A REACTION drill ends on its attempts and uses this as a cap. 0 or less is 30. |
targets | Targets up at once. FLICK only, and only when the target does not move; every other drill uses one. Never below 1. |
size | The width of a target in blocks, before the player's size setting. 0 or less is 0.8. |
height | The height of a target, or 0 for a cube as tall as it is wide. The player-shaped targets use 1.8. |
lifetime | Seconds a still FLICK target stays up before it expires and costs points. 0 never expires. |
ordered | FLICK only: targets light one at a time, oldest first; a hit on an unlit one is a miss. |
return-to-centre | FLICK only: every other target is placed dead ahead, so each flick out is followed by a flick back. |
min-separation | Degrees kept between a new target and every target already up, and the one just cleared. 0 turns it off. |
weapon | A material put in the player's first hotbar slot for the drill. Empty, or a name that is not an item, keeps the hand empty. |
distance
| Key | What it is |
|---|---|
min | The nearest a target is placed from the player's eyes, in blocks. Never below 1. |
max | The farthest. Never below min. |
A target is placed at a random distance in that range. Grids, reaction targets and moving targets use the middle of it. The player's distance setting multiplies both ends.
spread
Degrees around where the player faces when the drill begins.
| Key | What it is |
|---|---|
yaw | The total horizontal spread: 60 is 30° to either side. Clamped to 0..340. |
pitch-min | The lowest elevation; negative is below eye level. Not below -80. |
pitch-max | The highest elevation. Not above 80, never below pitch-min. |
A target is never placed inside the floor: it is lifted so its bottom clears the ground the player stands on by 0.2 blocks.
grid
| Key | What it is |
|---|---|
columns | Cells across. 0 turns the grid off. |
rows | Cells down. At least 1 once the grid is on. |
spacing | Degrees between the centres of two neighbouring cells. 0 or less is 10. |
motion
A target that strafes along an arc in front of the player. Speeds are blocks per second.
| Key | What it is |
|---|---|
speed-min, speed-max | The range a new speed is drawn from at every change. speed-max: 0 turns the motion off. |
acceleration | How fast it reaches a new speed, in blocks per second squared. 0 or less is 8. |
arc-degrees | The width of the arc it walks. 0 or less is 60. |
switch-min-ticks, switch-max-ticks | Ticks between two changes of direction and speed. At least 1. |
hop-chance | The chance, 0 to 1, that a change of direction comes with a hop. |
hop-height | How high a hop goes, in blocks. |
hop-ticks | Ticks a hop takes. At least 1. |
reaction
| Key | What it is |
|---|---|
min-delay | The shortest wait, in seconds, before the target lights. Never below 0.2. |
max-delay | The longest wait. Never below min-delay. |
attempts | Lights to answer before the session ends. 0 turns the section off. |
combo
| Key | What it is |
|---|---|
knockback | Blocks the target is shoved back per hit. 0 turns the section off. |
knockback-up | Upward velocity per hit, in blocks per tick; 0.4 is a player's. 0 or less is 0.4, capped at 1.0. |
approach-speed | Blocks per second the target closes the distance after being shoved. 0 or less is 4. |
combo-window | Seconds a hit may follow the previous one and still extend the combo. 0 or less is 0.7. |
attack-cooldown | true judges every hit by the attack cooldown of the item in hand, as 1.9 combat does. false plays 1.8 combat. |
How each kind uses them
FLICK
The drill starts with targets targets up. A hit removes the target and puts another one up, never where
the hit one was:
- With a
grid, the new target takes a random free cell. The grid sits straight ahead of where the player faced, every cell the same distance away, so a flick between two neighbours is the same angle anywhere on it. A cell with a target in it is never drawn, and neither is the one just cleared unless nothing else is free. Ifspacingwould make neighbouring targets touch, it is widened to the target's width plus 2°.spreadandmin-separationare not used. - With
return-to-centre, targets alternate: the first one dead ahead, the next anywhere in the spread, then dead ahead again. - Otherwise the target goes anywhere in
spreadanddistance, at leastmin-separationdegrees from every target already up and from the one just cleared. After 24 tries without finding such a place, the first try is used.
lifetime expires a target that was not hit in time: it costs expire-penalty, breaks the streak and is
replaced like a hit one. With ordered, the unlit targets are drawn in the grey idle look of the
player's style, the oldest is lit, and hitting any other is a miss.
A FLICK drill with a motion block is a moving flick: one target for the whole session, strafing on
the floor at the middle of the distance range. A hit counts and the target stays. targets, grid,
lifetime and ordered do nothing on a moving flick.
REACTION
One target straight ahead, in the grey idle look. After a wait drawn from min-delay..max-delay it lights
up; the click that follows is the reaction, timed from the moment the light was sent, minus the player's
ping. A click before the light is a false start. After attempts lights the session completes, or earlier
if duration runs out.
TRACK
One player-shaped target strafing along the arc of its motion block, at the middle of the distance range.
Every tick the plugin checks whether the player's crosshair is on the target where the player's client was
drawing it; the target lights while it is and turns grey while it is not. Clicks are neither hits nor misses.
A TRACK drill without a motion block stands still, which makes it pointless.
COMBO
One player-shaped target that fights the way an opponent moves. It strafes round the player with its
motion block, walks back to the nearest end of the distance range whenever it is farther, backs off when
it is closer than 60% of that, and every hit throws it away with knockback and lifts it with
knockback-up. For six ticks after a hit it only flies. It is never allowed farther than two and a half
times the far end of the distance range.
A fight is played the way the game plays one:
- Three blocks of reach. Every other kind extends the player's reach so a target across the arena can be clicked; a fight keeps the game's own three blocks.
- The weapon in hand.
weaponis placed in the first hotbar slot, unbreakable and without a tooltip. - The hurt window. A hit landing within ten ticks of the last one that landed does nothing: it is neither a hit nor a miss. Spam clicking a 1.8 fight lands no more hits than clean clicks.
- The combo. A hit within
combo-windowof the previous hit extends the combo and earnscombo-pointson top ofhit-points; a later one starts a new combo at one. - The attack cooldown. With
attack-cooldown: true, a hit on a swing that was not charged is rushed and counts as a miss. Every swing, hit or not, and every change of held slot starts the cooldown over. The charge and the thresholds are on Scoring. Withfalse, the weapon is handed out with an attack speed no swing can outrun, so the client draws no cooldown at all.
weapon works on any kind, but only a COMBO drill reads the cooldown. Without a weapon the hand is
empty, which in a 1.9 fight is the fist's own cooldown.
Adding a drill
A new key under drills is a new drill. Nothing else is needed.
drills:
pinpoint:
display-name: Pinpoint
icon: LIGHTNING_ROD
description: Tiny targets that expire. Be quick and exact.
kind: FLICK
weight: 1.8
duration: 45.0
targets: 2
size: 0.3
distance:
min: 9.0
max: 13.0
spread:
yaw: 60.0
pitch-min: -8.0
pitch-max: 20.0
lifetime: 1.5
min-separation: 10.0Run /aimtraineradmin reload. Menus list drills in the order the file does, and tab completion offers the
new id at once.
Records, sessions and duel history are stored by drill id, in a column 32 characters long: keep ids at or
under 32. Do not name a drill overall, which is the name of the overall leaderboard. A renamed id starts
with empty records and boards, and the old rows stay in the database under the old one; change
display-name instead when only the wording has to change.
Removing a drill takes it out of every menu. A player resting after that drill is sent home the next time
they replay it. Removing every drill brings the shipped sixteen back: an empty drills section is
read as the defaults.
A change to a drill's numbers reaches a session the next time it starts or is replayed; a run already going keeps the numbers it started with.
The default drill
| Key | Default | What it does |
|---|---|---|
training.default-drill | gridshot | The drill /aim train starts without a name. If it is not a configured drill, the first drill in the file is used. |
/aim duel <player> without a drill does not use default-drill: it proposes the first drill in the file.
Upgrading an older file
The file carries a version, and an older one is migrated on start. Only what is still exactly as it shipped is changed; a value you edited, or a drill you added, is left alone.
- Shipped drills still at their old 60- or 45-second durations run 30 seconds.
- Shipped descriptions still reading as they first shipped are shortened to one lore line.
- A
gridshotwithout agridblock, on a file with noscatter, is kept under the idscatterand a newgridshoton a 3×3 grid is written in. - A fight's old
cooldown-ticksbecomesattack-cooldown: any wait at all was a 1.9 fight. comboandcombo_19get aDIAMOND_SWORDwhen they have no weapon, andsixshot,microshot,spidershotandaxeare written in when missing.
Something missing on this page? Tell us on Discord