Complete reference
Full Guide
Every setting in the mod, with its default, its range and the screen it lives on. If you are setting the HUD up for the first time, the User Guide is the shorter way in — this page is the one you come back to when you need the exact number.
01
Where your settings live
Everything is stored client-side, in your Minecraft config folder. Nothing is sent anywhere and no server ever sees it.
simplecps.json- The live config — one flat file holding every setting for every module.
simplecps_stats.json- Your best combo, stored as
{"bestCombo": N}. It is kept apart from the config, so presets, server configs and share codes never carry it, and only Reset Best clears it. simplecps_presets/- Your named presets, one
.jsonper preset. The file name is the name you see in-game. simplecps_server_presets/- Per-server configs, one
.jsonper server. The file name is the server address. _labels.json- Inside the server folder — the friendly names you gave your servers. Not a server itself.
Saves are atomic: the mod writes a temporary file and then moves it into place. A crash halfway through a save cannot leave you with a broken config.
Coming from 26.2 or earlier? Minecraft 26.3 numbers keys and mouse buttons differently, so the first time you launch v1.2.3 your existing simplecps.json is translated in place — your keystrokes layout, its key bindings and its per-key settings all come through as they were. There is nothing to do by hand.
Fields you may see but that do nothing
If you open simplecps.json in a text editor you will find a few keys the current build never reads. They are kept because a field name is a key on disk — deleting them from the mod would silently drop settings out of everyone's existing file.
keystrokesEffectMode- Read once when an old config is loaded, to work out which animations you had. Never written back.
keystrokesMotionkeystrokesFill- The single-animation predecessors of the current lists. Same story — migration only.
comboHeatmapcomboRainbow- The two switches Color Mode replaced. Read once, the first time an old config is loaded, to work out which Color Mode you had.
comboText- The old combo suffix. Read once, the first time an old config is loaded, to turn it into your Format: a suffix of
Xbecomes{combo} X. showLCTRLshowLSHIFTshowSpace- Left over from before the layout was freely editable. Nothing reads them; add or remove those keys in the designer instead.
comboResetOnAnyDamage is not one of them: it is Break on Any Damage, which kept its key when it was renamed.
02
The four surfaces
There are four places settings can be changed, and several settings live on exactly one of them. This is the table to check when you cannot find something.
- In-world HUD editor
- Press Right Shift in-game. Rebindable under Controls, in a category called Eymistaken's HUD. It only opens when no other screen is up.
- Settings screen
- From the editor's Settings… row, or from Mod Menu.
- Keystrokes Designer
- Keystrokes page → Layout → Open Designer, or right-click the Keystrokes module in the editor.
- Mod Menu
- Optional. When it is not installed, the settings screen is still reachable through the editor.
Settings that exist in only one place
Only in the Designer's animation drawer
Which motions and fills are switched on. They are a set — several run at once — and a one-value-at-a-time control cannot express a set, so no other screen offers them.
Only in the Designer's inspector
Everything about an individual key: its colors, its own design and animation, bold/italic/underline/shadow, label placement and size, line mode, hidden, show-CPS.
Only in the in-world editor
The twelve per-armor-slot offsets, Group / Ungroup, the align and distribute toolbar, cycling the grid size, managing per-server configs, and the Restore Font escape hatch.
Only in the settings screen
The settings search, each row's default and per-row reset, the live preview, Reset All Settings, Discard Changes, Combo's Reset Best button, the preset card and the typed share-code field.
03
Placement and the layout engine
Every module gets the same four placement rows, on its Position tab. Third-party modules get them too.
| Setting | Type | Range | Default |
|---|---|---|---|
| Position | Anchor grid | 5 anchors | Top left |
| X Offset | Stepper | −10000 to 10000 px | 0 |
| Y Offset | Stepper | −10000 to 10000 px | 0 |
| Scale % | Slider | 50 to 300 | 100 |
The anchor grid is 3×3 but only five cells do anything: the four corners and the center. The four edge cells are inert.
Auto-stacking versus manual placement
Modules that share a corner are stacked along that edge automatically, so they never sit on top of each other. A module leaves auto-stacking the moment you give it a non-zero offset or drag it in the editor; from then on it is placed exactly where you put it, clamped to the screen, and the stack closes up behind it.
Centered modules are centered rather than stacked, so two of them can overlap unless you offset one.
- Prevent Overlap
- On by default. Pushes colliding modules to the nearest free spot so two of them never cover the same pixels. General → Editor.
04
The HUD editor
Press Right Shift in-game. The editor draws over your live HUD, so what you are dragging is the real thing at its real size.
Mouse and keyboard
- Left-click + drag
- Move a module — or a single armor slot once you have ungrouped them. Snaps to other modules' edges and centers, then to the grid if the grid is on.
- Hold Shift while dragging
- Turns snapping off for that drag. Free placement, pixel for pixel.
- Scroll wheel
- Scale the module under the cursor by 5% per notch, from 50% to 300%. This saves immediately — there is no drag to release.
- Drag on empty space
- Marquee select. Everything inside the box is selected.
- Arrow keys
- Nudge the selection one pixel.
- Right-click a module
- Its own context menu.
- Right-click empty space
- The global menu.
Align and distribute
Select two or more elements and a toolbar appears at the top of the screen.
LCXR- Align left, match center on X, align right.
TCYB- Align top, match center on Y, align bottom.
DXDY- Distribute horizontally or vertically — equal gaps between elements. Needs three or more.
The global menu
Right-click anywhere empty. Nine rows:
- Settings…
- Opens the full settings screen.
- Prevent Overlap
- Toggles collision handling for the whole HUD.
- Grid
- Left-click toggles the grid. Right-click cycles its size through 4, 8, 16 and 32 pixels.
- Save Config
- Saves everything as a preset called
Config 1,Config 2, and so on — the first free number. - Configs
- Hover for your saved presets. Left-click a name to load it, the bin icon to delete it, right-click to rename it.
- Server Configs
- Hover for your per-server configs. The title row switches the whole feature on and off.
- Export Code
- Copies your whole HUD to the clipboard as a share code. The row reads Copied! for a moment.
- Import Code
- Opens a text box you can paste into with Ctrl+V. Your current config is backed up to a preset first.
- Reset HUD
- Sends every module back to its default anchor, offset and scale. Colors and behavior are left alone.
Every module's own menu starts with Reset Position and ends with Open Settings…, which jumps straight to that module's page in the settings screen.
05
The settings screen
One page per module in a sidebar, then a General page, then a Plugins divider with a page for each third-party module you have installed. Every module page has an enable toggle in its header; General is global and cannot be switched off.
What is on the screen
- Search settings
- Filters every row on every page into a single results page. Faster than remembering which tab a setting is on.
- Preview
- A live render of whichever module you are looking at, updating as you change things. On the Combo page it plays a looping demo fight, so the sliders, the line, the colors and the style can be tried without landing a hit — see the Combo preview.
- Info
- The description of the row you last touched, plus its default value and a button to put it back.
- Presets
- Your saved configs. Click one to load it, or Save Current to add one.
- Share code
- A field with Export and Import. Import falls back to your clipboard if the field is empty.
The three buttons that ask twice
- Reset All Settings
- Every module returns to its default position, color and scale. Saved presets and plugin module data are kept. Cannot be undone.
- Cancel
- Puts back everything changed since the screen opened — including edits already written to disk.
- Done
- Closes the screen. Changes were already saved as you made them; the footer shows the config path.
Row types are consistent throughout: toggles, sliders, steppers, text fields, color swatches with a hex box and a picker, cycles, and action buttons. Every built-in row knows its own default, so the reset in the Info panel always works.
06
CPS
Clicks per second for the left and right mouse buttons, counted over a rolling one-second window. It is the only module that is on by default.
| Setting | Default | Range | What it does |
|---|---|---|---|
| Enable CPS | On | Shows or hides the module. | |
| Right Click CPS | On | Shows the right-click count alongside the left. | |
| Text Color | White | Color of the numbers. | |
| Rainbow | Off | Cycles the text through the spectrum. Overrides Text Color. | |
| Show Background | Off | Draws a box behind the text. | |
| Background Color | Black | ||
| Background Opacity | 128 | 0 to 255 | 0 is invisible, 255 is solid. |
| Left Prefix | (empty) | 64 chars | Text before the left-click count. |
| Separator | " | " | 64 chars | Text between the two counts. |
| Right Prefix | (empty) | 64 chars | Text before the right-click count. |
In the editor's right-click menu: Reset Settings, Enable CPS, Text Color, Scale %.
07
Ping
Your latency to the current server, in milliseconds. Off by default.
| Setting | Default | Range | What it does |
|---|---|---|---|
| Enable Ping | Off | ||
| Text Color | White | ||
| Show Background | Off | ||
| Background Color | Black | ||
| Background Opacity | 128 | 0 to 255 |
Ping is the one module with no rainbow option. If you want it to change color, there is no setting for it — that is not a bug you are looking at.
In the editor's right-click menu: Reset Settings, Enable Ping, Scale %, Text Color.
08
FPS
Frames per second. Off by default.
| Setting | Default | Range | What it does |
|---|---|---|---|
| Enable FPS | Off | ||
| Suffix Text | FPS | 64 chars | Text after the number. Empty it for a bare count. |
| Text Color | White | ||
| Rainbow | Off | ||
| Show Background | Off | ||
| Background Color | Black | ||
| Background Opacity | 128 | 0 to 255 |
In the editor's right-click menu: Reset Settings, Enable FPS, Text Color.
09
Combo
Counts consecutive hits. Off by default. A hit counts once the server confirms it landed — unless you set Hit Detection to Client — and a combo someone lands on you is counted too, shown as a negative number on a line of its own. This is the module with the most behavior to tune, because "what counts as a combo" genuinely differs between servers.
Behavior
| Setting | Default | Range | What it does |
|---|---|---|---|
| Hit Detection | Server | Server, Client | Server counts a hit once the server confirms it landed. Client counts every attack you send, the way the counter used to. |
| Combat Mode | Modern | Classic, Modern | Classic counts every hit, the way 1.8 PvP works. Modern only counts a hit when your attack cooldown has recharged to 90% or more, so spam-clicking does not inflate the count. Both apply under either Hit Detection setting. |
| Break on Any Damage | On | On: any damage breaks the combo, falls and lava included. Off: only hits from someone you are fighting do. Thorns never breaks it. | |
| Only Players | On | Only hits landed on players count toward the combo. Turned off, hits on mobs count as well, and so does a combo a mob lands on you. | |
| Continue On Target Switch | On | Keeps the combo alive when you start hitting someone else. Turn it off if a combo should mean one opponent: hitting a different target then ends the combo and starts a new one. | |
| Timeout | 3 s | 1 to 10 s | Seconds without a counted hit before the combo ends, or starts draining with Decay. |
| Hide When Inactive | Off | Hides the display while there is no combo to show. | |
| Min Display | 2 | 1 to 5 | The smallest count worth showing, for your combo and for one landed on you. Always Show — Hide When Inactive off — keeps yours on screen anyway. |
| Reset Best | (button) | Your best combo is kept between sessions, and beating it from the second heatmap tier on flashes BEST on the counter. This forgets it, after asking you to confirm. | |
| Decay | Off | A broken or timed-out combo drains one hit per second instead of ending. Landing a counted hit stops the drain. |
Style
| Setting | Default | Range | What it does |
|---|---|---|---|
| Format | {combo} Combo | 64 chars | What your count reads. {combo} is the count, negative for a combo landed on you, and {best} is your best combo. Without {combo}, the count goes in front. |
| Style | Text | Text, Big | Text keeps the count and the rest of the format on one line. Big draws the count twice as large, with the rest of the format under it. |
| Line | Timeout | Timeout, Hits, Both, Off | The thin line under your count. Timeout shrinks with the time left before the combo ends. Hits shows your last 8 hits: gray, white for a sprint hit, gold for a critical one. Both puts the hits under the timeout. When a combo landed on you stacks under yours, the line becomes the divider between them. |
| Color Mode | Static | Static, Rainbow, Heatmap | Static keeps your count in the text color. Rainbow cycles it through every hue. Heatmap turns it from the text color to the mid color and on to the top color as it climbs the heatmap tiers. |
| Text Color | White | Color of the text. Heatmap keeps it up to tier 1 and blends from it toward the mid color; only Rainbow ignores it. | |
| Heatmap Difficulty | Medium | Easy, Medium, Hard, Custom | Hits per tier: where the heatmap colors change, where your count starts to shake, and how fast a combo landed on you darkens and shakes. Custom uses the three custom tiers below. Changing this resets the running combo. |
| Custom Tier 1 | 5 | 1 to 98 | With Custom difficulty: the hit where your count starts turning toward the mid color. Each tier stays above the one before it. |
| Custom Tier 2 | 8 | 2 to 99 | With Custom difficulty: the hit where your count reaches the mid color, and from which a new best flashes. |
| Custom Tier 3 | 12 | 3 to 100 | With Custom difficulty: the hit where your count reaches the top color and starts to shake. |
| Heatmap Mid Color | #FF0000 | The heatmap color at the second tier. | |
| Heatmap Top Color | #550000 | The heatmap color at the top tier. The count's edge warms to a dim red as it darkens, so even black stays readable. |
Heatmap tiers
| Difficulty | Tier 1 | Tier 2 | Tier 3 (shake) |
|---|---|---|---|
| Easy | 3 hits | 5 hits | 7 hits |
| Medium (default) | 5 hits | 8 hits | 12 hits |
| Hard | 10 hits | 40 hits | 60 hits |
| Custom | Custom Tier 1 (default 5) | Custom Tier 2 (default 8) | Custom Tier 3 (default 12) |
Animation
| Setting | Default | Range | What it does |
|---|---|---|---|
| Impact % | 100 | 0 to 200 | How hard hits land on your count: how far it punches up, and how long it freezes on a new tier, a new best, a kill, a broken combo and every hit past the top tier. 0 turns both off. |
| Shake % | 100 | 0 to 200 | How hard your count shakes past the top tier, and a combo landed on you as it grows. 0 keeps both still, whatever the heatmap settings. |
| Hit Jolt % | 100 | 0 to 200 | How far a combo landed on you jolts with each hit you take. 0 turns it off. |
Background
| Setting | Default | Range | What it does |
|---|---|---|---|
| Show Background | Off | Draws a box behind the text. | |
| Background Color | Black | Color of the box. | |
| Background Opacity | 128 | 0 to 255 | 0 is invisible, 255 is solid. |
What counts as a hit
Hit Detection decides when a hit is counted, Combat Mode whether it was strong enough to count, and Only Players what it has to land on.
- Server
- The default. Attacking only records a pending hit, which counts when the server sends the damage event for that target. The mod waits roughly 200 ms plus your ping for it, and never longer than a second. The server sends that event only for a fresh hit that actually landed, so hits into the target's invulnerability frames, hits blocked by a shield, arrows and sweep damage do not add to the combo.
- Client
- The old behavior: every attack you send counts.
- Combat Mode
- Applies under either detection mode. Modern counts only full-strength hits, made with the attack cooldown at least 90% recharged, and Classic counts every hit. Under Modern, spam-clicking right after a full-strength hit does not turn that hit into a weak one while the server is about to confirm it.
- Only Players
- On by default, so only hits on players count. Turned off, hits on mobs count too, and so do mobs that land a combo on you.
Some servers never say who dealt the damage — older versions joined through a protocol translator, for instance. On those, the hit you have just sent is taken as the cause, and damage you take is attributed to whatever last swung within 6 blocks of you. As soon as the server reports an attacker once, that guesswork switches off.
When a combo ends
- Timeout
- No counted hit for as long as the Timeout, and the combo ends — or starts draining, if Decay is on.
- Distance
- A target more than 20 blocks away counts as a timeout. This check always applies.
- Target switch
- With Continue On Target Switch off, hitting a different target ends the combo and starts a new one.
- Finisher
- A target that dies within a second of your last hit on it plays the finisher moment — see How hits land. With Continue On Target Switch off the combo ends there; with it on, the combo carries on.
- Damage
- With Break on Any Damage on, any damage you take breaks the combo, falls and lava included. Turned off, only damage from someone you are fighting does: anything you have landed a counted hit on within the Timeout. Thorns never breaks it.
- World change
- Changing world or dimension resets the tracking.
Decay is a setting of its own, and the distance check applies whether it is on or not. With Decay on, a combo that breaks or times out drains one hit per second instead of ending. A counted hit stops the drain, and the combo carries on from the count it had reached. An old config that had Break on Any Damage off arrives with Decay switched on.
Min Display, 2 by default, is the smallest count shown at all, both for your combo and for one landed on you. Always Show — Hide When Inactive turned off — keeps your own line on screen regardless.
A combo that ends on a timeout, the distance check or a finisher, at a count of at least Min Display, lingers with its final count for 1.2 seconds: full brightness for the first 0.3 seconds, then down to 45% opacity over the next 0.25. After that it disappears if Hide When Inactive is on, or drops back to 0 if it is off. A new combo, yours or one landed on you, takes over right away.
A combo landed on you
Hits the same attacker lands on you in a row are counted as well, and shown as a negative number: {combo} in your Format is written with a minus sign, so the default reads -5 Combo.
- What counts
- Hits from players, and from mobs too if Only Players is off. Melee and projectile hits both count, arrows included. Thorns and environmental damage with no attacker do not.
- New attacker
- A hit from a different attacker starts the count again from 1.
- When it ends
- When you land a counted hit on that attacker, when the attacker dies, or when the Timeout passes after their last hit.
If you have a combo of your own at the same time, the two stack: yours on top, a short 1 px divider 60% as long as the wider line, and the negative line underneath. With no combo of your own, the negative line takes the main line's place. Stacking only happens with Decay on or Break on Any Damage off; otherwise the first hit you take has already ended your combo. For as long as a negative line can appear, its space is reserved up front, so modules on the same edge do not jump every time you are hit.
Its color deepens with the count, blending smoothly from yellow to orange at tier 1 and red at tier 2, then through dark red to nearly black at tier 3 and beyond. As the text darkens its edge turns a dim red, so a black number never disappears. These colors ignore Color Mode. The line shakes harder as its count grows, up to its strongest at tier 3, and every hit you take gives it a short jolt.
How hits land
Every counted hit punches the number up and lets it settle back with a slight bounce. On the big moments the counter also freezes for an instant, like hitstop in a fighting game: the punch, the shake on both lines, the negative line's color blend and the divider all stop together, then carry on from where they were. No freeze ever lasts longer than 160 ms. The figures below are at Impact 100%.
| Moment | Punch | Freeze |
|---|---|---|
| A normal hit | 8%, settling in 140 ms | None |
| A new tier | 18% | 60 ms |
| Each hit past tier 3 | 10%, rising to 16% | 30 ms, plus 3 ms per hit past tier 3, up to 90 ms |
| A new best | 22% | 90 ms |
| A finisher — killing the target | 20%, plus 1% per hit in the combo, up to 40% | 70 ms, plus 4 ms per hit, up to 160 ms |
| A broken combo, with Decay off and the count at tier 1 or higher | None | 50 ms, plus 3 ms per hit, up to 120 ms. The broken count stays frozen, then gives way to the negative line. |
Your own count starts to shake at tier 3, by 1 px. Past tier 3 the shake builds to 3 px over as many hits as separate tier 2 from tier 3 — four on Medium — at Shake 100%. Freezes hold the shake too, and a combo that has ended does not shake.
The Animation tab, between Style and Background, tunes these separately, because a single intensity setting could not, say, keep the freezes and turn the shake off.
- Impact %
- The punch scales in direct proportion and freezes more gently: at 150% the punch is 1.5 times as big and a freeze about 1.3 times as long. At 0 there is no punch and no freeze, and a broken combo gives way without freezing. The gold BEST flash and its label show at any value.
- Shake %
- Your count's shake past tier 3, and the negative line's growing shake. At 0 both stay still, whatever the heatmap settings.
- Hit Jolt %
- The negative line's jolt on each hit you take: 1.5 px at 100%, fading out over 300 ms. It is independent of Shake.
Your best combo
Your best combo is kept between sessions, in simplecps_stats.json beside simplecps.json in your Minecraft config folder, as {"bestCombo": N}. It is written when a combo ends, or as the game closes if you quit mid-combo. With an empty or corrupt file, the record starts from 0.
The record is not part of the config. Presets, server configs and share codes do not carry it, and neither Reset Settings nor Reset All Settings clears it.
A new best plays once per combo, when the combo passes the record as it stood when the combo began and reaches at least tier 2. The number lands a little harder, turns gold (#FFB800) for the freeze, and fades back to its own color over 0.4 seconds. A small gold BEST label appears beside it: half the number's size, level with its top, on the side away from the anchor — to the right on a left or center anchor, to the left on a right anchor. The label stays for 1.6 seconds and fades out over the last 0.3. It grows, shakes and freezes with the number, and never changes the module's size.
A short combo that beats a low record is not announced until it reaches tier 2. On a fresh install the record is 0, so the first combo to reach tier 2 gets announced.
Reset Best, on the Behavior tab, forgets the record. It asks first, in a Reset Best Combo window that shows your current best. The settings screen's Cancel cannot bring it back, since the record is not part of the config.
The line under the count
While your line is on its own, Line draws a 1 px line under the count.
- Timeout
- The default. A bar in the count's color at 75% opacity that shortens with the time the combo has left and refills on every counted hit. It is hidden while a combo drains with Decay, lingers at its end or breaks. It shows the real timeout, so it keeps moving through freezes.
- Hits
- Your last 8 counted hits, one segment each: gray for a normal hit, white for a sprint hit, gold for a critical one. A critical is confirmed by the server's critical-hit notification, and a critical that kills still shows gold. A new segment flashes white for a moment. The newest sits at the right end, and with fewer than 8 hits the segments gather on the anchor side. The strip fades while a combo drains with Decay, and through a combo's end it stays up with that combo's hits.
- Both
- The timeout bar on top, and the hit strip 1 px below it.
- Off
- No line.
When a negative line stacks under yours, the line turns into the short divider between them: the bar shortens and takes on the divider's color, and the strip fades out. It comes back when the negative line goes. The divider shows even with Line set to Off.
Room for the line is reserved up front — 2 px, or 4 px with Both — so modules on the same edge do not jump as it comes and goes. Because the line is on by default, those modules move down 2 px once after updating.
Heatmap colors and custom tiers
Color Mode takes the place of the separate heatmap and rainbow switches, which could both be on at once, with the heatmap quietly winning. One setting with three values leaves nothing to conflict.
- Static
- Your count stays in the Text Color.
- Rainbow
- Your count cycles through every hue. Text Color is not used.
- Heatmap
- Text Color up to tier 1. From tier 1 to tier 2 it blends from Text Color to Heatmap Mid Color, from tier 2 to tier 3 on to Heatmap Top Color, and from tier 3 on it stays Top Color. The defaults,
#FF0000and#550000, take it from the text color to red and then to dark red — no blue, and no black.
As the count darkens its edge warms to a dim red, so it stays readable even if you pick black. An old config loads as Heatmap if its heatmap switch was on, as Rainbow if only its rainbow switch was, and as Static if neither was.
Heatmap Difficulty sets the tiers — see the tier table above — and they decide more than color: where your count starts to shake (tier 3), where a new best can flash (tier 2), and the steps in a negative line's color and shake. That holds even when Color Mode is not Heatmap. Changing the difficulty resets a running combo, and so does changing a custom tier while Custom is selected.
Custom Tier 1, 2 and 3 always stay in order, each at least 1 above the one before it. Changing one moves the others out of its way: raising Tier 1 past Tier 2 pushes Tier 2 up, and Tier 3 as well if it has to; lowering Tier 3 pulls the others down.
Format and Style
Format replaces the old suffix: rather than text after the number, you write the whole readout, up to 64 characters, with two placeholders. {combo} is the count, with a minus sign on a combo landed on you (-5), and {best} is your all-time best. Leave {combo} out and the count is added at the front with a space, so editing the format can never lose the number; an empty format shows the count alone. An old config keeps its look: a suffix of X becomes the format {combo} X.
| Format | Reads |
|---|---|
{combo} Combo | 12 Combo |
x{combo} | x12 |
{combo} hits (best {best}) | 12 hits (best 30) |
Hits | 12 Hits |
Style sets how that readout is drawn. Text puts the count and the rest of the format on one line. Big draws the count twice as large, with the format minus {combo} under it at normal size: {combo} Combo becomes a big 12 over Combo, x{combo} a big 12 over x, and a format of only {combo} leaves nothing underneath. A negative line uses the same style.
In Big, the punch, the shake and the freezes apply to the big number alone, so the text under it stays still and readable. Color, the gold flash and fading cover that text too, and the BEST label sits beside the big number at normal text size.
There is no separate badge or minimal style: Show Background with a Line gives the badge look, and a format of x{combo} the minimal one.
The preview and the editor
On the Combo page, the settings screen's preview plays a looping demo fight. The count climbs through the tiers with half a second between hits, pauses briefly in the middle while the timeout bar drains, goes three hits past tier 3 and ends on a finisher, with sprint and critical hits along the way. A combo landed on you shows up too: under yours during the last hits when stacking is possible, after your combo ends when it is not. The sliders, colors, line and style can all be tried without joining a world.
The demo starts over whenever Heatmap Difficulty or a custom tier, Decay, Break on Any Damage or Timeout changes.
The Right Shift editor shows a still sample instead: 8 Combo on Medium, with -5 Combo under it when stacking is possible, and a sample line. Nothing moves in the editor.
In the editor's right-click menu: Reset Settings, Enable Combo, Always Show (the inverse of Hide When Inactive), Color Mode, Style, Text Color, Format.
10
Reach
The distance of your last landed hit, in blocks, to two decimal places. Off by default.
| Setting | Default | Range | What it does |
|---|---|---|---|
| Enable Reach | Off | ||
| Timeout | 3 s | 1 to 10 s | How long the last measurement stays on screen. |
| Only Players | On | Only measures hits on players. | |
| Always Show | Off | Keeps the display up even when idle, showing the No Hit text. | |
| No Hit Text | No Hit | 64 chars | Shown before your first hit, and while idle if Always Show is on. |
| Text Color | White | ||
| Rainbow | Off | ||
| Show Background | Off | ||
| Background Color | Black | ||
| Background Opacity | 128 | 0 to 255 |
In the editor's right-click menu: Reset Settings, Enable Reach, Always Show, Text Color, No Hit Text.
11
Armor HUD
Your four armor pieces and your held items, with durability. Off by default, and the only module that starts in the bottom left rather than the top left.
| Setting | Default | What it does |
|---|---|---|
| Enable Armor | Off | |
| Vertical Orientation | On | Stacks the items in a column. Off lays them in a row. |
| Show Main Hand | On | Includes the item you are holding. |
| Show Off Hand | Off | Includes your off-hand item. |
| Show Background Slots | Off | Draws a semi-transparent inventory slot behind each item. |
| Durability Text | Off | Prints the exact number next to each item instead of relying on the bar. |
| Damage Flash | On | Flashes an item red for a moment when it loses durability. |
Armor is the one module with no color settings and no background box. It draws items, not text, so there is nothing to tint; the slot backgrounds are the equivalent switch.
Splitting the slots apart
Right-click the Armor HUD in the editor and choose Ungroup. The six pieces — Helmet, Chestplate, Leggings, Boots, Main Hand, Off Hand — become independently draggable, each with its own offset, so you can put your boots somewhere entirely different from your helmet.
Right-click any detached slot and choose Group to snap everything back into the stack and clear all twelve offsets at once.
Those per-slot offsets exist only in the in-world editor. There are no rows for them in the settings screen — dragging is the interface.
In the editor's right-click menu: Reset Settings, Ungroup, Enable Armor, Scale %, Vertical, Show Background, Durability Text, Damage Flash, Show Main Hand, Show Off Hand.
12
Keystrokes — module settings
The key display. These are the settings that apply to the whole cluster; anything about an individual key lives in the Designer.
| Setting | Default | Range | What it does |
|---|---|---|---|
| Enable Keystrokes | Off | ||
| Scale % | 80 | 50 to 300 | Note the default is 80, not 100 — the stock cluster is large. |
| Text Color | White | Color of the key labels at rest. | |
| Pressed Color | Green | Color used while a key is held. | |
| Rainbow | Off | ||
| Rainbow Target | Text | Text, Background | Whether the rainbow paints the labels or the key bodies. |
| Design | Baseline | 11 designs | The look of a key at rest. Picking one also applies its animation and palette — see below. |
| Fill Direction | Right | 8 directions | Which side a directional fill starts from. Ignored by fills that have no direction. |
| Release Trail | Off | Leaves a fading outline behind when you let a key go. | |
| Board | Off | Frames the whole cluster with an ornamented board. | |
| Background Color | Black | Color of the key bodies. | |
| Background Opacity | 128 | 0 to 255 |
There is no "Show Background" toggle for Keystrokes. Set Background Opacity to 0 to remove the key bodies and leave only the labels — that is how the Frame, Bar and Segment designs get their look.
Design is not just a texture. Choosing one rewrites your animations, all four colors, and — for Wedge and Hex — the positions of your keys. Everything stays editable afterwards, but export your layout first if you have one you want to keep.
The layout holds up to 256 keys. In the editor's right-click menu: Enable Keystrokes, Design, Board, Open Designer — this module has no Reset Settings row.
13
The Keystrokes design catalog
Eleven designs. Each one is a resting look plus the animation and palette it was drawn with, because the palette is what makes a design legible — Neon needs its near-black core, the pixel styles their slate and gold, Bar a dimmer label because nothing sits behind it. Picking a design applies all of it. Everything stays editable afterwards; the preset is only a starting point.
| Design | At rest | Motion | Fill | Direction |
|---|---|---|---|---|
| Baseline | Flat translucent fill with sharp corners — the original look. | Squish | Ripple | Center Out |
| Frame | Empty body with a 2 px border. The most readable one in a fight. | Squish | Sweep | Up |
| Bar | No box at all — the label with a thin rail under it. | None | Sweep | Right |
| Soft Block | Rounded 3 px corners with a light line along the top edge. | Sink | None | Right |
| Segment | Body built from horizontal slices, like an equalizer. | None | Cascade | Up |
| Neon | Near-black core; the halo is painted by the animation. | None | Glow | Center Out |
| Wedge | Triangle pointing away from center, direction taken from the keybind. Arranges your keys into a compass. | Nudge | None | Right |
| Timeline | Not a button style — a press history scrolling right to left. | None | None | Right |
| Hex | Hexagonal keycaps. Arranges your keys into an interlocking comb. | Squish | Sweep | Center Out |
| Pixel Bevel | Double frame with a gold pixel at each corner, opaque slate and gold. | Sink | None | Right |
| Slot | A recess with no frame of its own, meant to sit inside the Board. | Sink | None | Right |
Three rules worth knowing
- Some designs move your keys
- Wedge wants a compass and Hex wants a honeycomb, so choosing them rearranges the cluster. Your keybinds, labels and per-key settings ride along; anything with no slot is stacked underneath rather than dropped. Leaving an arranging design puts the keys back into the stock grid, and switching between two designs that carry no arrangement leaves your own layout alone.
- Timeline is global only
- It lays the keys out itself as lanes and ignores their positions and sizes entirely, so it cannot be applied to a single key. The Designer's canvas shows a notice instead of keys while it is active.
- Decoration does not reserve space
- Neon's halo, Pixel Bevel's outline and the release trail all paint outside their key, and that is allowed. If they counted toward the module's size, every module stacked against that edge would jump every time you tried a different design. Only the Board changes the measured size, adding 24 pixels of padding around the cluster.
14
The animation system
How a key looks at rest and what it does when pressed are separate. Animations are independent of the design and attachable to any style, which is why there is no list of named combined effects — there are three axes and you combine them freely.
Motions and fills are sets, not single choices. Several run at once, and ticking them lives only in the Designer's Anim drawer — a control that shows one value at a time cannot express a set, so the settings screen and the in-world editor deliberately do not offer it.
Motion — how the key moves
| Motion | Effect |
|---|---|
| Squish | The key shrinks to 85% while held. |
| Kick | Shrinks to 88%, then springs past its size to 106% on release. |
| Sink | The key drops 3 pixels, like a real keycap. |
| Nudge | The key slides 5 pixels along the direction its keybind implies — W moves up, A moves left. |
Sink and Nudge add together — tick both and the key sinks and slides. Squish and Kick both drive the scale, so Kick wins when both are ticked. Ticking nothing means no motion.
Fill — how the key is painted
| Fill | Effect | Reads direction |
|---|---|---|
| Ripple | Color spreads outward from the press. | No |
| Sweep | A wave of color crosses the key. | Linear |
| Cascade | The key fills row by row. | Linear |
| Hold Ring | A ring travels around the border while you hold. | Rotational only |
| Edge Run | A light runs along the perimeter. | Rotational only |
| Glow | The key brightens from within. | No |
Multiple fills stack, and they are always painted in the order above regardless of the order you ticked them.
Direction — where a fill starts
There is one direction shared by every active fill, and it is adapted per fill as it is drawn. That is what lets a sweep going up and a ring going clockwise coexist under a single setting. The picker only offers Clockwise and Counter-clockwise while a perimeter fill is selected, and only the first six otherwise; a pairing that cannot work — a ring told to go "up" — is silently mapped to the nearest sensible one rather than sitting still and looking broken.
The release trail has its own switch rather than being a fill, because it fires when you let go rather than while you hold. A per-key animation override names one animation and means only that one — it replaces the module's set instead of adding to it, which is how a single key opts out of an effect its neighbors have.
15
The Keystrokes Designer
A free canvas where you place, resize, rename and restyle every key. The canvas draws real designs rather than neutral editor boxes, so what you are arranging is what the HUD will actually render.
Toolbar
- Undo / Redo
- Sixty steps. Each step is a snapshot of the whole look, not just the key list — picking a design rewrites your colors too, and an undo that put the keys back while leaving the colors changed would be worse than none.
- Snap
- Snapping while you drag. On by default, and not saved — it is a property of the session, not of your layout.
- Reset Layout
- Restores the stock nine keys and the shipping design, animation, palette and per-key overrides. Putting back only the positions would leave the previous design painted over a default grid, which does not read as a reset.
- Import
- Paste a keystrokes share code with Ctrl+V.
- Export
- Copies your whole keystrokes look to the clipboard.
- Design
- The gallery — eleven cards whose previews animate themselves, because a design cannot be judged from its resting state alone. Cards that will move your keys are badged Arranges keys.
- Anim
- The animation drawer. The only place motions and fills are ticked.
The left rail
- Add element
- Click to place a Key (21×21), Modifier (33×13), Mouse L or Mouse R (33×21), or a Space Bar (67×13).
- Layers
- One row per key. The dot hides and shows a key; click to select, Ctrl+click to add to the selection.
- Presets
- WASD is the stock nine keys. Full adds Q/E and both mouse buttons. Mouse is the two mouse buttons on their own.
The canvas shows a safe area of 400 × 300 pixels — anything laid out inside it will fit on screen at any sensible scale.
The inspector — per-key settings
Select a key and every one of these becomes available. None of them exist on any other screen.
| Setting | Default | Range | What it does |
|---|---|---|---|
| Keybind | Press a key to bind it; Esc cancels. Binding also renames the label. Mouse buttons read as Mouse L, Mouse R or Mouse n. | ||
| Label | 64 chars | The text drawn on the key. | |
| Position X / Y | ±10000 | Where the key sits in the cluster. | |
| Size W / H | 1 to 1024 | ||
| Placement | Centered | Where the label sits inside the key. Centered until you drag it; the Center button puts it back. | |
| Content | Text | Text, Line | Line draws a solid bar instead of the label — what a space bar actually wants. |
| Text size / Line weight | 100% | 50 to 400 | Label size, or the thickness of the bar in line mode. |
| Line width | 100% | 10 to 100 | Bar length as a share of the key's inner width. Only shown in line mode. |
| Style | Shadow on | B I U S | Bold, italic, underline, shadow. In line mode only the shadow applies. |
| Text color | Global | Overrides the module color for this key. Use Global puts it back. | |
| Pressed color | Global | Same, for the held state. | |
| Design | Global | 10 designs | Give this one key a different look. Timeline is not offered — it is global only. |
| Motion / Fill | Global | One animation for this key, replacing the module's whole set. | |
| Direction | Global | Only appears when the active fill actually reads a direction. | |
| Show CPS | Off | Draws a live click counter on the button. Mouse keys only. | |
| Animation | On | Switches every animation off for this key alone. |
Shortcuts
| Action | Binding |
|---|---|
| Multi-select | Ctrl + click |
| Box select | Drag on the canvas |
| Edit label | Double-click, or F2 |
| Move label | Right-drag — snaps to left/center/right and top/middle/bottom |
| Resize | Scroll — 2 px per notch, from the center |
| Text size | Ctrl + Scroll |
| Nudge | Arrow keys — 1 px, or 5 px with Shift |
| Duplicate | Ctrl+D |
| Delete | Delete |
| Undo / Redo | Ctrl+Z / Ctrl+Y |
| Quick actions | Right-click a key |
| Clear selection, close a panel | Esc |
The footer tells you whether there is anything unsaved. Closing the Designer saves automatically; Cancel puts back what you started with.
16
Fonts, outline and menu scale
On the General page. These apply to every module at once.
HUD font
The font applies to HUD modules and to this mod's own screens — the editor, the settings screen and the Designer. It never touches chat, the vanilla menus or anything another mod draws.
Stuck on the Enchanting Table font? It is unreadable on purpose, which includes the menu you would use to change it back. Open the in-world editor with Right Shift — a Restore Font button appears in the bottom-right corner whenever that font is active.
Text outline
Off by default, which gives you Minecraft's usual drop shadow. Turning it on draws a thin black outline on every side instead — noticeably more readable over bright terrain and snow.
Menu scale
The settings screen already holds one physical size across every Minecraft GUI Scale. Menu Scale % (50 to 200, default 100) nudges that baseline if you want the menus larger or smaller than the mod's own idea of right.
17
Presets and server configs
Two ways to keep more than one HUD around. Presets are named by you and switched by hand; server configs name themselves and switch on their own.
Saved configs
A preset is a complete copy of your settings. Save Config in the editor, or Save Current in the settings screen, names it Config 1, Config 2 and so on, taking the first free number.
- Left-click a name to load it
- Right-click to rename it — a name already in use is refused rather than overwriting
- The bin icon deletes it
A preset is validated before anything is applied, so a corrupt or hand-edited file cannot leave you with a half-replaced config. Your best combo is not a setting and has a file of its own, so no preset carries it.
Server configs
On by default. There is nothing to press: while you are in a world, every save is mirrored into that server's own file, so "how my HUD looks here" is simply remembered. Join a server that already has one and it is applied silently.
- All your single-player worlds share one config
mc.example.netandmc.example.net:25565are treated as the same server- Realms are keyed by their display name, since they have no usable address
- Your best combo is not in a server config either — it has a file of its own
Renaming a server config only changes the name you see. The file keeps the server's address, because that address is how the mod finds the config when you join — renaming it would quietly unbind the config.
Just before a silent switch, the config you are leaving is written to a preset called Auto Backup. It is a single rolling slot rather than a timestamp, because this fires on every join and timestamps would bury your Configs list within one session.
19
What each reset actually resets
Five buttons say some form of "reset" and none of them mean the same thing. This is the single most common source of surprise, so it gets its own table.
| Button | Where | What it touches |
|---|---|---|
| Reset HUD Layout | General tab, and the editor's Reset HUD | Anchors, offsets and scales only. Colors and behavior are untouched, and Prevent Overlap goes back on. |
| Reset Settings | A module's right-click menu | That one module's visual settings. Nothing else moves. On Combo it covers every setting except the anchor, the offsets and the on/off switch, so Scale % and the Behavior tab reset too. Your best combo does not. |
| Reset Best | Combo page → Behavior tab | Only your best combo. Asks for confirmation first; Cancel cannot bring it back, since the record is not part of the config. |
| Reset Layout | The Designer's toolbar | The stock nine keys and the design, animation, palette and every per-key override. |
| Reset All Settings | The settings screen | Everything. Saved presets, third-party module data and your best combo are kept. Cannot be undone. |
Third-party module settings survive a full reset on purpose — those modules provide their own Reset Settings row instead.
20
Gotchas
Things that look like bugs and are not.
- Keystrokes has no background toggle
- Set Background Opacity to
0. That is how the Frame, Bar and Segment designs get their transparent look. - Ping has no rainbow, Armor has no colors
- Neither is an oversight. Armor draws items rather than text, so there is nothing to tint; the slot backgrounds are its equivalent switch.
- Picking a design changed my colors
- That is the design. A palette is what makes a style legible, so choosing one brings its own — along with its animations, and its arrangement if it has one. Export your layout before browsing the gallery if you want it back.
- Changing heatmap difficulty dropped my combo
- Expected — the tiers moved underneath it, so the count is reset rather than reinterpreted. Changing a custom tier while Custom is selected does the same.
- A hit did not count
- With Hit Detection on Server, a hit counts only once the server confirms it landed, so hits into a target's invulnerability frames or onto a shield, arrows and sweep damage never count. For the old count-every-attack behavior, set Hit Detection to Client.
- A negative number appeared under my combo
- That is a combo landed on you. It only stacks under yours with Decay on or Break on Any Damage off; otherwise the first hit you take ends your combo, and the negative line takes its place.
- My custom tiers moved on their own
- Each tier stays above the one before it, so changing one pushes the others out of its way.
- BEST did not flash
- It plays once per combo, and only once the combo that beats your record reaches tier 2.
- The timeout bar keeps moving during a freeze
- It shows the real time left, and a combo's timeout does not stop for freezes.
- The timeout slider stops at 10 seconds
- The slider covers 1 to 10, but the config itself accepts 0.1 to 60. A hand-edited file or an imported code can carry a value the slider cannot reach or display exactly.
- Scaling in the editor saved without asking
- Scroll-to-scale writes immediately, because there is no drag to release. Use undo in the Designer, or a preset, if you want a way back.
- I cannot find the armor slot offsets
- They exist only after Ungroup, and only in the in-world editor. Dragging is the interface — there are no rows for them.
- I cannot find the animation checkboxes
- They are in the Designer's Anim drawer, and nowhere else. Motions and fills are sets, and no other screen has a control that can express a set.
- Every menu is unreadable
- The Enchant font. Press Right Shift and use Restore Font in the bottom-right of the editor.
Open an issue on GitHub with your Minecraft version, the mod version and, if it is a layout problem, a share code. A code reproduces the exact state you are seeing.