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 .json per preset. The file name is the name you see in-game.
simplecps_server_presets/
Per-server configs, one .json per 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.
Note

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.

Note

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.
keystrokesMotion
keystrokesFill
The single-animation predecessors of the current lists. Same story — migration only.
comboHeatmap
comboRainbow
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 X becomes {combo} X.
showLCTRL
showLSHIFT
showSpace
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 → LayoutOpen 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.

SettingTypeRangeDefault
PositionAnchor grid5 anchorsTop left
X OffsetStepper−10000 to 10000 px0
Y OffsetStepper−10000 to 10000 px0
Scale %Slider50 to 300100

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.

L CX R
Align left, match center on X, align right.
T CY B
Align top, match center on Y, align bottom.
DX DY
Distribute horizontally or vertically — equal gaps between elements. Needs three or more.

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.
Note

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.
Note

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.

SettingDefaultRangeWhat it does
Enable CPSOnShows or hides the module.
Right Click CPSOnShows the right-click count alongside the left.
Text ColorWhiteColor of the numbers.
RainbowOffCycles the text through the spectrum. Overrides Text Color.
Show BackgroundOffDraws a box behind the text.
Background ColorBlack
Background Opacity1280 to 2550 is invisible, 255 is solid.
Left Prefix(empty)64 charsText before the left-click count.
Separator" | "64 charsText between the two counts.
Right Prefix(empty)64 charsText 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.

SettingDefaultRangeWhat it does
Enable PingOff
Text ColorWhite
Show BackgroundOff
Background ColorBlack
Background Opacity1280 to 255
Note

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.

SettingDefaultRangeWhat it does
Enable FPSOff
Suffix TextFPS64 charsText after the number. Empty it for a bare count.
Text ColorWhite
RainbowOff
Show BackgroundOff
Background ColorBlack
Background Opacity1280 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

SettingDefaultRangeWhat it does
Hit DetectionServerServer, ClientServer counts a hit once the server confirms it landed. Client counts every attack you send, the way the counter used to.
Combat ModeModernClassic, ModernClassic 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 DamageOnOn: any damage breaks the combo, falls and lava included. Off: only hits from someone you are fighting do. Thorns never breaks it.
Only PlayersOnOnly 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 SwitchOnKeeps 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.
Timeout3 s1 to 10 sSeconds without a counted hit before the combo ends, or starts draining with Decay.
Hide When InactiveOffHides the display while there is no combo to show.
Min Display21 to 5The 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.
DecayOffA broken or timed-out combo drains one hit per second instead of ending. Landing a counted hit stops the drain.

Style

SettingDefaultRangeWhat it does
Format{combo} Combo64 charsWhat 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.
StyleTextText, BigText 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.
LineTimeoutTimeout, Hits, Both, OffThe 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 ModeStaticStatic, Rainbow, HeatmapStatic 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 ColorWhiteColor of the text. Heatmap keeps it up to tier 1 and blends from it toward the mid color; only Rainbow ignores it.
Heatmap DifficultyMediumEasy, Medium, Hard, CustomHits 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 151 to 98With Custom difficulty: the hit where your count starts turning toward the mid color. Each tier stays above the one before it.
Custom Tier 282 to 99With Custom difficulty: the hit where your count reaches the mid color, and from which a new best flashes.
Custom Tier 3123 to 100With Custom difficulty: the hit where your count reaches the top color and starts to shake.
Heatmap Mid Color#FF0000The heatmap color at the second tier.
Heatmap Top Color#550000The 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

DifficultyTier 1Tier 2Tier 3 (shake)
Easy3 hits5 hits7 hits
Medium (default)5 hits8 hits12 hits
Hard10 hits40 hits60 hits
CustomCustom Tier 1 (default 5)Custom Tier 2 (default 8)Custom Tier 3 (default 12)

Animation

SettingDefaultRangeWhat it does
Impact %1000 to 200How 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 %1000 to 200How 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 %1000 to 200How far a combo landed on you jolts with each hit you take. 0 turns it off.

Background

SettingDefaultRangeWhat it does
Show BackgroundOffDraws a box behind the text.
Background ColorBlackColor of the box.
Background Opacity1280 to 2550 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.
Note

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%.

MomentPunchFreeze
A normal hit8%, settling in 140 msNone
A new tier18%60 ms
Each hit past tier 310%, rising to 16%30 ms, plus 3 ms per hit past tier 3, up to 90 ms
A new best22%90 ms
A finisher — killing the target20%, 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 higherNone50 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.

Note

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, #FF0000 and #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.

FormatReads
{combo} Combo12 Combo
x{combo}x12
{combo} hits (best {best})12 hits (best 30)
Hits12 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.

SettingDefaultRangeWhat it does
Enable ReachOff
Timeout3 s1 to 10 sHow long the last measurement stays on screen.
Only PlayersOnOnly measures hits on players.
Always ShowOffKeeps the display up even when idle, showing the No Hit text.
No Hit TextNo Hit64 charsShown before your first hit, and while idle if Always Show is on.
Text ColorWhite
RainbowOff
Show BackgroundOff
Background ColorBlack
Background Opacity1280 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.

SettingDefaultWhat it does
Enable ArmorOff
Vertical OrientationOnStacks the items in a column. Off lays them in a row.
Show Main HandOnIncludes the item you are holding.
Show Off HandOffIncludes your off-hand item.
Show Background SlotsOffDraws a semi-transparent inventory slot behind each item.
Durability TextOffPrints the exact number next to each item instead of relying on the bar.
Damage FlashOnFlashes an item red for a moment when it loses durability.
Note

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.

Note

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.

SettingDefaultRangeWhat it does
Enable KeystrokesOff
Scale %8050 to 300Note the default is 80, not 100 — the stock cluster is large.
Text ColorWhiteColor of the key labels at rest.
Pressed ColorGreenColor used while a key is held.
RainbowOff
Rainbow TargetTextText, BackgroundWhether the rainbow paints the labels or the key bodies.
DesignBaseline11 designsThe look of a key at rest. Picking one also applies its animation and palette — see below.
Fill DirectionRight8 directionsWhich side a directional fill starts from. Ignored by fills that have no direction.
Release TrailOffLeaves a fading outline behind when you let a key go.
BoardOffFrames the whole cluster with an ornamented board.
Background ColorBlackColor of the key bodies.
Background Opacity1280 to 255
Note

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.

Warning

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.

DesignAt restMotionFillDirection
BaselineFlat translucent fill with sharp corners — the original look.SquishRippleCenter Out
FrameEmpty body with a 2 px border. The most readable one in a fight.SquishSweepUp
BarNo box at all — the label with a thin rail under it.NoneSweepRight
Soft BlockRounded 3 px corners with a light line along the top edge.SinkNoneRight
SegmentBody built from horizontal slices, like an equalizer.NoneCascadeUp
NeonNear-black core; the halo is painted by the animation.NoneGlowCenter Out
WedgeTriangle pointing away from center, direction taken from the keybind. Arranges your keys into a compass.NudgeNoneRight
TimelineNot a button style — a press history scrolling right to left.NoneNoneRight
HexHexagonal keycaps. Arranges your keys into an interlocking comb.SquishSweepCenter Out
Pixel BevelDouble frame with a gold pixel at each corner, opaque slate and gold.SinkNoneRight
SlotA recess with no frame of its own, meant to sit inside the Board.SinkNoneRight

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

MotionEffect
SquishThe key shrinks to 85% while held.
KickShrinks to 88%, then springs past its size to 106% on release.
SinkThe key drops 3 pixels, like a real keycap.
NudgeThe 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

FillEffectReads direction
RippleColor spreads outward from the press.No
SweepA wave of color crosses the key.Linear
CascadeThe key fills row by row.Linear
Hold RingA ring travels around the border while you hold.Rotational only
Edge RunA light runs along the perimeter.Rotational only
GlowThe 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

Right Left Up Down Center Out Edges In Clockwise Counter-clockwise

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.

Note

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.

SettingDefaultRangeWhat it does
KeybindPress a key to bind it; Esc cancels. Binding also renames the label. Mouse buttons read as Mouse L, Mouse R or Mouse n.
Label64 charsThe text drawn on the key.
Position X / Y±10000Where the key sits in the cluster.
Size W / H1 to 1024
PlacementCenteredWhere the label sits inside the key. Centered until you drag it; the Center button puts it back.
ContentTextText, LineLine draws a solid bar instead of the label — what a space bar actually wants.
Text size / Line weight100%50 to 400Label size, or the thickness of the bar in line mode.
Line width100%10 to 100Bar length as a share of the key's inner width. Only shown in line mode.
StyleShadow onB I U SBold, italic, underline, shadow. In line mode only the shadow applies.
Text colorGlobalOverrides the module color for this key. Use Global puts it back.
Pressed colorGlobalSame, for the held state.
DesignGlobal10 designsGive this one key a different look. Timeline is not offered — it is global only.
Motion / FillGlobalOne animation for this key, replacing the module's whole set.
DirectionGlobalOnly appears when the active fill actually reads a direction.
Show CPSOffDraws a live click counter on the button. Mouse keys only.
AnimationOnSwitches every animation off for this key alone.

Shortcuts

ActionBinding
Multi-selectCtrl + click
Box selectDrag on the canvas
Edit labelDouble-click, or F2
Move labelRight-drag — snaps to left/center/right and top/middle/bottom
ResizeScroll — 2 px per notch, from the center
Text sizeCtrl + Scroll
NudgeArrow keys — 1 px, or 5 px with Shift
DuplicateCtrl+D
DeleteDelete
Undo / RedoCtrl+Z / Ctrl+Y
Quick actionsRight-click a key
Clear selection, close a panelEsc

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

Vanilla Inter Rubik JetBrains Mono Bebas Neue Enchant

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.

Warning

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.

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.net and mc.example.net:25565 are 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
Note

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.

18

Share codes

Your whole HUD, packed into one line of text you can paste into Discord. Codes start with EYMHUD1-. Your best combo stays behind: it is not a setting, so no code carries it.

Two kinds of code

Full config codeKeystrokes code
CarriesEvery setting of every module, including third-party ones, but not your best comboThe whole Keystrokes look
Export fromSettings screen, or the editor's Export CodeThe Designer's Export
Import atSettings screen, or the editor's Import CodeThe Designer's Import
Backup takenYes — a timestamped preset before anything is appliedNo — the Designer's undo covers it

The two are not interchangeable, and giving one to the wrong screen is refused rather than half-applied: paste a keystrokes code into the settings screen and it tells you to use the Designer instead.

What a keystrokes code carries

The layout and the look: the design, the animations and their direction, the release trail, the board, the scale, the rainbow settings and all four colors — including anything a single key overrides on its own.

Note

Where it sits on your screen is deliberately left out. A shared design should not move your HUD to someone else's corner — the anchor and offsets stay yours.

Limits and errors

A code is a string from a stranger, so every step of reading one is bounded: 64 KB of text at most, half a megabyte once unpacked, and a hard stop before anything larger is ever allocated. A malformed or oversized code is rejected outright — nothing is partly applied.

Not a valid share code
The text is malformed, too large, or was made by a newer version of the mod than you have.
No valid code in clipboard
You pressed Import with an empty field and nothing usable on the clipboard.
That's a keystrokes code
Right code, wrong screen — take it to the Designer.
That's a config code
The mirror image: take it to the HUD editor.
Imported from v1.2.0
It worked, but the code came from a different version of the mod. Worth a glance to check nothing looks off.
Note

Keystrokes codes made before v1.2.1 still import — they simply carry no look of their own and arrive wearing your design. Codes exported from 1.2.1 onward are rejected by earlier builds, so someone still on 1.2.0 needs to update before your layout will reach them. v1.2.3 draws the same line again for a different reason: Minecraft 26.3 renumbered keys and mouse buttons, so a code written by 1.2.2 or earlier has its key numbers translated on the way in, while a 1.2.3 code is refused outright by older builds rather than applied to the wrong keys.

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.

ButtonWhereWhat it touches
Reset HUD LayoutGeneral tab, and the editor's Reset HUDAnchors, offsets and scales only. Colors and behavior are untouched, and Prevent Overlap goes back on.
Reset SettingsA module's right-click menuThat 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 BestCombo page → Behavior tabOnly your best combo. Asks for confirmation first; Cancel cannot bring it back, since the record is not part of the config.
Reset LayoutThe Designer's toolbarThe stock nine keys and the design, animation, palette and every per-key override.
Reset All SettingsThe settings screenEverything. 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.
Still stuck

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.