Skip to content

Repository files navigation

1MB Locator HUD

1MB Locator HUD is a client-only Fabric mod for Minecraft Java Edition 26.2. It replaces coordinate-heavy F3 use with compact, configurable main and details panels. The ordinary HUD works in singleplayer and on any compatible server without a server plugin. A separate, default-off CMI speed capability is available only when the exact 1moreblock.com entry proves itself through the signed 1MoreBlock bridge.

The mod was made for 1MoreBlock.com, a public Java Edition survival Minecraft server currently running Minecraft 26.2. All location, direction, biome, target, visual, copying, and observed-speed features remain server-independent. On every non-1MoreBlock server, the optional CMI receiver is never installed and its controls remain absent and inert.

Locator HUD icon

Release status

The feature, configuration, build, installation, and download references below describe the tested 1.55.0 Snapshot Public Beta 5. It remains a prerelease and should receive broader player testing before it is treated as stable. Please report beta feedback and problems through the issue tracker.

Features

  • Rounded whole-number XYZ, one- or two-decimal XYZ, containing-block XYZ, both coordinate rows, or neither.
  • Optional Overworld–Nether coordinate lens that shows the approximate mathematical X/Z counterpart without claiming that a portal exists or a destination is safe.
  • Optional friendly world/dimension name before or after the first coordinate row. When coordinates are hidden, the world name uses its own row.
  • Three-state view direction: the default four-way cardinal name, an opt-in eight-way name with a compact signed-axis hint, or off. Compact yaw/pitch angles remain independently toggleable in whole, one-decimal, or two-decimal degrees.
  • Optional biome, three-second biome-transition, smoothed three-dimensional movement-speed, and crosshair-target block, fluid, and entity rows with Friendly or API-accurate names.
  • Optional, default-off CMI walk/fly multiplier controls for , 2.5×, and on authenticated 1MoreBlock sessions. The row shows only server-permitted presets, accepts clicks only while Chat is open, and updates only from signed authoritative results.
  • Optional auto-hide keeps empty target rows compact, while 0.5-second target linger prevents flicker over block edges.
  • Independently visible and positioned main and details panels. A live editor can drag either panel near any corner with small, recoverable X/Y offsets; an unmodified details panel stacks vertically when both panels share a corner.
  • Independent five-stop size sliders at 60%, 70%, 80%, 90%, and 100% for each panel. A default-off Accessibility switch adds 110%, 125%, and 150% choices while retaining screen-edge clamping.
  • Independent minimum- and maximum-width controls for each panel, defaulting to automatic content sizing with optional 120–320 GUI-pixel base widths and final screen-edge clamping.
  • Independent seven-stop background sliders at OFF, 7%, 24%, 55%, 72%, 88%, and 100%. OFF uses a compact backgroundless layout.
  • Shared text and panel shadows plus nine color schemes: None (all white), Duo-tone, Ocean, Amethyst, Emerald, Ember, Frost, Rose, and Gold.
  • Optional default-off biome-aware colors, enabled by the nameless aibo magic checkbox beside Colors, smoothly switch among existing themes for underground, cold, warm, and temperate local environments without replacing the saved manual theme.
  • Explicit coordinate copying in Plain, namespaced Vanilla TP, or CMI tppos format. The remappable F8 action writes locally to the clipboard and never runs or sends the copied text.
  • Automatically respects Minecraft's server-provided reduced-debug state: coordinate rows, the coordinate lens, coordinate copying, and target sampling/display are unavailable while the server restricts them. Direction, biome, and locally observed speed remain available.
  • Four built-in, fully editable Minimal, Explorer, Builder, and Privacy presets, plus exactly one separate local Saved setup slot for preserving a preferred configuration.
  • Remappable global visibility (F7 by default), coordinate-copy (F8 by default), and configuration-screen (unbound by default) key mappings, plus optional Mod Menu integration with responsive scrolling, wide two-column and narrow single-column layouts, near-white setting names, color-coded state labels, and one-second hover tooltips. Accessibility mode adds expanded keyboard/narrator guidance and explains why dependent controls are unavailable.
  • Translation-backed configuration labels, option values, tooltips, confirmations, and key-binding text, with a complete English fallback and support for community locale files.
  • Automatically saved, backward-compatible client configuration in config/locator-hud.json, with brief client-thread debouncing, visible failure/recovery notices, and bounded automatic retries that retain unsaved values in memory.

Requirements

Installing Snapshot Public Beta 5

  1. Install Fabric Loader for Minecraft 26.2.
  2. Download Fabric API and 1MB-Locator-HUD-1.55.0.jar.
  3. Put both JAR files in the client instance's mods/ folder.
  4. Optionally add Mod Menu for the in-game configuration screen.
  5. Launch Minecraft with the Fabric profile.

Verifying release downloads

Starting with Snapshot Public Beta 5, GitHub publishes the runtime JAR together with its .sha256 file and GitHub/Sigstore build provenance. The release notes contain commands specialized for that version.

The checksum detects any byte change relative to the published digest:

# Linux
sha256sum --check 1MB-Locator-HUD-<version>.jar.sha256
# macOS
shasum -a 256 --check 1MB-Locator-HUD-<version>.jar.sha256

GitHub CLI can additionally verify that the exact JAR was attested by this repository's release workflow, from the expected release tag, on a GitHub-hosted runner:

gh attestation verify 1MB-Locator-HUD-<version>.jar \
--repo mrfdev/1MB-Locator-HUD \
--signer-workflow mrfdev/1MB-Locator-HUD/.github/workflows/release.yml \
--source-ref refs/tags/v<version> \
--deny-self-hosted-runners

Each release's specialized command also pins the source commit recorded by the attestation. An attestation proves artifact integrity and build provenance; it does not claim that the code is bug-free or replace source review and testing. See RELEASING.md for the guarded publishing process.

Usage

Press F7 in game to show or hide the entire HUD. Minecraft displays a short enabled/disabled confirmation, and the binding can be changed in the Controls screen under Locator HUD.

Press F8 to copy your current coordinates using the configured Copy format and Decimal precision. The binding is remappable under Locator HUD. This action only updates the local clipboard and shows a confirmation; it never opens chat, runs the copied command, or sends it to the server. If the connected server enables reduced debug information, copying is refused and the existing clipboard is left unchanged.

To configure the mod without Mod Menu, assign Open Locator HUD settings in Minecraft's Controls screen under Locator HUD. It intentionally defaults to unbound to avoid conflicting with existing controls. The assigned key opens the same complete configuration screen from gameplay or another screen.

With Mod Menu installed, open Mods, select 1MB Locator HUD, and use its configuration button. Changes preview immediately and save automatically after a brief pause; slider and panel drags save their final value on release, and Done flushes pending main-setting changes before returning to the previous screen. The Setup section can apply one of four built-in presets, save and restore exactly one preferred setup, or open Place panels. In that explicit editor, drag either outlined panel near a corner; hidden and empty panels receive labeled fallback handles. Reset positions restores only the default panel corners and offsets. The normal gameplay HUD never captures clicks. Reset requires confirmation before restoring all factory defaults and never deletes the separate Saved setup.

If either configuration file cannot be written, Minecraft shows a local toast instead of leaving the problem only in the log. Live HUD changes remain active, and the mod retries the newest main settings every five seconds until they are stored. A failed Save current setup keeps and retries the exact snapshot requested at that moment on its own five-second schedule, even if live settings are edited or flushed afterward. Recovery is reported once. Files protected because they use a newer schema or could not be backed up are never retried or overwritten automatically; the unavailable Saved setup action explains that the file must be handled outside Minecraft before restarting.

The top-level Accessibility switch defaults to OFF. Turning it on exposes 110%, 125%, and 150% panel sizes, adds fuller keyboard/narrator usage guidance, and gives explicit reasons when a dependent setting is unavailable. It does not force a color palette or background. Turning it off returns any panel above 100% to Normal (100%); sizes from 60% through 100% are preserved.

Optional 1MoreBlock CMI controls

The Details setting named CMI defaults to OFF. When enabled, Locator HUD considers the capability only for the exact original multiplayer entry 1moreblock.com (optionally with a port). Before any controls appear, the server must advertise the dedicated channel and return a fresh Ed25519-signed session bound to this connection, the current player UUID, a strictly increasing message sequence, live permissions, supported presets, movement type, and a short expiry. A hostname, resolved address, MOTD, brand, command tree, chat message, or channel name is never enough by itself.

The row identifies the signed WALK or FLY state and includes only the currently permitted , 2.5×, and values. Open Chat to click a preset; ordinary gameplay clicks are never captured. The bridge rechecks CMI and the player's permissions at action time, dispatches the movement-specific command as that player, and reports the Paper walk/fly value after the command has taken effect. The client never changes or guesses the value optimistically.

Missing CMI, a missing bridge permission, unsupported CMI, a bad signature, malformed, replayed, or rolled-back data, a channel unregister, a disconnect or transfer, an expired heartbeat, denial, or failed readback removes the capability. A newer signed permission snapshot is required before a denied or failed session can expose controls again. Connecting through any other saved address does not register the receiver at all. The rest of Locator HUD continues to work normally.

Server-restricted debug information

Some servers enable Minecraft's built-in reduced-debug state. Locator HUD reads the supported state already maintained on the local player and responds to changes while connected. While the restriction is active:

  • decimal and containing-block coordinate rows are hidden;
  • the Overworld–Nether coordinate lens is hidden;
  • F8 coordinate copying is refused without changing the existing clipboard; and
  • block, fluid, and entity target sampling stops, any lingered target values are cleared, and their rows are hidden.

World name, view direction, view angles, biome information, biome transitions, locally observed movement speed, and visual settings remain available. The restriction never rewrites the player's configured choices; those choices automatically take effect again when full debug information is available. Enforcement is automatic and has no client-side override. Locator HUD does not inspect packets or add custom networking to implement it.

Without Mod Menu, the HUD and all three key mappings still work normally; assign Open Locator HUD settings once to retain direct in-game configuration access. Configuration is stored in config/locator-hud.json; the optional Saved setup uses config/locator-hud-saved-setup.json. Close the client before editing either file manually.

Existing unversioned and schema-1 configurations are migrated automatically to schema 2. If the main configuration is malformed, the original is preserved as a dated .broken.json backup before safe defaults are written. A malformed Saved setup is backed up and left unavailable until a new setup is saved. If a required backup cannot be created—or either file belongs to a newer schema—the protected file is not overwritten; the main configuration uses defaults in memory, while a protected Saved setup remains unavailable.

Configuration reference

AreaSettingDefaultChoices or behavior
GlobalHUDONShows or hides the entire HUD.
GlobalAccessibilityOFFAdds 110%, 125%, and 150% size choices plus expanded keyboard/narrator guidance and disabled-control explanations. It never forces Colors or Background. Turning it off returns sizes above 100% to Normal (100%).
GlobalColorsOceanNone (all white), Duo-tone, Ocean, Amethyst, Emerald, Ember, Frost, Rose, or Gold; shared by both panels.
GlobalBiome-aware colorsOFFThe nameless checkbox beside Colors has the tooltip aibo magic. When checked, it uses only the current local biome and column height to select an existing underground, cold, warm, or temperate theme. A short delay and gradual blend prevent border flicker. Unchecking it immediately restores the saved Colors choice.
GlobalText shadowONShared by both panels.
GlobalPanel shadowONShared by both panels and available when at least one enabled panel uses a non-OFF background.
GlobalCopy formatPlainPlain produces X … Y … Z … / World; Vanilla TP produces /minecraft:teleport @s …; CMI tppos produces /cmi tppos -p:<playername> … <world>. All use Decimal precision. The command formats are copied templates only and require the relevant server command and permission.
SetupBuilt-in presetMinimal selected, not appliedMinimal, Explorer, Builder, or Privacy. Applying changes existing content, visibility, sizes, and backgrounds while retaining the manual Colors choice, biome-aware color override, panel positions and width limits, shadows, and Copy format. Every resulting setting remains editable. Privacy hides exact location rows in this HUD only; it does not mask F3 or other mods.
SetupSaved setupEmpty until savedSave current setup writes one separate local slot. Replacing it and restoring it require confirmation; restore replaces all current settings. A transient failure retains and retries the exact requested snapshot and reports both failure and recovery in game.
SetupPlace panelsDefault corners, zero offsetsOpens an explicit live editor for dragging the main and details panels. The nearest corner is selected automatically, offsets snap within 6 GUI pixels and are limited to ±64, and Reset positions changes only placement. Normal gameplay remains non-interactive.
SetupResetRequires confirmation before restoring factory defaults. It does not modify the Saved setup slot.
MainShow main panelONIndependently shows or hides the main panel.
MainMain positionTop / LeftTop / Left, Top / Right, Bottom / Left, or Bottom / Right. Choosing a corner here clears the main panel's fine offset; Place panels can add a small offset.
MainCoordinate displayXYZ onlyXYZ only, block XYZ only, XYZ plus block, or none. Coordinate rows are temporarily hidden when the server enables reduced debug information.
MainDecimal precision1 decimalNone rounds XYZ to whole numbers; 1 or 2 decimal places are also available. This control is available when coordinate display includes XYZ or the coordinate lens is on.
MainOW / Nether lensOFFIn the vanilla Overworld, shows approximate corresponding Nether X/Z coordinates; in the vanilla Nether, shows approximate corresponding Overworld X/Z coordinates. Uses Decimal precision, does not locate portals or guarantee safety, and is hidden under server-provided reduced debug.
MainWorld nameON (behind)ON (in front), ON (behind), or OFF.
MainView directionONON shows the existing four-way cardinal name, ON (with details) adds eight-way directions and a compact signed-axis hint such as Northeast [+X/-Z], and OFF hides it.
MainView anglesOFFShows compact yaw and pitch values; when view direction is also enabled, they appear beside it.
MainAngle decimalsOFFWhole degrees when OFF, or 1 or 2 decimal places; available when view angles are on.
MainMain sizeNormal (100%)Normally snaps to 60%, 70%, 80%, 90%, or 100%. Accessibility adds 110%, 125%, and 150%.
MainMin / max widthAuto / AutoEach bound can stay automatic or use 120, 160, 200, 240, 280, or 320 GUI pixels before Main size scaling. A crossing change moves the companion bound to the same value. Long values are shortened where needed, fixed labels retain a small intrinsic floor, and current screen space is always the final ceiling.
MainMain backgroundBalanced (72%)OFF, 7%, 24%, 55%, 72%, 88%, or 100%.
DetailsShow details panelONIndependently enables the details/target panel. It does not render until at least one details row is visible.
DetailsDetails positionTop / RightTop / Left, Top / Right, Bottom / Left, or Bottom / Right. Choosing a corner here clears the details panel's fine offset; Place panels can add a small offset. A zero-offset details panel automatically stacks when it shares the main panel's corner.
DetailsBiomeOFFShows the biome at the player's current position.
DetailsBiome changeOFFBriefly shows Previous → Current for three seconds after the biome beneath the player changes. It uses only the current client-known biome and does not scan or retain discovery history. When the normal Biome row is enabled, the notice temporarily replaces its value.
DetailsMovement speedOFFShows locally observed three-dimensional movement in blocks per second, including ascent and descent, smoothed over half a second. It does not read or change CMI speed.
DetailsCMIOFFShows signed, server-permitted CMI walk/fly multiplier presets only on an authenticated connection entered as 1moreblock.com. It remains absent on every other server and accepts preset clicks only while Chat is open.
DetailsTarget block, fluid, and entityAll OFFThree independent crosshair-target rows. Empty enabled rows show an em dash unless auto-hide is on. Target sampling and rows are disabled under server-provided reduced debug.
DetailsTarget namesAPI accurateAPI accurate shows the full stable namespaced identifier, such as minecraft:oak_log. Friendly uses Minecraft's localized player-facing name, such as Oak Log, with the identifier as a safe fallback.
DetailsAuto-hide empty valuesOFFHides empty block, fluid, and entity rows; does not hide an enabled biome row. Target linger may delay hiding briefly. If no rows remain visible, the entire details panel does not render.
DetailsTarget lingerOFFKeeps each last non-empty target value visible for 0.5 seconds after the crosshair moves away.
DetailsDetails sizeCompact (80%)Normally snaps to 60%, 70%, 80%, 90%, or 100%. Accessibility adds 110%, 125%, and 150%.
DetailsMin / max widthAuto / AutoUses the same automatic or 120–320 GUI-pixel base widths, crossing-bound repair, value shortening, intrinsic label floor, and final screen-space ceiling as the main panel.
DetailsDetails backgroundOFF (minimal)OFF, 7%, 24%, 55%, 72%, 88%, or 100%.

Localization

The complete English fallback is src/client/resources/assets/locatorhud/lang/en_us.json. Every configuration label, option choice, tooltip, confirmation, key-binding label, and local status message uses a translation key; environment-neutral option types store only those keys and never depend on Minecraft text components.

Community translations can be contributed as src/client/resources/assets/locatorhud/lang/<locale>.json, using Minecraft's lowercase locale filename such as de_de.json or nl_nl.json. Copy the English file, translate JSON values only, and keep every key plus formatting placeholders such as %s and %% unchanged. A clean build rejects any production translation key that is missing from the English fallback.

Screenshots

These screenshots were captured from the tested 1.22.0 Snapshot Public Beta 2. The gameplay HUD examples remain representative of current layouts. The configuration-screen image records the Beta 2 interface and therefore predates the responsive grouped layout, Setup controls, copy formats, target-name options, panel width limits, and biome-aware color checkbox documented above.

Main and biome panelsDecimal and block coordinates
Locator HUD showing rounded XYZ coordinates, view angles, and a separate Plains biome panel in the top-left corner.Locator HUD showing decimal XYZ, containing-block coordinates, yaw, and pitch in the top-left corner.

Configuration screen with live HUD preview

Minecraft gameplay with the 1MB Locator HUD configuration screen open and both HUD panels visible.

Commands and networking

The ordinary HUD registers or executes no commands, performs no telemetry or remote calls, and requires no server-side setup. F8 can place command-shaped text on the local clipboard only after an explicit key press and only when reduced debug permits coordinates; it never sends or executes that text. The namespaced Vanilla TP format requires a server that exposes namespaced vanilla commands and grants teleport permission. The CMI copy format follows the documented tppos order and permission model; its client-known dimension path may need editing when the server uses a different CMI world name.

The single networking exception is the optional locatorhud:cmi_speed plugin-message protocol described above. Its receiver is installed per connection only after the exact original 1MoreBlock entry passes the local prefilter. Every capability and result must then verify against the client-pinned public key. The separate Paper bridge is not bundled with the Fabric JAR, and proprietary CMI/CMILib JARs and the private signing key are never repository or release inputs.

Building from source

The Gradle wrapper is included. With JDK 25 available, run:

./gradlew clean build

On Windows, use gradlew.bat clean build instead.

The verified runtime JAR, source JAR, and runtime checksum are written to:

build/libs/1MB-Locator-HUD-1.55.0.jar
build/libs/1MB-Locator-HUD-1.55.0-sources.jar
build/libs/1MB-Locator-HUD-1.55.0.jar.sha256

The clean build runs the unit-test suite, treats Java source warnings as errors, rejects server APIs, unaudited networking outside the narrowly allowlisted CMI client boundary, telemetry, custom command registration, and location logging, and verifies the runtime JAR's client-only metadata, dependency floors, icon, and translations. The Gradle distribution and resolved build dependencies are checksum-verified.

Build the separately deployed Paper bridge with:

./gradlew -p bridge clean build

Its JAR is written under bridge/build/libs/. It compiles only against Paper API; CMI 9.8.9.8 and CMILib 1.5.9.9 are separately licensed runtime inputs and are not downloaded, bundled, or published by this project. The nested build has its own strict dependency checksums and verifies that the runtime JAR contains only bridge classes and required metadata. See the bridge deployment guide.

To run only the full unit-test suite:

./gradlew test

Two separate production-client smoke tests launch the built mod with Fabric API, exercise focused configuration-screen regressions, and verify operation both without and with optional Mod Menu:

./gradlew runClientSmokeWithoutModMenu
./gradlew runClientSmokeWithModMenu

Performance and retention diagnostics are opt-in and are not part of the normal build or CI gates. To launch the production client without Mod Menu under a bounded Java 25 Flight Recorder profile, run:

./gradlew runClientProfile

Exercise the HUD in a representative world, including the desired worst-case settings, and close Minecraft normally to finish build/profiles/locatorhud-client.jfr. Shutdown can take a little longer because the diagnostic records paths from suspected retained objects to their garbage-collection roots. The task prints hot methods, sampled allocation sites, and memory-leak candidates when the client exits. Those candidates are useful for comparing repeated runs, but they are not proof of a leak by themselves.

For a repeatable configuration-screen stress run, use:

./gradlew runClientUiSoak
./gradlew runClientUiSoak -Plocatorhud.uiSoakIterations=1000

The first command performs 250 cycles by default; explicit values from 1 through 10,000 are accepted. Each cycle rebuilds accessibility-dependent controls, applies a rotating preset, opens and closes panel placement, closes the settings screen, and flushes persistence. Every closed settings and placement screen is tracked through a weak reference, and the task fails if any remain reachable after bounded full-GC attempts. The client runs under a 512 MiB heap ceiling; an out-of-memory failure exits immediately and writes build/profiles/locatorhud-ui-soak-oom.hprof for diagnosis. Its bounded JFR recording is written to build/profiles/locatorhud-ui-soak.jfr, and hot-method, allocation, and statistical retention views are printed on exit.

The regular GitHub Actions workflow runs the strict clean build and both production-client variants on Java 25. A separate release-only workflow must run from an existing version tag on main; it repeats those gates, revalidates the remote tag, verifies and attests the exact runtime JAR through GitHub and Sigstore, uploads the JAR plus checksum to a draft release, byte-compares both draft assets, and only then publishes that verified draft. Every third-party action is pinned to an immutable commit, audited local actions are confined to .github/actions, and the clean build rejects mutable or dynamic action references.

Project structure

  • src/main/java: environment-neutral formatting, layout, option models, panel-content plans, width and drag-placement policies, reduced-debug disclosure policy, immutable HUD snapshots, sampling schedules, validated settings, configuration storage, save debounce/retry policy, and the bounded signed CMI protocol/session validator.
  • src/client/java: Fabric client initialization, centralized key mappings and explicit user actions, tick-owned HUD sampling with read-only render snapshots, rendering and semantic hitbox tracking, crosshair targeting, the narrowly scoped CMI connection controller, the persistence-aware configuration mutation facade, and focused configuration/placement UI builders.
  • src/main/resources: Fabric metadata and the mod icon.
  • src/client/resources: client translations.
  • src/test/java: unit tests for formatting, display modes, exhaustive row-plan matrices, geometry and drag-placement boundaries, responsive screen policy, visibility rules, sampling cadence, theme classification and blending, presets and Saved setup, discrete slider behavior, save debounce/retry transitions, configuration migration and recovery, plus deterministic long-run state churn.
  • src/test/resources: versioned legacy-configuration fixtures used by migration tests.
  • src/gametest: an isolated Fabric client-test mod used for production startup, focused configuration-screen smoke tests, and the opt-in UI soak; it is not packaged in the release JAR.
  • bridge: a separate Paper 26.2 CMI speed bridge project and deployment guide; its artifact is never embedded in the Fabric JAR.
  • .github/workflows/ci.yml: the pinned Java 25 build, policy, packaging, checksum, and production-client checks.
  • .github/workflows/release.yml: the tag-bound build, smoke-test, GitHub/Sigstore attestation, and guarded GitHub release publisher.

Project links

License

Copyright © 2026 mrfloris. All rights reserved. See LICENSE.

1MB Locator HUD was created by mrfloris and Codex.

About

A compact configurable coordinates, direction, biome, and crosshair-target HUD for Fabric 26.2

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - mrfdev/1MB-Locator-HUD: A compact configurable coordinates, direction, biome, and crosshair-target HUD for Fabric 26.2 · GitHub
Skip to content

Repository files navigation

1MB Locator HUD

1MB Locator HUD is a client-only Fabric mod for Minecraft Java Edition 26.2. It replaces coordinate-heavy F3 use with compact, configurable main and details panels. The ordinary HUD works in singleplayer and on any compatible server without a server plugin. A separate, default-off CMI speed capability is available only when the exact 1moreblock.com entry proves itself through the signed 1MoreBlock bridge.

The mod was made for 1MoreBlock.com, a public Java Edition survival Minecraft server currently running Minecraft 26.2. All location, direction, biome, target, visual, copying, and observed-speed features remain server-independent. On every non-1MoreBlock server, the optional CMI receiver is never installed and its controls remain absent and inert.

Locator HUD icon

Release status

The feature, configuration, build, installation, and download references below describe the tested 1.55.0 Snapshot Public Beta 5. It remains a prerelease and should receive broader player testing before it is treated as stable. Please report beta feedback and problems through the issue tracker.

Features

  • Rounded whole-number XYZ, one- or two-decimal XYZ, containing-block XYZ, both coordinate rows, or neither.
  • Optional Overworld–Nether coordinate lens that shows the approximate mathematical X/Z counterpart without claiming that a portal exists or a destination is safe.
  • Optional friendly world/dimension name before or after the first coordinate row. When coordinates are hidden, the world name uses its own row.
  • Three-state view direction: the default four-way cardinal name, an opt-in eight-way name with a compact signed-axis hint, or off. Compact yaw/pitch angles remain independently toggleable in whole, one-decimal, or two-decimal degrees.
  • Optional biome, three-second biome-transition, smoothed three-dimensional movement-speed, and crosshair-target block, fluid, and entity rows with Friendly or API-accurate names.
  • Optional, default-off CMI walk/fly multiplier controls for , 2.5×, and on authenticated 1MoreBlock sessions. The row shows only server-permitted presets, accepts clicks only while Chat is open, and updates only from signed authoritative results.
  • Optional auto-hide keeps empty target rows compact, while 0.5-second target linger prevents flicker over block edges.
  • Independently visible and positioned main and details panels. A live editor can drag either panel near any corner with small, recoverable X/Y offsets; an unmodified details panel stacks vertically when both panels share a corner.
  • Independent five-stop size sliders at 60%, 70%, 80%, 90%, and 100% for each panel. A default-off Accessibility switch adds 110%, 125%, and 150% choices while retaining screen-edge clamping.
  • Independent minimum- and maximum-width controls for each panel, defaulting to automatic content sizing with optional 120–320 GUI-pixel base widths and final screen-edge clamping.
  • Independent seven-stop background sliders at OFF, 7%, 24%, 55%, 72%, 88%, and 100%. OFF uses a compact backgroundless layout.
  • Shared text and panel shadows plus nine color schemes: None (all white), Duo-tone, Ocean, Amethyst, Emerald, Ember, Frost, Rose, and Gold.
  • Optional default-off biome-aware colors, enabled by the nameless aibo magic checkbox beside Colors, smoothly switch among existing themes for underground, cold, warm, and temperate local environments without replacing the saved manual theme.
  • Explicit coordinate copying in Plain, namespaced Vanilla TP, or CMI tppos format. The remappable F8 action writes locally to the clipboard and never runs or sends the copied text.
  • Automatically respects Minecraft's server-provided reduced-debug state: coordinate rows, the coordinate lens, coordinate copying, and target sampling/display are unavailable while the server restricts them. Direction, biome, and locally observed speed remain available.
  • Four built-in, fully editable Minimal, Explorer, Builder, and Privacy presets, plus exactly one separate local Saved setup slot for preserving a preferred configuration.
  • Remappable global visibility (F7 by default), coordinate-copy (F8 by default), and configuration-screen (unbound by default) key mappings, plus optional Mod Menu integration with responsive scrolling, wide two-column and narrow single-column layouts, near-white setting names, color-coded state labels, and one-second hover tooltips. Accessibility mode adds expanded keyboard/narrator guidance and explains why dependent controls are unavailable.
  • Translation-backed configuration labels, option values, tooltips, confirmations, and key-binding text, with a complete English fallback and support for community locale files.
  • Automatically saved, backward-compatible client configuration in config/locator-hud.json, with brief client-thread debouncing, visible failure/recovery notices, and bounded automatic retries that retain unsaved values in memory.

Requirements

Installing Snapshot Public Beta 5

  1. Install Fabric Loader for Minecraft 26.2.
  2. Download Fabric API and 1MB-Locator-HUD-1.55.0.jar.
  3. Put both JAR files in the client instance's mods/ folder.
  4. Optionally add Mod Menu for the in-game configuration screen.
  5. Launch Minecraft with the Fabric profile.

Verifying release downloads

Starting with Snapshot Public Beta 5, GitHub publishes the runtime JAR together with its .sha256 file and GitHub/Sigstore build provenance. The release notes contain commands specialized for that version.

The checksum detects any byte change relative to the published digest:

# Linux
sha256sum --check 1MB-Locator-HUD-<version>.jar.sha256
# macOS
shasum -a 256 --check 1MB-Locator-HUD-<version>.jar.sha256

GitHub CLI can additionally verify that the exact JAR was attested by this repository's release workflow, from the expected release tag, on a GitHub-hosted runner:

gh attestation verify 1MB-Locator-HUD-<version>.jar \
--repo mrfdev/1MB-Locator-HUD \
--signer-workflow mrfdev/1MB-Locator-HUD/.github/workflows/release.yml \
--source-ref refs/tags/v<version> \
--deny-self-hosted-runners

Each release's specialized command also pins the source commit recorded by the attestation. An attestation proves artifact integrity and build provenance; it does not claim that the code is bug-free or replace source review and testing. See RELEASING.md for the guarded publishing process.

Usage

Press F7 in game to show or hide the entire HUD. Minecraft displays a short enabled/disabled confirmation, and the binding can be changed in the Controls screen under Locator HUD.

Press F8 to copy your current coordinates using the configured Copy format and Decimal precision. The binding is remappable under Locator HUD. This action only updates the local clipboard and shows a confirmation; it never opens chat, runs the copied command, or sends it to the server. If the connected server enables reduced debug information, copying is refused and the existing clipboard is left unchanged.

To configure the mod without Mod Menu, assign Open Locator HUD settings in Minecraft's Controls screen under Locator HUD. It intentionally defaults to unbound to avoid conflicting with existing controls. The assigned key opens the same complete configuration screen from gameplay or another screen.

With Mod Menu installed, open Mods, select 1MB Locator HUD, and use its configuration button. Changes preview immediately and save automatically after a brief pause; slider and panel drags save their final value on release, and Done flushes pending main-setting changes before returning to the previous screen. The Setup section can apply one of four built-in presets, save and restore exactly one preferred setup, or open Place panels. In that explicit editor, drag either outlined panel near a corner; hidden and empty panels receive labeled fallback handles. Reset positions restores only the default panel corners and offsets. The normal gameplay HUD never captures clicks. Reset requires confirmation before restoring all factory defaults and never deletes the separate Saved setup.

If either configuration file cannot be written, Minecraft shows a local toast instead of leaving the problem only in the log. Live HUD changes remain active, and the mod retries the newest main settings every five seconds until they are stored. A failed Save current setup keeps and retries the exact snapshot requested at that moment on its own five-second schedule, even if live settings are edited or flushed afterward. Recovery is reported once. Files protected because they use a newer schema or could not be backed up are never retried or overwritten automatically; the unavailable Saved setup action explains that the file must be handled outside Minecraft before restarting.

The top-level Accessibility switch defaults to OFF. Turning it on exposes 110%, 125%, and 150% panel sizes, adds fuller keyboard/narrator usage guidance, and gives explicit reasons when a dependent setting is unavailable. It does not force a color palette or background. Turning it off returns any panel above 100% to Normal (100%); sizes from 60% through 100% are preserved.

Optional 1MoreBlock CMI controls

The Details setting named CMI defaults to OFF. When enabled, Locator HUD considers the capability only for the exact original multiplayer entry 1moreblock.com (optionally with a port). Before any controls appear, the server must advertise the dedicated channel and return a fresh Ed25519-signed session bound to this connection, the current player UUID, a strictly increasing message sequence, live permissions, supported presets, movement type, and a short expiry. A hostname, resolved address, MOTD, brand, command tree, chat message, or channel name is never enough by itself.

The row identifies the signed WALK or FLY state and includes only the currently permitted , 2.5×, and values. Open Chat to click a preset; ordinary gameplay clicks are never captured. The bridge rechecks CMI and the player's permissions at action time, dispatches the movement-specific command as that player, and reports the Paper walk/fly value after the command has taken effect. The client never changes or guesses the value optimistically.

Missing CMI, a missing bridge permission, unsupported CMI, a bad signature, malformed, replayed, or rolled-back data, a channel unregister, a disconnect or transfer, an expired heartbeat, denial, or failed readback removes the capability. A newer signed permission snapshot is required before a denied or failed session can expose controls again. Connecting through any other saved address does not register the receiver at all. The rest of Locator HUD continues to work normally.

Server-restricted debug information

Some servers enable Minecraft's built-in reduced-debug state. Locator HUD reads the supported state already maintained on the local player and responds to changes while connected. While the restriction is active:

  • decimal and containing-block coordinate rows are hidden;
  • the Overworld–Nether coordinate lens is hidden;
  • F8 coordinate copying is refused without changing the existing clipboard; and
  • block, fluid, and entity target sampling stops, any lingered target values are cleared, and their rows are hidden.

World name, view direction, view angles, biome information, biome transitions, locally observed movement speed, and visual settings remain available. The restriction never rewrites the player's configured choices; those choices automatically take effect again when full debug information is available. Enforcement is automatic and has no client-side override. Locator HUD does not inspect packets or add custom networking to implement it.

Without Mod Menu, the HUD and all three key mappings still work normally; assign Open Locator HUD settings once to retain direct in-game configuration access. Configuration is stored in config/locator-hud.json; the optional Saved setup uses config/locator-hud-saved-setup.json. Close the client before editing either file manually.

Existing unversioned and schema-1 configurations are migrated automatically to schema 2. If the main configuration is malformed, the original is preserved as a dated .broken.json backup before safe defaults are written. A malformed Saved setup is backed up and left unavailable until a new setup is saved. If a required backup cannot be created—or either file belongs to a newer schema—the protected file is not overwritten; the main configuration uses defaults in memory, while a protected Saved setup remains unavailable.

Configuration reference

AreaSettingDefaultChoices or behavior
GlobalHUDONShows or hides the entire HUD.
GlobalAccessibilityOFFAdds 110%, 125%, and 150% size choices plus expanded keyboard/narrator guidance and disabled-control explanations. It never forces Colors or Background. Turning it off returns sizes above 100% to Normal (100%).
GlobalColorsOceanNone (all white), Duo-tone, Ocean, Amethyst, Emerald, Ember, Frost, Rose, or Gold; shared by both panels.
GlobalBiome-aware colorsOFFThe nameless checkbox beside Colors has the tooltip aibo magic. When checked, it uses only the current local biome and column height to select an existing underground, cold, warm, or temperate theme. A short delay and gradual blend prevent border flicker. Unchecking it immediately restores the saved Colors choice.
GlobalText shadowONShared by both panels.
GlobalPanel shadowONShared by both panels and available when at least one enabled panel uses a non-OFF background.
GlobalCopy formatPlainPlain produces X … Y … Z … / World; Vanilla TP produces /minecraft:teleport @s …; CMI tppos produces /cmi tppos -p:<playername> … <world>. All use Decimal precision. The command formats are copied templates only and require the relevant server command and permission.
SetupBuilt-in presetMinimal selected, not appliedMinimal, Explorer, Builder, or Privacy. Applying changes existing content, visibility, sizes, and backgrounds while retaining the manual Colors choice, biome-aware color override, panel positions and width limits, shadows, and Copy format. Every resulting setting remains editable. Privacy hides exact location rows in this HUD only; it does not mask F3 or other mods.
SetupSaved setupEmpty until savedSave current setup writes one separate local slot. Replacing it and restoring it require confirmation; restore replaces all current settings. A transient failure retains and retries the exact requested snapshot and reports both failure and recovery in game.
SetupPlace panelsDefault corners, zero offsetsOpens an explicit live editor for dragging the main and details panels. The nearest corner is selected automatically, offsets snap within 6 GUI pixels and are limited to ±64, and Reset positions changes only placement. Normal gameplay remains non-interactive.
SetupResetRequires confirmation before restoring factory defaults. It does not modify the Saved setup slot.
MainShow main panelONIndependently shows or hides the main panel.
MainMain positionTop / LeftTop / Left, Top / Right, Bottom / Left, or Bottom / Right. Choosing a corner here clears the main panel's fine offset; Place panels can add a small offset.
MainCoordinate displayXYZ onlyXYZ only, block XYZ only, XYZ plus block, or none. Coordinate rows are temporarily hidden when the server enables reduced debug information.
MainDecimal precision1 decimalNone rounds XYZ to whole numbers; 1 or 2 decimal places are also available. This control is available when coordinate display includes XYZ or the coordinate lens is on.
MainOW / Nether lensOFFIn the vanilla Overworld, shows approximate corresponding Nether X/Z coordinates; in the vanilla Nether, shows approximate corresponding Overworld X/Z coordinates. Uses Decimal precision, does not locate portals or guarantee safety, and is hidden under server-provided reduced debug.
MainWorld nameON (behind)ON (in front), ON (behind), or OFF.
MainView directionONON shows the existing four-way cardinal name, ON (with details) adds eight-way directions and a compact signed-axis hint such as Northeast [+X/-Z], and OFF hides it.
MainView anglesOFFShows compact yaw and pitch values; when view direction is also enabled, they appear beside it.
MainAngle decimalsOFFWhole degrees when OFF, or 1 or 2 decimal places; available when view angles are on.
MainMain sizeNormal (100%)Normally snaps to 60%, 70%, 80%, 90%, or 100%. Accessibility adds 110%, 125%, and 150%.
MainMin / max widthAuto / AutoEach bound can stay automatic or use 120, 160, 200, 240, 280, or 320 GUI pixels before Main size scaling. A crossing change moves the companion bound to the same value. Long values are shortened where needed, fixed labels retain a small intrinsic floor, and current screen space is always the final ceiling.
MainMain backgroundBalanced (72%)OFF, 7%, 24%, 55%, 72%, 88%, or 100%.
DetailsShow details panelONIndependently enables the details/target panel. It does not render until at least one details row is visible.
DetailsDetails positionTop / RightTop / Left, Top / Right, Bottom / Left, or Bottom / Right. Choosing a corner here clears the details panel's fine offset; Place panels can add a small offset. A zero-offset details panel automatically stacks when it shares the main panel's corner.
DetailsBiomeOFFShows the biome at the player's current position.
DetailsBiome changeOFFBriefly shows Previous → Current for three seconds after the biome beneath the player changes. It uses only the current client-known biome and does not scan or retain discovery history. When the normal Biome row is enabled, the notice temporarily replaces its value.
DetailsMovement speedOFFShows locally observed three-dimensional movement in blocks per second, including ascent and descent, smoothed over half a second. It does not read or change CMI speed.
DetailsCMIOFFShows signed, server-permitted CMI walk/fly multiplier presets only on an authenticated connection entered as 1moreblock.com. It remains absent on every other server and accepts preset clicks only while Chat is open.
DetailsTarget block, fluid, and entityAll OFFThree independent crosshair-target rows. Empty enabled rows show an em dash unless auto-hide is on. Target sampling and rows are disabled under server-provided reduced debug.
DetailsTarget namesAPI accurateAPI accurate shows the full stable namespaced identifier, such as minecraft:oak_log. Friendly uses Minecraft's localized player-facing name, such as Oak Log, with the identifier as a safe fallback.
DetailsAuto-hide empty valuesOFFHides empty block, fluid, and entity rows; does not hide an enabled biome row. Target linger may delay hiding briefly. If no rows remain visible, the entire details panel does not render.
DetailsTarget lingerOFFKeeps each last non-empty target value visible for 0.5 seconds after the crosshair moves away.
DetailsDetails sizeCompact (80%)Normally snaps to 60%, 70%, 80%, 90%, or 100%. Accessibility adds 110%, 125%, and 150%.
DetailsMin / max widthAuto / AutoUses the same automatic or 120–320 GUI-pixel base widths, crossing-bound repair, value shortening, intrinsic label floor, and final screen-space ceiling as the main panel.
DetailsDetails backgroundOFF (minimal)OFF, 7%, 24%, 55%, 72%, 88%, or 100%.

Localization

The complete English fallback is src/client/resources/assets/locatorhud/lang/en_us.json. Every configuration label, option choice, tooltip, confirmation, key-binding label, and local status message uses a translation key; environment-neutral option types store only those keys and never depend on Minecraft text components.

Community translations can be contributed as src/client/resources/assets/locatorhud/lang/<locale>.json, using Minecraft's lowercase locale filename such as de_de.json or nl_nl.json. Copy the English file, translate JSON values only, and keep every key plus formatting placeholders such as %s and %% unchanged. A clean build rejects any production translation key that is missing from the English fallback.

Screenshots

These screenshots were captured from the tested 1.22.0 Snapshot Public Beta 2. The gameplay HUD examples remain representative of current layouts. The configuration-screen image records the Beta 2 interface and therefore predates the responsive grouped layout, Setup controls, copy formats, target-name options, panel width limits, and biome-aware color checkbox documented above.

Main and biome panelsDecimal and block coordinates
Locator HUD showing rounded XYZ coordinates, view angles, and a separate Plains biome panel in the top-left corner.Locator HUD showing decimal XYZ, containing-block coordinates, yaw, and pitch in the top-left corner.

Configuration screen with live HUD preview

Minecraft gameplay with the 1MB Locator HUD configuration screen open and both HUD panels visible.

Commands and networking

The ordinary HUD registers or executes no commands, performs no telemetry or remote calls, and requires no server-side setup. F8 can place command-shaped text on the local clipboard only after an explicit key press and only when reduced debug permits coordinates; it never sends or executes that text. The namespaced Vanilla TP format requires a server that exposes namespaced vanilla commands and grants teleport permission. The CMI copy format follows the documented tppos order and permission model; its client-known dimension path may need editing when the server uses a different CMI world name.

The single networking exception is the optional locatorhud:cmi_speed plugin-message protocol described above. Its receiver is installed per connection only after the exact original 1MoreBlock entry passes the local prefilter. Every capability and result must then verify against the client-pinned public key. The separate Paper bridge is not bundled with the Fabric JAR, and proprietary CMI/CMILib JARs and the private signing key are never repository or release inputs.

Building from source

The Gradle wrapper is included. With JDK 25 available, run:

./gradlew clean build

On Windows, use gradlew.bat clean build instead.

The verified runtime JAR, source JAR, and runtime checksum are written to:

build/libs/1MB-Locator-HUD-1.55.0.jar
build/libs/1MB-Locator-HUD-1.55.0-sources.jar
build/libs/1MB-Locator-HUD-1.55.0.jar.sha256

The clean build runs the unit-test suite, treats Java source warnings as errors, rejects server APIs, unaudited networking outside the narrowly allowlisted CMI client boundary, telemetry, custom command registration, and location logging, and verifies the runtime JAR's client-only metadata, dependency floors, icon, and translations. The Gradle distribution and resolved build dependencies are checksum-verified.

Build the separately deployed Paper bridge with:

./gradlew -p bridge clean build

Its JAR is written under bridge/build/libs/. It compiles only against Paper API; CMI 9.8.9.8 and CMILib 1.5.9.9 are separately licensed runtime inputs and are not downloaded, bundled, or published by this project. The nested build has its own strict dependency checksums and verifies that the runtime JAR contains only bridge classes and required metadata. See the bridge deployment guide.

To run only the full unit-test suite:

./gradlew test

Two separate production-client smoke tests launch the built mod with Fabric API, exercise focused configuration-screen regressions, and verify operation both without and with optional Mod Menu:

./gradlew runClientSmokeWithoutModMenu
./gradlew runClientSmokeWithModMenu

Performance and retention diagnostics are opt-in and are not part of the normal build or CI gates. To launch the production client without Mod Menu under a bounded Java 25 Flight Recorder profile, run:

./gradlew runClientProfile

Exercise the HUD in a representative world, including the desired worst-case settings, and close Minecraft normally to finish build/profiles/locatorhud-client.jfr. Shutdown can take a little longer because the diagnostic records paths from suspected retained objects to their garbage-collection roots. The task prints hot methods, sampled allocation sites, and memory-leak candidates when the client exits. Those candidates are useful for comparing repeated runs, but they are not proof of a leak by themselves.

For a repeatable configuration-screen stress run, use:

./gradlew runClientUiSoak
./gradlew runClientUiSoak -Plocatorhud.uiSoakIterations=1000

The first command performs 250 cycles by default; explicit values from 1 through 10,000 are accepted. Each cycle rebuilds accessibility-dependent controls, applies a rotating preset, opens and closes panel placement, closes the settings screen, and flushes persistence. Every closed settings and placement screen is tracked through a weak reference, and the task fails if any remain reachable after bounded full-GC attempts. The client runs under a 512 MiB heap ceiling; an out-of-memory failure exits immediately and writes build/profiles/locatorhud-ui-soak-oom.hprof for diagnosis. Its bounded JFR recording is written to build/profiles/locatorhud-ui-soak.jfr, and hot-method, allocation, and statistical retention views are printed on exit.

The regular GitHub Actions workflow runs the strict clean build and both production-client variants on Java 25. A separate release-only workflow must run from an existing version tag on main; it repeats those gates, revalidates the remote tag, verifies and attests the exact runtime JAR through GitHub and Sigstore, uploads the JAR plus checksum to a draft release, byte-compares both draft assets, and only then publishes that verified draft. Every third-party action is pinned to an immutable commit, audited local actions are confined to .github/actions, and the clean build rejects mutable or dynamic action references.

Project structure

  • src/main/java: environment-neutral formatting, layout, option models, panel-content plans, width and drag-placement policies, reduced-debug disclosure policy, immutable HUD snapshots, sampling schedules, validated settings, configuration storage, save debounce/retry policy, and the bounded signed CMI protocol/session validator.
  • src/client/java: Fabric client initialization, centralized key mappings and explicit user actions, tick-owned HUD sampling with read-only render snapshots, rendering and semantic hitbox tracking, crosshair targeting, the narrowly scoped CMI connection controller, the persistence-aware configuration mutation facade, and focused configuration/placement UI builders.
  • src/main/resources: Fabric metadata and the mod icon.
  • src/client/resources: client translations.
  • src/test/java: unit tests for formatting, display modes, exhaustive row-plan matrices, geometry and drag-placement boundaries, responsive screen policy, visibility rules, sampling cadence, theme classification and blending, presets and Saved setup, discrete slider behavior, save debounce/retry transitions, configuration migration and recovery, plus deterministic long-run state churn.
  • src/test/resources: versioned legacy-configuration fixtures used by migration tests.
  • src/gametest: an isolated Fabric client-test mod used for production startup, focused configuration-screen smoke tests, and the opt-in UI soak; it is not packaged in the release JAR.
  • bridge: a separate Paper 26.2 CMI speed bridge project and deployment guide; its artifact is never embedded in the Fabric JAR.
  • .github/workflows/ci.yml: the pinned Java 25 build, policy, packaging, checksum, and production-client checks.
  • .github/workflows/release.yml: the tag-bound build, smoke-test, GitHub/Sigstore attestation, and guarded GitHub release publisher.

Project links

License

Copyright © 2026 mrfloris. All rights reserved. See LICENSE.

1MB Locator HUD was created by mrfloris and Codex.

About

A compact configurable coordinates, direction, biome, and crosshair-target HUD for Fabric 26.2

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - mrfdev/1MB-Locator-HUD: A compact configurable coordinates, direction, biome, and crosshair-target HUD for Fabric 26.2 · GitHub
Skip to content

Repository files navigation

1MB Locator HUD

1MB Locator HUD is a client-only Fabric mod for Minecraft Java Edition 26.2. It replaces coordinate-heavy F3 use with compact, configurable main and details panels. The ordinary HUD works in singleplayer and on any compatible server without a server plugin. A separate, default-off CMI speed capability is available only when the exact 1moreblock.com entry proves itself through the signed 1MoreBlock bridge.

The mod was made for 1MoreBlock.com, a public Java Edition survival Minecraft server currently running Minecraft 26.2. All location, direction, biome, target, visual, copying, and observed-speed features remain server-independent. On every non-1MoreBlock server, the optional CMI receiver is never installed and its controls remain absent and inert.

Locator HUD icon

Release status

The feature, configuration, build, installation, and download references below describe the tested 1.55.0 Snapshot Public Beta 5. It remains a prerelease and should receive broader player testing before it is treated as stable. Please report beta feedback and problems through the issue tracker.

Features

  • Rounded whole-number XYZ, one- or two-decimal XYZ, containing-block XYZ, both coordinate rows, or neither.
  • Optional Overworld–Nether coordinate lens that shows the approximate mathematical X/Z counterpart without claiming that a portal exists or a destination is safe.
  • Optional friendly world/dimension name before or after the first coordinate row. When coordinates are hidden, the world name uses its own row.
  • Three-state view direction: the default four-way cardinal name, an opt-in eight-way name with a compact signed-axis hint, or off. Compact yaw/pitch angles remain independently toggleable in whole, one-decimal, or two-decimal degrees.
  • Optional biome, three-second biome-transition, smoothed three-dimensional movement-speed, and crosshair-target block, fluid, and entity rows with Friendly or API-accurate names.
  • Optional, default-off CMI walk/fly multiplier controls for , 2.5×, and on authenticated 1MoreBlock sessions. The row shows only server-permitted presets, accepts clicks only while Chat is open, and updates only from signed authoritative results.
  • Optional auto-hide keeps empty target rows compact, while 0.5-second target linger prevents flicker over block edges.
  • Independently visible and positioned main and details panels. A live editor can drag either panel near any corner with small, recoverable X/Y offsets; an unmodified details panel stacks vertically when both panels share a corner.
  • Independent five-stop size sliders at 60%, 70%, 80%, 90%, and 100% for each panel. A default-off Accessibility switch adds 110%, 125%, and 150% choices while retaining screen-edge clamping.
  • Independent minimum- and maximum-width controls for each panel, defaulting to automatic content sizing with optional 120–320 GUI-pixel base widths and final screen-edge clamping.
  • Independent seven-stop background sliders at OFF, 7%, 24%, 55%, 72%, 88%, and 100%. OFF uses a compact backgroundless layout.
  • Shared text and panel shadows plus nine color schemes: None (all white), Duo-tone, Ocean, Amethyst, Emerald, Ember, Frost, Rose, and Gold.
  • Optional default-off biome-aware colors, enabled by the nameless aibo magic checkbox beside Colors, smoothly switch among existing themes for underground, cold, warm, and temperate local environments without replacing the saved manual theme.
  • Explicit coordinate copying in Plain, namespaced Vanilla TP, or CMI tppos format. The remappable F8 action writes locally to the clipboard and never runs or sends the copied text.
  • Automatically respects Minecraft's server-provided reduced-debug state: coordinate rows, the coordinate lens, coordinate copying, and target sampling/display are unavailable while the server restricts them. Direction, biome, and locally observed speed remain available.
  • Four built-in, fully editable Minimal, Explorer, Builder, and Privacy presets, plus exactly one separate local Saved setup slot for preserving a preferred configuration.
  • Remappable global visibility (F7 by default), coordinate-copy (F8 by default), and configuration-screen (unbound by default) key mappings, plus optional Mod Menu integration with responsive scrolling, wide two-column and narrow single-column layouts, near-white setting names, color-coded state labels, and one-second hover tooltips. Accessibility mode adds expanded keyboard/narrator guidance and explains why dependent controls are unavailable.
  • Translation-backed configuration labels, option values, tooltips, confirmations, and key-binding text, with a complete English fallback and support for community locale files.
  • Automatically saved, backward-compatible client configuration in config/locator-hud.json, with brief client-thread debouncing, visible failure/recovery notices, and bounded automatic retries that retain unsaved values in memory.

Requirements

Installing Snapshot Public Beta 5

  1. Install Fabric Loader for Minecraft 26.2.
  2. Download Fabric API and 1MB-Locator-HUD-1.55.0.jar.
  3. Put both JAR files in the client instance's mods/ folder.
  4. Optionally add Mod Menu for the in-game configuration screen.
  5. Launch Minecraft with the Fabric profile.

Verifying release downloads

Starting with Snapshot Public Beta 5, GitHub publishes the runtime JAR together with its .sha256 file and GitHub/Sigstore build provenance. The release notes contain commands specialized for that version.

The checksum detects any byte change relative to the published digest:

# Linux
sha256sum --check 1MB-Locator-HUD-<version>.jar.sha256
# macOS
shasum -a 256 --check 1MB-Locator-HUD-<version>.jar.sha256

GitHub CLI can additionally verify that the exact JAR was attested by this repository's release workflow, from the expected release tag, on a GitHub-hosted runner:

gh attestation verify 1MB-Locator-HUD-<version>.jar \
--repo mrfdev/1MB-Locator-HUD \
--signer-workflow mrfdev/1MB-Locator-HUD/.github/workflows/release.yml \
--source-ref refs/tags/v<version> \
--deny-self-hosted-runners

Each release's specialized command also pins the source commit recorded by the attestation. An attestation proves artifact integrity and build provenance; it does not claim that the code is bug-free or replace source review and testing. See RELEASING.md for the guarded publishing process.

Usage

Press F7 in game to show or hide the entire HUD. Minecraft displays a short enabled/disabled confirmation, and the binding can be changed in the Controls screen under Locator HUD.

Press F8 to copy your current coordinates using the configured Copy format and Decimal precision. The binding is remappable under Locator HUD. This action only updates the local clipboard and shows a confirmation; it never opens chat, runs the copied command, or sends it to the server. If the connected server enables reduced debug information, copying is refused and the existing clipboard is left unchanged.

To configure the mod without Mod Menu, assign Open Locator HUD settings in Minecraft's Controls screen under Locator HUD. It intentionally defaults to unbound to avoid conflicting with existing controls. The assigned key opens the same complete configuration screen from gameplay or another screen.

With Mod Menu installed, open Mods, select 1MB Locator HUD, and use its configuration button. Changes preview immediately and save automatically after a brief pause; slider and panel drags save their final value on release, and Done flushes pending main-setting changes before returning to the previous screen. The Setup section can apply one of four built-in presets, save and restore exactly one preferred setup, or open Place panels. In that explicit editor, drag either outlined panel near a corner; hidden and empty panels receive labeled fallback handles. Reset positions restores only the default panel corners and offsets. The normal gameplay HUD never captures clicks. Reset requires confirmation before restoring all factory defaults and never deletes the separate Saved setup.

If either configuration file cannot be written, Minecraft shows a local toast instead of leaving the problem only in the log. Live HUD changes remain active, and the mod retries the newest main settings every five seconds until they are stored. A failed Save current setup keeps and retries the exact snapshot requested at that moment on its own five-second schedule, even if live settings are edited or flushed afterward. Recovery is reported once. Files protected because they use a newer schema or could not be backed up are never retried or overwritten automatically; the unavailable Saved setup action explains that the file must be handled outside Minecraft before restarting.

The top-level Accessibility switch defaults to OFF. Turning it on exposes 110%, 125%, and 150% panel sizes, adds fuller keyboard/narrator usage guidance, and gives explicit reasons when a dependent setting is unavailable. It does not force a color palette or background. Turning it off returns any panel above 100% to Normal (100%); sizes from 60% through 100% are preserved.

Optional 1MoreBlock CMI controls

The Details setting named CMI defaults to OFF. When enabled, Locator HUD considers the capability only for the exact original multiplayer entry 1moreblock.com (optionally with a port). Before any controls appear, the server must advertise the dedicated channel and return a fresh Ed25519-signed session bound to this connection, the current player UUID, a strictly increasing message sequence, live permissions, supported presets, movement type, and a short expiry. A hostname, resolved address, MOTD, brand, command tree, chat message, or channel name is never enough by itself.

The row identifies the signed WALK or FLY state and includes only the currently permitted , 2.5×, and values. Open Chat to click a preset; ordinary gameplay clicks are never captured. The bridge rechecks CMI and the player's permissions at action time, dispatches the movement-specific command as that player, and reports the Paper walk/fly value after the command has taken effect. The client never changes or guesses the value optimistically.

Missing CMI, a missing bridge permission, unsupported CMI, a bad signature, malformed, replayed, or rolled-back data, a channel unregister, a disconnect or transfer, an expired heartbeat, denial, or failed readback removes the capability. A newer signed permission snapshot is required before a denied or failed session can expose controls again. Connecting through any other saved address does not register the receiver at all. The rest of Locator HUD continues to work normally.

Server-restricted debug information

Some servers enable Minecraft's built-in reduced-debug state. Locator HUD reads the supported state already maintained on the local player and responds to changes while connected. While the restriction is active:

  • decimal and containing-block coordinate rows are hidden;
  • the Overworld–Nether coordinate lens is hidden;
  • F8 coordinate copying is refused without changing the existing clipboard; and
  • block, fluid, and entity target sampling stops, any lingered target values are cleared, and their rows are hidden.

World name, view direction, view angles, biome information, biome transitions, locally observed movement speed, and visual settings remain available. The restriction never rewrites the player's configured choices; those choices automatically take effect again when full debug information is available. Enforcement is automatic and has no client-side override. Locator HUD does not inspect packets or add custom networking to implement it.

Without Mod Menu, the HUD and all three key mappings still work normally; assign Open Locator HUD settings once to retain direct in-game configuration access. Configuration is stored in config/locator-hud.json; the optional Saved setup uses config/locator-hud-saved-setup.json. Close the client before editing either file manually.

Existing unversioned and schema-1 configurations are migrated automatically to schema 2. If the main configuration is malformed, the original is preserved as a dated .broken.json backup before safe defaults are written. A malformed Saved setup is backed up and left unavailable until a new setup is saved. If a required backup cannot be created—or either file belongs to a newer schema—the protected file is not overwritten; the main configuration uses defaults in memory, while a protected Saved setup remains unavailable.

Configuration reference

AreaSettingDefaultChoices or behavior
GlobalHUDONShows or hides the entire HUD.
GlobalAccessibilityOFFAdds 110%, 125%, and 150% size choices plus expanded keyboard/narrator guidance and disabled-control explanations. It never forces Colors or Background. Turning it off returns sizes above 100% to Normal (100%).
GlobalColorsOceanNone (all white), Duo-tone, Ocean, Amethyst, Emerald, Ember, Frost, Rose, or Gold; shared by both panels.
GlobalBiome-aware colorsOFFThe nameless checkbox beside Colors has the tooltip aibo magic. When checked, it uses only the current local biome and column height to select an existing underground, cold, warm, or temperate theme. A short delay and gradual blend prevent border flicker. Unchecking it immediately restores the saved Colors choice.
GlobalText shadowONShared by both panels.
GlobalPanel shadowONShared by both panels and available when at least one enabled panel uses a non-OFF background.
GlobalCopy formatPlainPlain produces X … Y … Z … / World; Vanilla TP produces /minecraft:teleport @s …; CMI tppos produces /cmi tppos -p:<playername> … <world>. All use Decimal precision. The command formats are copied templates only and require the relevant server command and permission.
SetupBuilt-in presetMinimal selected, not appliedMinimal, Explorer, Builder, or Privacy. Applying changes existing content, visibility, sizes, and backgrounds while retaining the manual Colors choice, biome-aware color override, panel positions and width limits, shadows, and Copy format. Every resulting setting remains editable. Privacy hides exact location rows in this HUD only; it does not mask F3 or other mods.
SetupSaved setupEmpty until savedSave current setup writes one separate local slot. Replacing it and restoring it require confirmation; restore replaces all current settings. A transient failure retains and retries the exact requested snapshot and reports both failure and recovery in game.
SetupPlace panelsDefault corners, zero offsetsOpens an explicit live editor for dragging the main and details panels. The nearest corner is selected automatically, offsets snap within 6 GUI pixels and are limited to ±64, and Reset positions changes only placement. Normal gameplay remains non-interactive.
SetupResetRequires confirmation before restoring factory defaults. It does not modify the Saved setup slot.
MainShow main panelONIndependently shows or hides the main panel.
MainMain positionTop / LeftTop / Left, Top / Right, Bottom / Left, or Bottom / Right. Choosing a corner here clears the main panel's fine offset; Place panels can add a small offset.
MainCoordinate displayXYZ onlyXYZ only, block XYZ only, XYZ plus block, or none. Coordinate rows are temporarily hidden when the server enables reduced debug information.
MainDecimal precision1 decimalNone rounds XYZ to whole numbers; 1 or 2 decimal places are also available. This control is available when coordinate display includes XYZ or the coordinate lens is on.
MainOW / Nether lensOFFIn the vanilla Overworld, shows approximate corresponding Nether X/Z coordinates; in the vanilla Nether, shows approximate corresponding Overworld X/Z coordinates. Uses Decimal precision, does not locate portals or guarantee safety, and is hidden under server-provided reduced debug.
MainWorld nameON (behind)ON (in front), ON (behind), or OFF.
MainView directionONON shows the existing four-way cardinal name, ON (with details) adds eight-way directions and a compact signed-axis hint such as Northeast [+X/-Z], and OFF hides it.
MainView anglesOFFShows compact yaw and pitch values; when view direction is also enabled, they appear beside it.
MainAngle decimalsOFFWhole degrees when OFF, or 1 or 2 decimal places; available when view angles are on.
MainMain sizeNormal (100%)Normally snaps to 60%, 70%, 80%, 90%, or 100%. Accessibility adds 110%, 125%, and 150%.
MainMin / max widthAuto / AutoEach bound can stay automatic or use 120, 160, 200, 240, 280, or 320 GUI pixels before Main size scaling. A crossing change moves the companion bound to the same value. Long values are shortened where needed, fixed labels retain a small intrinsic floor, and current screen space is always the final ceiling.
MainMain backgroundBalanced (72%)OFF, 7%, 24%, 55%, 72%, 88%, or 100%.
DetailsShow details panelONIndependently enables the details/target panel. It does not render until at least one details row is visible.
DetailsDetails positionTop / RightTop / Left, Top / Right, Bottom / Left, or Bottom / Right. Choosing a corner here clears the details panel's fine offset; Place panels can add a small offset. A zero-offset details panel automatically stacks when it shares the main panel's corner.
DetailsBiomeOFFShows the biome at the player's current position.
DetailsBiome changeOFFBriefly shows Previous → Current for three seconds after the biome beneath the player changes. It uses only the current client-known biome and does not scan or retain discovery history. When the normal Biome row is enabled, the notice temporarily replaces its value.
DetailsMovement speedOFFShows locally observed three-dimensional movement in blocks per second, including ascent and descent, smoothed over half a second. It does not read or change CMI speed.
DetailsCMIOFFShows signed, server-permitted CMI walk/fly multiplier presets only on an authenticated connection entered as 1moreblock.com. It remains absent on every other server and accepts preset clicks only while Chat is open.
DetailsTarget block, fluid, and entityAll OFFThree independent crosshair-target rows. Empty enabled rows show an em dash unless auto-hide is on. Target sampling and rows are disabled under server-provided reduced debug.
DetailsTarget namesAPI accurateAPI accurate shows the full stable namespaced identifier, such as minecraft:oak_log. Friendly uses Minecraft's localized player-facing name, such as Oak Log, with the identifier as a safe fallback.
DetailsAuto-hide empty valuesOFFHides empty block, fluid, and entity rows; does not hide an enabled biome row. Target linger may delay hiding briefly. If no rows remain visible, the entire details panel does not render.
DetailsTarget lingerOFFKeeps each last non-empty target value visible for 0.5 seconds after the crosshair moves away.
DetailsDetails sizeCompact (80%)Normally snaps to 60%, 70%, 80%, 90%, or 100%. Accessibility adds 110%, 125%, and 150%.
DetailsMin / max widthAuto / AutoUses the same automatic or 120–320 GUI-pixel base widths, crossing-bound repair, value shortening, intrinsic label floor, and final screen-space ceiling as the main panel.
DetailsDetails backgroundOFF (minimal)OFF, 7%, 24%, 55%, 72%, 88%, or 100%.

Localization

The complete English fallback is src/client/resources/assets/locatorhud/lang/en_us.json. Every configuration label, option choice, tooltip, confirmation, key-binding label, and local status message uses a translation key; environment-neutral option types store only those keys and never depend on Minecraft text components.

Community translations can be contributed as src/client/resources/assets/locatorhud/lang/<locale>.json, using Minecraft's lowercase locale filename such as de_de.json or nl_nl.json. Copy the English file, translate JSON values only, and keep every key plus formatting placeholders such as %s and %% unchanged. A clean build rejects any production translation key that is missing from the English fallback.

Screenshots

These screenshots were captured from the tested 1.22.0 Snapshot Public Beta 2. The gameplay HUD examples remain representative of current layouts. The configuration-screen image records the Beta 2 interface and therefore predates the responsive grouped layout, Setup controls, copy formats, target-name options, panel width limits, and biome-aware color checkbox documented above.

Main and biome panelsDecimal and block coordinates
Locator HUD showing rounded XYZ coordinates, view angles, and a separate Plains biome panel in the top-left corner.Locator HUD showing decimal XYZ, containing-block coordinates, yaw, and pitch in the top-left corner.

Configuration screen with live HUD preview

Minecraft gameplay with the 1MB Locator HUD configuration screen open and both HUD panels visible.

Commands and networking

The ordinary HUD registers or executes no commands, performs no telemetry or remote calls, and requires no server-side setup. F8 can place command-shaped text on the local clipboard only after an explicit key press and only when reduced debug permits coordinates; it never sends or executes that text. The namespaced Vanilla TP format requires a server that exposes namespaced vanilla commands and grants teleport permission. The CMI copy format follows the documented tppos order and permission model; its client-known dimension path may need editing when the server uses a different CMI world name.

The single networking exception is the optional locatorhud:cmi_speed plugin-message protocol described above. Its receiver is installed per connection only after the exact original 1MoreBlock entry passes the local prefilter. Every capability and result must then verify against the client-pinned public key. The separate Paper bridge is not bundled with the Fabric JAR, and proprietary CMI/CMILib JARs and the private signing key are never repository or release inputs.

Building from source

The Gradle wrapper is included. With JDK 25 available, run:

./gradlew clean build

On Windows, use gradlew.bat clean build instead.

The verified runtime JAR, source JAR, and runtime checksum are written to:

build/libs/1MB-Locator-HUD-1.55.0.jar
build/libs/1MB-Locator-HUD-1.55.0-sources.jar
build/libs/1MB-Locator-HUD-1.55.0.jar.sha256

The clean build runs the unit-test suite, treats Java source warnings as errors, rejects server APIs, unaudited networking outside the narrowly allowlisted CMI client boundary, telemetry, custom command registration, and location logging, and verifies the runtime JAR's client-only metadata, dependency floors, icon, and translations. The Gradle distribution and resolved build dependencies are checksum-verified.

Build the separately deployed Paper bridge with:

./gradlew -p bridge clean build

Its JAR is written under bridge/build/libs/. It compiles only against Paper API; CMI 9.8.9.8 and CMILib 1.5.9.9 are separately licensed runtime inputs and are not downloaded, bundled, or published by this project. The nested build has its own strict dependency checksums and verifies that the runtime JAR contains only bridge classes and required metadata. See the bridge deployment guide.

To run only the full unit-test suite:

./gradlew test

Two separate production-client smoke tests launch the built mod with Fabric API, exercise focused configuration-screen regressions, and verify operation both without and with optional Mod Menu:

./gradlew runClientSmokeWithoutModMenu
./gradlew runClientSmokeWithModMenu

Performance and retention diagnostics are opt-in and are not part of the normal build or CI gates. To launch the production client without Mod Menu under a bounded Java 25 Flight Recorder profile, run:

./gradlew runClientProfile

Exercise the HUD in a representative world, including the desired worst-case settings, and close Minecraft normally to finish build/profiles/locatorhud-client.jfr. Shutdown can take a little longer because the diagnostic records paths from suspected retained objects to their garbage-collection roots. The task prints hot methods, sampled allocation sites, and memory-leak candidates when the client exits. Those candidates are useful for comparing repeated runs, but they are not proof of a leak by themselves.

For a repeatable configuration-screen stress run, use:

./gradlew runClientUiSoak
./gradlew runClientUiSoak -Plocatorhud.uiSoakIterations=1000

The first command performs 250 cycles by default; explicit values from 1 through 10,000 are accepted. Each cycle rebuilds accessibility-dependent controls, applies a rotating preset, opens and closes panel placement, closes the settings screen, and flushes persistence. Every closed settings and placement screen is tracked through a weak reference, and the task fails if any remain reachable after bounded full-GC attempts. The client runs under a 512 MiB heap ceiling; an out-of-memory failure exits immediately and writes build/profiles/locatorhud-ui-soak-oom.hprof for diagnosis. Its bounded JFR recording is written to build/profiles/locatorhud-ui-soak.jfr, and hot-method, allocation, and statistical retention views are printed on exit.

The regular GitHub Actions workflow runs the strict clean build and both production-client variants on Java 25. A separate release-only workflow must run from an existing version tag on main; it repeats those gates, revalidates the remote tag, verifies and attests the exact runtime JAR through GitHub and Sigstore, uploads the JAR plus checksum to a draft release, byte-compares both draft assets, and only then publishes that verified draft. Every third-party action is pinned to an immutable commit, audited local actions are confined to .github/actions, and the clean build rejects mutable or dynamic action references.

Project structure

  • src/main/java: environment-neutral formatting, layout, option models, panel-content plans, width and drag-placement policies, reduced-debug disclosure policy, immutable HUD snapshots, sampling schedules, validated settings, configuration storage, save debounce/retry policy, and the bounded signed CMI protocol/session validator.
  • src/client/java: Fabric client initialization, centralized key mappings and explicit user actions, tick-owned HUD sampling with read-only render snapshots, rendering and semantic hitbox tracking, crosshair targeting, the narrowly scoped CMI connection controller, the persistence-aware configuration mutation facade, and focused configuration/placement UI builders.
  • src/main/resources: Fabric metadata and the mod icon.
  • src/client/resources: client translations.
  • src/test/java: unit tests for formatting, display modes, exhaustive row-plan matrices, geometry and drag-placement boundaries, responsive screen policy, visibility rules, sampling cadence, theme classification and blending, presets and Saved setup, discrete slider behavior, save debounce/retry transitions, configuration migration and recovery, plus deterministic long-run state churn.
  • src/test/resources: versioned legacy-configuration fixtures used by migration tests.
  • src/gametest: an isolated Fabric client-test mod used for production startup, focused configuration-screen smoke tests, and the opt-in UI soak; it is not packaged in the release JAR.
  • bridge: a separate Paper 26.2 CMI speed bridge project and deployment guide; its artifact is never embedded in the Fabric JAR.
  • .github/workflows/ci.yml: the pinned Java 25 build, policy, packaging, checksum, and production-client checks.
  • .github/workflows/release.yml: the tag-bound build, smoke-test, GitHub/Sigstore attestation, and guarded GitHub release publisher.

Project links

License

Copyright © 2026 mrfloris. All rights reserved. See LICENSE.

1MB Locator HUD was created by mrfloris and Codex.

About

A compact configurable coordinates, direction, biome, and crosshair-target HUD for Fabric 26.2

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - mrfdev/1MB-Locator-HUD: A compact configurable coordinates, direction, biome, and crosshair-target HUD for Fabric 26.2 · GitHub
Skip to content

Repository files navigation

1MB Locator HUD

1MB Locator HUD is a client-only Fabric mod for Minecraft Java Edition 26.2. It replaces coordinate-heavy F3 use with compact, configurable main and details panels. The ordinary HUD works in singleplayer and on any compatible server without a server plugin. A separate, default-off CMI speed capability is available only when the exact 1moreblock.com entry proves itself through the signed 1MoreBlock bridge.

The mod was made for 1MoreBlock.com, a public Java Edition survival Minecraft server currently running Minecraft 26.2. All location, direction, biome, target, visual, copying, and observed-speed features remain server-independent. On every non-1MoreBlock server, the optional CMI receiver is never installed and its controls remain absent and inert.

Locator HUD icon

Release status

The feature, configuration, build, installation, and download references below describe the tested 1.55.0 Snapshot Public Beta 5. It remains a prerelease and should receive broader player testing before it is treated as stable. Please report beta feedback and problems through the issue tracker.

Features

  • Rounded whole-number XYZ, one- or two-decimal XYZ, containing-block XYZ, both coordinate rows, or neither.
  • Optional Overworld–Nether coordinate lens that shows the approximate mathematical X/Z counterpart without claiming that a portal exists or a destination is safe.
  • Optional friendly world/dimension name before or after the first coordinate row. When coordinates are hidden, the world name uses its own row.
  • Three-state view direction: the default four-way cardinal name, an opt-in eight-way name with a compact signed-axis hint, or off. Compact yaw/pitch angles remain independently toggleable in whole, one-decimal, or two-decimal degrees.
  • Optional biome, three-second biome-transition, smoothed three-dimensional movement-speed, and crosshair-target block, fluid, and entity rows with Friendly or API-accurate names.
  • Optional, default-off CMI walk/fly multiplier controls for , 2.5×, and on authenticated 1MoreBlock sessions. The row shows only server-permitted presets, accepts clicks only while Chat is open, and updates only from signed authoritative results.
  • Optional auto-hide keeps empty target rows compact, while 0.5-second target linger prevents flicker over block edges.
  • Independently visible and positioned main and details panels. A live editor can drag either panel near any corner with small, recoverable X/Y offsets; an unmodified details panel stacks vertically when both panels share a corner.
  • Independent five-stop size sliders at 60%, 70%, 80%, 90%, and 100% for each panel. A default-off Accessibility switch adds 110%, 125%, and 150% choices while retaining screen-edge clamping.
  • Independent minimum- and maximum-width controls for each panel, defaulting to automatic content sizing with optional 120–320 GUI-pixel base widths and final screen-edge clamping.
  • Independent seven-stop background sliders at OFF, 7%, 24%, 55%, 72%, 88%, and 100%. OFF uses a compact backgroundless layout.
  • Shared text and panel shadows plus nine color schemes: None (all white), Duo-tone, Ocean, Amethyst, Emerald, Ember, Frost, Rose, and Gold.
  • Optional default-off biome-aware colors, enabled by the nameless aibo magic checkbox beside Colors, smoothly switch among existing themes for underground, cold, warm, and temperate local environments without replacing the saved manual theme.
  • Explicit coordinate copying in Plain, namespaced Vanilla TP, or CMI tppos format. The remappable F8 action writes locally to the clipboard and never runs or sends the copied text.
  • Automatically respects Minecraft's server-provided reduced-debug state: coordinate rows, the coordinate lens, coordinate copying, and target sampling/display are unavailable while the server restricts them. Direction, biome, and locally observed speed remain available.
  • Four built-in, fully editable Minimal, Explorer, Builder, and Privacy presets, plus exactly one separate local Saved setup slot for preserving a preferred configuration.
  • Remappable global visibility (F7 by default), coordinate-copy (F8 by default), and configuration-screen (unbound by default) key mappings, plus optional Mod Menu integration with responsive scrolling, wide two-column and narrow single-column layouts, near-white setting names, color-coded state labels, and one-second hover tooltips. Accessibility mode adds expanded keyboard/narrator guidance and explains why dependent controls are unavailable.
  • Translation-backed configuration labels, option values, tooltips, confirmations, and key-binding text, with a complete English fallback and support for community locale files.
  • Automatically saved, backward-compatible client configuration in config/locator-hud.json, with brief client-thread debouncing, visible failure/recovery notices, and bounded automatic retries that retain unsaved values in memory.

Requirements

Installing Snapshot Public Beta 5

  1. Install Fabric Loader for Minecraft 26.2.
  2. Download Fabric API and 1MB-Locator-HUD-1.55.0.jar.
  3. Put both JAR files in the client instance's mods/ folder.
  4. Optionally add Mod Menu for the in-game configuration screen.
  5. Launch Minecraft with the Fabric profile.

Verifying release downloads

Starting with Snapshot Public Beta 5, GitHub publishes the runtime JAR together with its .sha256 file and GitHub/Sigstore build provenance. The release notes contain commands specialized for that version.

The checksum detects any byte change relative to the published digest:

# Linux
sha256sum --check 1MB-Locator-HUD-<version>.jar.sha256
# macOS
shasum -a 256 --check 1MB-Locator-HUD-<version>.jar.sha256

GitHub CLI can additionally verify that the exact JAR was attested by this repository's release workflow, from the expected release tag, on a GitHub-hosted runner:

gh attestation verify 1MB-Locator-HUD-<version>.jar \
--repo mrfdev/1MB-Locator-HUD \
--signer-workflow mrfdev/1MB-Locator-HUD/.github/workflows/release.yml \
--source-ref refs/tags/v<version> \
--deny-self-hosted-runners

Each release's specialized command also pins the source commit recorded by the attestation. An attestation proves artifact integrity and build provenance; it does not claim that the code is bug-free or replace source review and testing. See RELEASING.md for the guarded publishing process.

Usage

Press F7 in game to show or hide the entire HUD. Minecraft displays a short enabled/disabled confirmation, and the binding can be changed in the Controls screen under Locator HUD.

Press F8 to copy your current coordinates using the configured Copy format and Decimal precision. The binding is remappable under Locator HUD. This action only updates the local clipboard and shows a confirmation; it never opens chat, runs the copied command, or sends it to the server. If the connected server enables reduced debug information, copying is refused and the existing clipboard is left unchanged.

To configure the mod without Mod Menu, assign Open Locator HUD settings in Minecraft's Controls screen under Locator HUD. It intentionally defaults to unbound to avoid conflicting with existing controls. The assigned key opens the same complete configuration screen from gameplay or another screen.

With Mod Menu installed, open Mods, select 1MB Locator HUD, and use its configuration button. Changes preview immediately and save automatically after a brief pause; slider and panel drags save their final value on release, and Done flushes pending main-setting changes before returning to the previous screen. The Setup section can apply one of four built-in presets, save and restore exactly one preferred setup, or open Place panels. In that explicit editor, drag either outlined panel near a corner; hidden and empty panels receive labeled fallback handles. Reset positions restores only the default panel corners and offsets. The normal gameplay HUD never captures clicks. Reset requires confirmation before restoring all factory defaults and never deletes the separate Saved setup.

If either configuration file cannot be written, Minecraft shows a local toast instead of leaving the problem only in the log. Live HUD changes remain active, and the mod retries the newest main settings every five seconds until they are stored. A failed Save current setup keeps and retries the exact snapshot requested at that moment on its own five-second schedule, even if live settings are edited or flushed afterward. Recovery is reported once. Files protected because they use a newer schema or could not be backed up are never retried or overwritten automatically; the unavailable Saved setup action explains that the file must be handled outside Minecraft before restarting.

The top-level Accessibility switch defaults to OFF. Turning it on exposes 110%, 125%, and 150% panel sizes, adds fuller keyboard/narrator usage guidance, and gives explicit reasons when a dependent setting is unavailable. It does not force a color palette or background. Turning it off returns any panel above 100% to Normal (100%); sizes from 60% through 100% are preserved.

Optional 1MoreBlock CMI controls

The Details setting named CMI defaults to OFF. When enabled, Locator HUD considers the capability only for the exact original multiplayer entry 1moreblock.com (optionally with a port). Before any controls appear, the server must advertise the dedicated channel and return a fresh Ed25519-signed session bound to this connection, the current player UUID, a strictly increasing message sequence, live permissions, supported presets, movement type, and a short expiry. A hostname, resolved address, MOTD, brand, command tree, chat message, or channel name is never enough by itself.

The row identifies the signed WALK or FLY state and includes only the currently permitted , 2.5×, and values. Open Chat to click a preset; ordinary gameplay clicks are never captured. The bridge rechecks CMI and the player's permissions at action time, dispatches the movement-specific command as that player, and reports the Paper walk/fly value after the command has taken effect. The client never changes or guesses the value optimistically.

Missing CMI, a missing bridge permission, unsupported CMI, a bad signature, malformed, replayed, or rolled-back data, a channel unregister, a disconnect or transfer, an expired heartbeat, denial, or failed readback removes the capability. A newer signed permission snapshot is required before a denied or failed session can expose controls again. Connecting through any other saved address does not register the receiver at all. The rest of Locator HUD continues to work normally.

Server-restricted debug information

Some servers enable Minecraft's built-in reduced-debug state. Locator HUD reads the supported state already maintained on the local player and responds to changes while connected. While the restriction is active:

  • decimal and containing-block coordinate rows are hidden;
  • the Overworld–Nether coordinate lens is hidden;
  • F8 coordinate copying is refused without changing the existing clipboard; and
  • block, fluid, and entity target sampling stops, any lingered target values are cleared, and their rows are hidden.

World name, view direction, view angles, biome information, biome transitions, locally observed movement speed, and visual settings remain available. The restriction never rewrites the player's configured choices; those choices automatically take effect again when full debug information is available. Enforcement is automatic and has no client-side override. Locator HUD does not inspect packets or add custom networking to implement it.

Without Mod Menu, the HUD and all three key mappings still work normally; assign Open Locator HUD settings once to retain direct in-game configuration access. Configuration is stored in config/locator-hud.json; the optional Saved setup uses config/locator-hud-saved-setup.json. Close the client before editing either file manually.

Existing unversioned and schema-1 configurations are migrated automatically to schema 2. If the main configuration is malformed, the original is preserved as a dated .broken.json backup before safe defaults are written. A malformed Saved setup is backed up and left unavailable until a new setup is saved. If a required backup cannot be created—or either file belongs to a newer schema—the protected file is not overwritten; the main configuration uses defaults in memory, while a protected Saved setup remains unavailable.

Configuration reference

AreaSettingDefaultChoices or behavior
GlobalHUDONShows or hides the entire HUD.
GlobalAccessibilityOFFAdds 110%, 125%, and 150% size choices plus expanded keyboard/narrator guidance and disabled-control explanations. It never forces Colors or Background. Turning it off returns sizes above 100% to Normal (100%).
GlobalColorsOceanNone (all white), Duo-tone, Ocean, Amethyst, Emerald, Ember, Frost, Rose, or Gold; shared by both panels.
GlobalBiome-aware colorsOFFThe nameless checkbox beside Colors has the tooltip aibo magic. When checked, it uses only the current local biome and column height to select an existing underground, cold, warm, or temperate theme. A short delay and gradual blend prevent border flicker. Unchecking it immediately restores the saved Colors choice.
GlobalText shadowONShared by both panels.
GlobalPanel shadowONShared by both panels and available when at least one enabled panel uses a non-OFF background.
GlobalCopy formatPlainPlain produces X … Y … Z … / World; Vanilla TP produces /minecraft:teleport @s …; CMI tppos produces /cmi tppos -p:<playername> … <world>. All use Decimal precision. The command formats are copied templates only and require the relevant server command and permission.
SetupBuilt-in presetMinimal selected, not appliedMinimal, Explorer, Builder, or Privacy. Applying changes existing content, visibility, sizes, and backgrounds while retaining the manual Colors choice, biome-aware color override, panel positions and width limits, shadows, and Copy format. Every resulting setting remains editable. Privacy hides exact location rows in this HUD only; it does not mask F3 or other mods.
SetupSaved setupEmpty until savedSave current setup writes one separate local slot. Replacing it and restoring it require confirmation; restore replaces all current settings. A transient failure retains and retries the exact requested snapshot and reports both failure and recovery in game.
SetupPlace panelsDefault corners, zero offsetsOpens an explicit live editor for dragging the main and details panels. The nearest corner is selected automatically, offsets snap within 6 GUI pixels and are limited to ±64, and Reset positions changes only placement. Normal gameplay remains non-interactive.
SetupResetRequires confirmation before restoring factory defaults. It does not modify the Saved setup slot.
MainShow main panelONIndependently shows or hides the main panel.
MainMain positionTop / LeftTop / Left, Top / Right, Bottom / Left, or Bottom / Right. Choosing a corner here clears the main panel's fine offset; Place panels can add a small offset.
MainCoordinate displayXYZ onlyXYZ only, block XYZ only, XYZ plus block, or none. Coordinate rows are temporarily hidden when the server enables reduced debug information.
MainDecimal precision1 decimalNone rounds XYZ to whole numbers; 1 or 2 decimal places are also available. This control is available when coordinate display includes XYZ or the coordinate lens is on.
MainOW / Nether lensOFFIn the vanilla Overworld, shows approximate corresponding Nether X/Z coordinates; in the vanilla Nether, shows approximate corresponding Overworld X/Z coordinates. Uses Decimal precision, does not locate portals or guarantee safety, and is hidden under server-provided reduced debug.
MainWorld nameON (behind)ON (in front), ON (behind), or OFF.
MainView directionONON shows the existing four-way cardinal name, ON (with details) adds eight-way directions and a compact signed-axis hint such as Northeast [+X/-Z], and OFF hides it.
MainView anglesOFFShows compact yaw and pitch values; when view direction is also enabled, they appear beside it.
MainAngle decimalsOFFWhole degrees when OFF, or 1 or 2 decimal places; available when view angles are on.
MainMain sizeNormal (100%)Normally snaps to 60%, 70%, 80%, 90%, or 100%. Accessibility adds 110%, 125%, and 150%.
MainMin / max widthAuto / AutoEach bound can stay automatic or use 120, 160, 200, 240, 280, or 320 GUI pixels before Main size scaling. A crossing change moves the companion bound to the same value. Long values are shortened where needed, fixed labels retain a small intrinsic floor, and current screen space is always the final ceiling.
MainMain backgroundBalanced (72%)OFF, 7%, 24%, 55%, 72%, 88%, or 100%.
DetailsShow details panelONIndependently enables the details/target panel. It does not render until at least one details row is visible.
DetailsDetails positionTop / RightTop / Left, Top / Right, Bottom / Left, or Bottom / Right. Choosing a corner here clears the details panel's fine offset; Place panels can add a small offset. A zero-offset details panel automatically stacks when it shares the main panel's corner.
DetailsBiomeOFFShows the biome at the player's current position.
DetailsBiome changeOFFBriefly shows Previous → Current for three seconds after the biome beneath the player changes. It uses only the current client-known biome and does not scan or retain discovery history. When the normal Biome row is enabled, the notice temporarily replaces its value.
DetailsMovement speedOFFShows locally observed three-dimensional movement in blocks per second, including ascent and descent, smoothed over half a second. It does not read or change CMI speed.
DetailsCMIOFFShows signed, server-permitted CMI walk/fly multiplier presets only on an authenticated connection entered as 1moreblock.com. It remains absent on every other server and accepts preset clicks only while Chat is open.
DetailsTarget block, fluid, and entityAll OFFThree independent crosshair-target rows. Empty enabled rows show an em dash unless auto-hide is on. Target sampling and rows are disabled under server-provided reduced debug.
DetailsTarget namesAPI accurateAPI accurate shows the full stable namespaced identifier, such as minecraft:oak_log. Friendly uses Minecraft's localized player-facing name, such as Oak Log, with the identifier as a safe fallback.
DetailsAuto-hide empty valuesOFFHides empty block, fluid, and entity rows; does not hide an enabled biome row. Target linger may delay hiding briefly. If no rows remain visible, the entire details panel does not render.
DetailsTarget lingerOFFKeeps each last non-empty target value visible for 0.5 seconds after the crosshair moves away.
DetailsDetails sizeCompact (80%)Normally snaps to 60%, 70%, 80%, 90%, or 100%. Accessibility adds 110%, 125%, and 150%.
DetailsMin / max widthAuto / AutoUses the same automatic or 120–320 GUI-pixel base widths, crossing-bound repair, value shortening, intrinsic label floor, and final screen-space ceiling as the main panel.
DetailsDetails backgroundOFF (minimal)OFF, 7%, 24%, 55%, 72%, 88%, or 100%.

Localization

The complete English fallback is src/client/resources/assets/locatorhud/lang/en_us.json. Every configuration label, option choice, tooltip, confirmation, key-binding label, and local status message uses a translation key; environment-neutral option types store only those keys and never depend on Minecraft text components.

Community translations can be contributed as src/client/resources/assets/locatorhud/lang/<locale>.json, using Minecraft's lowercase locale filename such as de_de.json or nl_nl.json. Copy the English file, translate JSON values only, and keep every key plus formatting placeholders such as %s and %% unchanged. A clean build rejects any production translation key that is missing from the English fallback.

Screenshots

These screenshots were captured from the tested 1.22.0 Snapshot Public Beta 2. The gameplay HUD examples remain representative of current layouts. The configuration-screen image records the Beta 2 interface and therefore predates the responsive grouped layout, Setup controls, copy formats, target-name options, panel width limits, and biome-aware color checkbox documented above.

Main and biome panelsDecimal and block coordinates
Locator HUD showing rounded XYZ coordinates, view angles, and a separate Plains biome panel in the top-left corner.Locator HUD showing decimal XYZ, containing-block coordinates, yaw, and pitch in the top-left corner.

Configuration screen with live HUD preview

Minecraft gameplay with the 1MB Locator HUD configuration screen open and both HUD panels visible.

Commands and networking

The ordinary HUD registers or executes no commands, performs no telemetry or remote calls, and requires no server-side setup. F8 can place command-shaped text on the local clipboard only after an explicit key press and only when reduced debug permits coordinates; it never sends or executes that text. The namespaced Vanilla TP format requires a server that exposes namespaced vanilla commands and grants teleport permission. The CMI copy format follows the documented tppos order and permission model; its client-known dimension path may need editing when the server uses a different CMI world name.

The single networking exception is the optional locatorhud:cmi_speed plugin-message protocol described above. Its receiver is installed per connection only after the exact original 1MoreBlock entry passes the local prefilter. Every capability and result must then verify against the client-pinned public key. The separate Paper bridge is not bundled with the Fabric JAR, and proprietary CMI/CMILib JARs and the private signing key are never repository or release inputs.

Building from source

The Gradle wrapper is included. With JDK 25 available, run:

./gradlew clean build

On Windows, use gradlew.bat clean build instead.

The verified runtime JAR, source JAR, and runtime checksum are written to:

build/libs/1MB-Locator-HUD-1.55.0.jar
build/libs/1MB-Locator-HUD-1.55.0-sources.jar
build/libs/1MB-Locator-HUD-1.55.0.jar.sha256

The clean build runs the unit-test suite, treats Java source warnings as errors, rejects server APIs, unaudited networking outside the narrowly allowlisted CMI client boundary, telemetry, custom command registration, and location logging, and verifies the runtime JAR's client-only metadata, dependency floors, icon, and translations. The Gradle distribution and resolved build dependencies are checksum-verified.

Build the separately deployed Paper bridge with:

./gradlew -p bridge clean build

Its JAR is written under bridge/build/libs/. It compiles only against Paper API; CMI 9.8.9.8 and CMILib 1.5.9.9 are separately licensed runtime inputs and are not downloaded, bundled, or published by this project. The nested build has its own strict dependency checksums and verifies that the runtime JAR contains only bridge classes and required metadata. See the bridge deployment guide.

To run only the full unit-test suite:

./gradlew test

Two separate production-client smoke tests launch the built mod with Fabric API, exercise focused configuration-screen regressions, and verify operation both without and with optional Mod Menu:

./gradlew runClientSmokeWithoutModMenu
./gradlew runClientSmokeWithModMenu

Performance and retention diagnostics are opt-in and are not part of the normal build or CI gates. To launch the production client without Mod Menu under a bounded Java 25 Flight Recorder profile, run:

./gradlew runClientProfile

Exercise the HUD in a representative world, including the desired worst-case settings, and close Minecraft normally to finish build/profiles/locatorhud-client.jfr. Shutdown can take a little longer because the diagnostic records paths from suspected retained objects to their garbage-collection roots. The task prints hot methods, sampled allocation sites, and memory-leak candidates when the client exits. Those candidates are useful for comparing repeated runs, but they are not proof of a leak by themselves.

For a repeatable configuration-screen stress run, use:

./gradlew runClientUiSoak
./gradlew runClientUiSoak -Plocatorhud.uiSoakIterations=1000

The first command performs 250 cycles by default; explicit values from 1 through 10,000 are accepted. Each cycle rebuilds accessibility-dependent controls, applies a rotating preset, opens and closes panel placement, closes the settings screen, and flushes persistence. Every closed settings and placement screen is tracked through a weak reference, and the task fails if any remain reachable after bounded full-GC attempts. The client runs under a 512 MiB heap ceiling; an out-of-memory failure exits immediately and writes build/profiles/locatorhud-ui-soak-oom.hprof for diagnosis. Its bounded JFR recording is written to build/profiles/locatorhud-ui-soak.jfr, and hot-method, allocation, and statistical retention views are printed on exit.

The regular GitHub Actions workflow runs the strict clean build and both production-client variants on Java 25. A separate release-only workflow must run from an existing version tag on main; it repeats those gates, revalidates the remote tag, verifies and attests the exact runtime JAR through GitHub and Sigstore, uploads the JAR plus checksum to a draft release, byte-compares both draft assets, and only then publishes that verified draft. Every third-party action is pinned to an immutable commit, audited local actions are confined to .github/actions, and the clean build rejects mutable or dynamic action references.

Project structure

  • src/main/java: environment-neutral formatting, layout, option models, panel-content plans, width and drag-placement policies, reduced-debug disclosure policy, immutable HUD snapshots, sampling schedules, validated settings, configuration storage, save debounce/retry policy, and the bounded signed CMI protocol/session validator.
  • src/client/java: Fabric client initialization, centralized key mappings and explicit user actions, tick-owned HUD sampling with read-only render snapshots, rendering and semantic hitbox tracking, crosshair targeting, the narrowly scoped CMI connection controller, the persistence-aware configuration mutation facade, and focused configuration/placement UI builders.
  • src/main/resources: Fabric metadata and the mod icon.
  • src/client/resources: client translations.
  • src/test/java: unit tests for formatting, display modes, exhaustive row-plan matrices, geometry and drag-placement boundaries, responsive screen policy, visibility rules, sampling cadence, theme classification and blending, presets and Saved setup, discrete slider behavior, save debounce/retry transitions, configuration migration and recovery, plus deterministic long-run state churn.
  • src/test/resources: versioned legacy-configuration fixtures used by migration tests.
  • src/gametest: an isolated Fabric client-test mod used for production startup, focused configuration-screen smoke tests, and the opt-in UI soak; it is not packaged in the release JAR.
  • bridge: a separate Paper 26.2 CMI speed bridge project and deployment guide; its artifact is never embedded in the Fabric JAR.
  • .github/workflows/ci.yml: the pinned Java 25 build, policy, packaging, checksum, and production-client checks.
  • .github/workflows/release.yml: the tag-bound build, smoke-test, GitHub/Sigstore attestation, and guarded GitHub release publisher.

Project links

License

Copyright © 2026 mrfloris. All rights reserved. See LICENSE.

1MB Locator HUD was created by mrfloris and Codex.

About

A compact configurable coordinates, direction, biome, and crosshair-target HUD for Fabric 26.2

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - mrfdev/1MB-Locator-HUD: A compact configurable coordinates, direction, biome, and crosshair-target HUD for Fabric 26.2 · GitHub
Skip to content

Repository files navigation

1MB Locator HUD

1MB Locator HUD is a client-only Fabric mod for Minecraft Java Edition 26.2. It replaces coordinate-heavy F3 use with compact, configurable main and details panels. The ordinary HUD works in singleplayer and on any compatible server without a server plugin. A separate, default-off CMI speed capability is available only when the exact 1moreblock.com entry proves itself through the signed 1MoreBlock bridge.

The mod was made for 1MoreBlock.com, a public Java Edition survival Minecraft server currently running Minecraft 26.2. All location, direction, biome, target, visual, copying, and observed-speed features remain server-independent. On every non-1MoreBlock server, the optional CMI receiver is never installed and its controls remain absent and inert.

Locator HUD icon

Release status

The feature, configuration, build, installation, and download references below describe the tested 1.55.0 Snapshot Public Beta 5. It remains a prerelease and should receive broader player testing before it is treated as stable. Please report beta feedback and problems through the issue tracker.

Features

  • Rounded whole-number XYZ, one- or two-decimal XYZ, containing-block XYZ, both coordinate rows, or neither.
  • Optional Overworld–Nether coordinate lens that shows the approximate mathematical X/Z counterpart without claiming that a portal exists or a destination is safe.
  • Optional friendly world/dimension name before or after the first coordinate row. When coordinates are hidden, the world name uses its own row.
  • Three-state view direction: the default four-way cardinal name, an opt-in eight-way name with a compact signed-axis hint, or off. Compact yaw/pitch angles remain independently toggleable in whole, one-decimal, or two-decimal degrees.
  • Optional biome, three-second biome-transition, smoothed three-dimensional movement-speed, and crosshair-target block, fluid, and entity rows with Friendly or API-accurate names.
  • Optional, default-off CMI walk/fly multiplier controls for , 2.5×, and on authenticated 1MoreBlock sessions. The row shows only server-permitted presets, accepts clicks only while Chat is open, and updates only from signed authoritative results.
  • Optional auto-hide keeps empty target rows compact, while 0.5-second target linger prevents flicker over block edges.
  • Independently visible and positioned main and details panels. A live editor can drag either panel near any corner with small, recoverable X/Y offsets; an unmodified details panel stacks vertically when both panels share a corner.
  • Independent five-stop size sliders at 60%, 70%, 80%, 90%, and 100% for each panel. A default-off Accessibility switch adds 110%, 125%, and 150% choices while retaining screen-edge clamping.
  • Independent minimum- and maximum-width controls for each panel, defaulting to automatic content sizing with optional 120–320 GUI-pixel base widths and final screen-edge clamping.
  • Independent seven-stop background sliders at OFF, 7%, 24%, 55%, 72%, 88%, and 100%. OFF uses a compact backgroundless layout.
  • Shared text and panel shadows plus nine color schemes: None (all white), Duo-tone, Ocean, Amethyst, Emerald, Ember, Frost, Rose, and Gold.
  • Optional default-off biome-aware colors, enabled by the nameless aibo magic checkbox beside Colors, smoothly switch among existing themes for underground, cold, warm, and temperate local environments without replacing the saved manual theme.
  • Explicit coordinate copying in Plain, namespaced Vanilla TP, or CMI tppos format. The remappable F8 action writes locally to the clipboard and never runs or sends the copied text.
  • Automatically respects Minecraft's server-provided reduced-debug state: coordinate rows, the coordinate lens, coordinate copying, and target sampling/display are unavailable while the server restricts them. Direction, biome, and locally observed speed remain available.
  • Four built-in, fully editable Minimal, Explorer, Builder, and Privacy presets, plus exactly one separate local Saved setup slot for preserving a preferred configuration.
  • Remappable global visibility (F7 by default), coordinate-copy (F8 by default), and configuration-screen (unbound by default) key mappings, plus optional Mod Menu integration with responsive scrolling, wide two-column and narrow single-column layouts, near-white setting names, color-coded state labels, and one-second hover tooltips. Accessibility mode adds expanded keyboard/narrator guidance and explains why dependent controls are unavailable.
  • Translation-backed configuration labels, option values, tooltips, confirmations, and key-binding text, with a complete English fallback and support for community locale files.
  • Automatically saved, backward-compatible client configuration in config/locator-hud.json, with brief client-thread debouncing, visible failure/recovery notices, and bounded automatic retries that retain unsaved values in memory.

Requirements

Installing Snapshot Public Beta 5

  1. Install Fabric Loader for Minecraft 26.2.
  2. Download Fabric API and 1MB-Locator-HUD-1.55.0.jar.
  3. Put both JAR files in the client instance's mods/ folder.
  4. Optionally add Mod Menu for the in-game configuration screen.
  5. Launch Minecraft with the Fabric profile.

Verifying release downloads

Starting with Snapshot Public Beta 5, GitHub publishes the runtime JAR together with its .sha256 file and GitHub/Sigstore build provenance. The release notes contain commands specialized for that version.

The checksum detects any byte change relative to the published digest:

# Linux
sha256sum --check 1MB-Locator-HUD-<version>.jar.sha256
# macOS
shasum -a 256 --check 1MB-Locator-HUD-<version>.jar.sha256

GitHub CLI can additionally verify that the exact JAR was attested by this repository's release workflow, from the expected release tag, on a GitHub-hosted runner:

gh attestation verify 1MB-Locator-HUD-<version>.jar \
--repo mrfdev/1MB-Locator-HUD \
--signer-workflow mrfdev/1MB-Locator-HUD/.github/workflows/release.yml \
--source-ref refs/tags/v<version> \
--deny-self-hosted-runners

Each release's specialized command also pins the source commit recorded by the attestation. An attestation proves artifact integrity and build provenance; it does not claim that the code is bug-free or replace source review and testing. See RELEASING.md for the guarded publishing process.

Usage

Press F7 in game to show or hide the entire HUD. Minecraft displays a short enabled/disabled confirmation, and the binding can be changed in the Controls screen under Locator HUD.

Press F8 to copy your current coordinates using the configured Copy format and Decimal precision. The binding is remappable under Locator HUD. This action only updates the local clipboard and shows a confirmation; it never opens chat, runs the copied command, or sends it to the server. If the connected server enables reduced debug information, copying is refused and the existing clipboard is left unchanged.

To configure the mod without Mod Menu, assign Open Locator HUD settings in Minecraft's Controls screen under Locator HUD. It intentionally defaults to unbound to avoid conflicting with existing controls. The assigned key opens the same complete configuration screen from gameplay or another screen.

With Mod Menu installed, open Mods, select 1MB Locator HUD, and use its configuration button. Changes preview immediately and save automatically after a brief pause; slider and panel drags save their final value on release, and Done flushes pending main-setting changes before returning to the previous screen. The Setup section can apply one of four built-in presets, save and restore exactly one preferred setup, or open Place panels. In that explicit editor, drag either outlined panel near a corner; hidden and empty panels receive labeled fallback handles. Reset positions restores only the default panel corners and offsets. The normal gameplay HUD never captures clicks. Reset requires confirmation before restoring all factory defaults and never deletes the separate Saved setup.

If either configuration file cannot be written, Minecraft shows a local toast instead of leaving the problem only in the log. Live HUD changes remain active, and the mod retries the newest main settings every five seconds until they are stored. A failed Save current setup keeps and retries the exact snapshot requested at that moment on its own five-second schedule, even if live settings are edited or flushed afterward. Recovery is reported once. Files protected because they use a newer schema or could not be backed up are never retried or overwritten automatically; the unavailable Saved setup action explains that the file must be handled outside Minecraft before restarting.

The top-level Accessibility switch defaults to OFF. Turning it on exposes 110%, 125%, and 150% panel sizes, adds fuller keyboard/narrator usage guidance, and gives explicit reasons when a dependent setting is unavailable. It does not force a color palette or background. Turning it off returns any panel above 100% to Normal (100%); sizes from 60% through 100% are preserved.

Optional 1MoreBlock CMI controls

The Details setting named CMI defaults to OFF. When enabled, Locator HUD considers the capability only for the exact original multiplayer entry 1moreblock.com (optionally with a port). Before any controls appear, the server must advertise the dedicated channel and return a fresh Ed25519-signed session bound to this connection, the current player UUID, a strictly increasing message sequence, live permissions, supported presets, movement type, and a short expiry. A hostname, resolved address, MOTD, brand, command tree, chat message, or channel name is never enough by itself.

The row identifies the signed WALK or FLY state and includes only the currently permitted , 2.5×, and values. Open Chat to click a preset; ordinary gameplay clicks are never captured. The bridge rechecks CMI and the player's permissions at action time, dispatches the movement-specific command as that player, and reports the Paper walk/fly value after the command has taken effect. The client never changes or guesses the value optimistically.

Missing CMI, a missing bridge permission, unsupported CMI, a bad signature, malformed, replayed, or rolled-back data, a channel unregister, a disconnect or transfer, an expired heartbeat, denial, or failed readback removes the capability. A newer signed permission snapshot is required before a denied or failed session can expose controls again. Connecting through any other saved address does not register the receiver at all. The rest of Locator HUD continues to work normally.

Server-restricted debug information

Some servers enable Minecraft's built-in reduced-debug state. Locator HUD reads the supported state already maintained on the local player and responds to changes while connected. While the restriction is active:

  • decimal and containing-block coordinate rows are hidden;
  • the Overworld–Nether coordinate lens is hidden;
  • F8 coordinate copying is refused without changing the existing clipboard; and
  • block, fluid, and entity target sampling stops, any lingered target values are cleared, and their rows are hidden.

World name, view direction, view angles, biome information, biome transitions, locally observed movement speed, and visual settings remain available. The restriction never rewrites the player's configured choices; those choices automatically take effect again when full debug information is available. Enforcement is automatic and has no client-side override. Locator HUD does not inspect packets or add custom networking to implement it.

Without Mod Menu, the HUD and all three key mappings still work normally; assign Open Locator HUD settings once to retain direct in-game configuration access. Configuration is stored in config/locator-hud.json; the optional Saved setup uses config/locator-hud-saved-setup.json. Close the client before editing either file manually.

Existing unversioned and schema-1 configurations are migrated automatically to schema 2. If the main configuration is malformed, the original is preserved as a dated .broken.json backup before safe defaults are written. A malformed Saved setup is backed up and left unavailable until a new setup is saved. If a required backup cannot be created—or either file belongs to a newer schema—the protected file is not overwritten; the main configuration uses defaults in memory, while a protected Saved setup remains unavailable.

Configuration reference

AreaSettingDefaultChoices or behavior
GlobalHUDONShows or hides the entire HUD.
GlobalAccessibilityOFFAdds 110%, 125%, and 150% size choices plus expanded keyboard/narrator guidance and disabled-control explanations. It never forces Colors or Background. Turning it off returns sizes above 100% to Normal (100%).
GlobalColorsOceanNone (all white), Duo-tone, Ocean, Amethyst, Emerald, Ember, Frost, Rose, or Gold; shared by both panels.
GlobalBiome-aware colorsOFFThe nameless checkbox beside Colors has the tooltip aibo magic. When checked, it uses only the current local biome and column height to select an existing underground, cold, warm, or temperate theme. A short delay and gradual blend prevent border flicker. Unchecking it immediately restores the saved Colors choice.
GlobalText shadowONShared by both panels.
GlobalPanel shadowONShared by both panels and available when at least one enabled panel uses a non-OFF background.
GlobalCopy formatPlainPlain produces X … Y … Z … / World; Vanilla TP produces /minecraft:teleport @s …; CMI tppos produces /cmi tppos -p:<playername> … <world>. All use Decimal precision. The command formats are copied templates only and require the relevant server command and permission.
SetupBuilt-in presetMinimal selected, not appliedMinimal, Explorer, Builder, or Privacy. Applying changes existing content, visibility, sizes, and backgrounds while retaining the manual Colors choice, biome-aware color override, panel positions and width limits, shadows, and Copy format. Every resulting setting remains editable. Privacy hides exact location rows in this HUD only; it does not mask F3 or other mods.
SetupSaved setupEmpty until savedSave current setup writes one separate local slot. Replacing it and restoring it require confirmation; restore replaces all current settings. A transient failure retains and retries the exact requested snapshot and reports both failure and recovery in game.
SetupPlace panelsDefault corners, zero offsetsOpens an explicit live editor for dragging the main and details panels. The nearest corner is selected automatically, offsets snap within 6 GUI pixels and are limited to ±64, and Reset positions changes only placement. Normal gameplay remains non-interactive.
SetupResetRequires confirmation before restoring factory defaults. It does not modify the Saved setup slot.
MainShow main panelONIndependently shows or hides the main panel.
MainMain positionTop / LeftTop / Left, Top / Right, Bottom / Left, or Bottom / Right. Choosing a corner here clears the main panel's fine offset; Place panels can add a small offset.
MainCoordinate displayXYZ onlyXYZ only, block XYZ only, XYZ plus block, or none. Coordinate rows are temporarily hidden when the server enables reduced debug information.
MainDecimal precision1 decimalNone rounds XYZ to whole numbers; 1 or 2 decimal places are also available. This control is available when coordinate display includes XYZ or the coordinate lens is on.
MainOW / Nether lensOFFIn the vanilla Overworld, shows approximate corresponding Nether X/Z coordinates; in the vanilla Nether, shows approximate corresponding Overworld X/Z coordinates. Uses Decimal precision, does not locate portals or guarantee safety, and is hidden under server-provided reduced debug.
MainWorld nameON (behind)ON (in front), ON (behind), or OFF.
MainView directionONON shows the existing four-way cardinal name, ON (with details) adds eight-way directions and a compact signed-axis hint such as Northeast [+X/-Z], and OFF hides it.
MainView anglesOFFShows compact yaw and pitch values; when view direction is also enabled, they appear beside it.
MainAngle decimalsOFFWhole degrees when OFF, or 1 or 2 decimal places; available when view angles are on.
MainMain sizeNormal (100%)Normally snaps to 60%, 70%, 80%, 90%, or 100%. Accessibility adds 110%, 125%, and 150%.
MainMin / max widthAuto / AutoEach bound can stay automatic or use 120, 160, 200, 240, 280, or 320 GUI pixels before Main size scaling. A crossing change moves the companion bound to the same value. Long values are shortened where needed, fixed labels retain a small intrinsic floor, and current screen space is always the final ceiling.
MainMain backgroundBalanced (72%)OFF, 7%, 24%, 55%, 72%, 88%, or 100%.
DetailsShow details panelONIndependently enables the details/target panel. It does not render until at least one details row is visible.
DetailsDetails positionTop / RightTop / Left, Top / Right, Bottom / Left, or Bottom / Right. Choosing a corner here clears the details panel's fine offset; Place panels can add a small offset. A zero-offset details panel automatically stacks when it shares the main panel's corner.
DetailsBiomeOFFShows the biome at the player's current position.
DetailsBiome changeOFFBriefly shows Previous → Current for three seconds after the biome beneath the player changes. It uses only the current client-known biome and does not scan or retain discovery history. When the normal Biome row is enabled, the notice temporarily replaces its value.
DetailsMovement speedOFFShows locally observed three-dimensional movement in blocks per second, including ascent and descent, smoothed over half a second. It does not read or change CMI speed.
DetailsCMIOFFShows signed, server-permitted CMI walk/fly multiplier presets only on an authenticated connection entered as 1moreblock.com. It remains absent on every other server and accepts preset clicks only while Chat is open.
DetailsTarget block, fluid, and entityAll OFFThree independent crosshair-target rows. Empty enabled rows show an em dash unless auto-hide is on. Target sampling and rows are disabled under server-provided reduced debug.
DetailsTarget namesAPI accurateAPI accurate shows the full stable namespaced identifier, such as minecraft:oak_log. Friendly uses Minecraft's localized player-facing name, such as Oak Log, with the identifier as a safe fallback.
DetailsAuto-hide empty valuesOFFHides empty block, fluid, and entity rows; does not hide an enabled biome row. Target linger may delay hiding briefly. If no rows remain visible, the entire details panel does not render.
DetailsTarget lingerOFFKeeps each last non-empty target value visible for 0.5 seconds after the crosshair moves away.
DetailsDetails sizeCompact (80%)Normally snaps to 60%, 70%, 80%, 90%, or 100%. Accessibility adds 110%, 125%, and 150%.
DetailsMin / max widthAuto / AutoUses the same automatic or 120–320 GUI-pixel base widths, crossing-bound repair, value shortening, intrinsic label floor, and final screen-space ceiling as the main panel.
DetailsDetails backgroundOFF (minimal)OFF, 7%, 24%, 55%, 72%, 88%, or 100%.

Localization

The complete English fallback is src/client/resources/assets/locatorhud/lang/en_us.json. Every configuration label, option choice, tooltip, confirmation, key-binding label, and local status message uses a translation key; environment-neutral option types store only those keys and never depend on Minecraft text components.

Community translations can be contributed as src/client/resources/assets/locatorhud/lang/<locale>.json, using Minecraft's lowercase locale filename such as de_de.json or nl_nl.json. Copy the English file, translate JSON values only, and keep every key plus formatting placeholders such as %s and %% unchanged. A clean build rejects any production translation key that is missing from the English fallback.

Screenshots

These screenshots were captured from the tested 1.22.0 Snapshot Public Beta 2. The gameplay HUD examples remain representative of current layouts. The configuration-screen image records the Beta 2 interface and therefore predates the responsive grouped layout, Setup controls, copy formats, target-name options, panel width limits, and biome-aware color checkbox documented above.

Main and biome panelsDecimal and block coordinates
Locator HUD showing rounded XYZ coordinates, view angles, and a separate Plains biome panel in the top-left corner.Locator HUD showing decimal XYZ, containing-block coordinates, yaw, and pitch in the top-left corner.

Configuration screen with live HUD preview

Minecraft gameplay with the 1MB Locator HUD configuration screen open and both HUD panels visible.

Commands and networking

The ordinary HUD registers or executes no commands, performs no telemetry or remote calls, and requires no server-side setup. F8 can place command-shaped text on the local clipboard only after an explicit key press and only when reduced debug permits coordinates; it never sends or executes that text. The namespaced Vanilla TP format requires a server that exposes namespaced vanilla commands and grants teleport permission. The CMI copy format follows the documented tppos order and permission model; its client-known dimension path may need editing when the server uses a different CMI world name.

The single networking exception is the optional locatorhud:cmi_speed plugin-message protocol described above. Its receiver is installed per connection only after the exact original 1MoreBlock entry passes the local prefilter. Every capability and result must then verify against the client-pinned public key. The separate Paper bridge is not bundled with the Fabric JAR, and proprietary CMI/CMILib JARs and the private signing key are never repository or release inputs.

Building from source

The Gradle wrapper is included. With JDK 25 available, run:

./gradlew clean build

On Windows, use gradlew.bat clean build instead.

The verified runtime JAR, source JAR, and runtime checksum are written to:

build/libs/1MB-Locator-HUD-1.55.0.jar
build/libs/1MB-Locator-HUD-1.55.0-sources.jar
build/libs/1MB-Locator-HUD-1.55.0.jar.sha256

The clean build runs the unit-test suite, treats Java source warnings as errors, rejects server APIs, unaudited networking outside the narrowly allowlisted CMI client boundary, telemetry, custom command registration, and location logging, and verifies the runtime JAR's client-only metadata, dependency floors, icon, and translations. The Gradle distribution and resolved build dependencies are checksum-verified.

Build the separately deployed Paper bridge with:

./gradlew -p bridge clean build

Its JAR is written under bridge/build/libs/. It compiles only against Paper API; CMI 9.8.9.8 and CMILib 1.5.9.9 are separately licensed runtime inputs and are not downloaded, bundled, or published by this project. The nested build has its own strict dependency checksums and verifies that the runtime JAR contains only bridge classes and required metadata. See the bridge deployment guide.

To run only the full unit-test suite:

./gradlew test

Two separate production-client smoke tests launch the built mod with Fabric API, exercise focused configuration-screen regressions, and verify operation both without and with optional Mod Menu:

./gradlew runClientSmokeWithoutModMenu
./gradlew runClientSmokeWithModMenu

Performance and retention diagnostics are opt-in and are not part of the normal build or CI gates. To launch the production client without Mod Menu under a bounded Java 25 Flight Recorder profile, run:

./gradlew runClientProfile

Exercise the HUD in a representative world, including the desired worst-case settings, and close Minecraft normally to finish build/profiles/locatorhud-client.jfr. Shutdown can take a little longer because the diagnostic records paths from suspected retained objects to their garbage-collection roots. The task prints hot methods, sampled allocation sites, and memory-leak candidates when the client exits. Those candidates are useful for comparing repeated runs, but they are not proof of a leak by themselves.

For a repeatable configuration-screen stress run, use:

./gradlew runClientUiSoak
./gradlew runClientUiSoak -Plocatorhud.uiSoakIterations=1000

The first command performs 250 cycles by default; explicit values from 1 through 10,000 are accepted. Each cycle rebuilds accessibility-dependent controls, applies a rotating preset, opens and closes panel placement, closes the settings screen, and flushes persistence. Every closed settings and placement screen is tracked through a weak reference, and the task fails if any remain reachable after bounded full-GC attempts. The client runs under a 512 MiB heap ceiling; an out-of-memory failure exits immediately and writes build/profiles/locatorhud-ui-soak-oom.hprof for diagnosis. Its bounded JFR recording is written to build/profiles/locatorhud-ui-soak.jfr, and hot-method, allocation, and statistical retention views are printed on exit.

The regular GitHub Actions workflow runs the strict clean build and both production-client variants on Java 25. A separate release-only workflow must run from an existing version tag on main; it repeats those gates, revalidates the remote tag, verifies and attests the exact runtime JAR through GitHub and Sigstore, uploads the JAR plus checksum to a draft release, byte-compares both draft assets, and only then publishes that verified draft. Every third-party action is pinned to an immutable commit, audited local actions are confined to .github/actions, and the clean build rejects mutable or dynamic action references.

Project structure

  • src/main/java: environment-neutral formatting, layout, option models, panel-content plans, width and drag-placement policies, reduced-debug disclosure policy, immutable HUD snapshots, sampling schedules, validated settings, configuration storage, save debounce/retry policy, and the bounded signed CMI protocol/session validator.
  • src/client/java: Fabric client initialization, centralized key mappings and explicit user actions, tick-owned HUD sampling with read-only render snapshots, rendering and semantic hitbox tracking, crosshair targeting, the narrowly scoped CMI connection controller, the persistence-aware configuration mutation facade, and focused configuration/placement UI builders.
  • src/main/resources: Fabric metadata and the mod icon.
  • src/client/resources: client translations.
  • src/test/java: unit tests for formatting, display modes, exhaustive row-plan matrices, geometry and drag-placement boundaries, responsive screen policy, visibility rules, sampling cadence, theme classification and blending, presets and Saved setup, discrete slider behavior, save debounce/retry transitions, configuration migration and recovery, plus deterministic long-run state churn.
  • src/test/resources: versioned legacy-configuration fixtures used by migration tests.
  • src/gametest: an isolated Fabric client-test mod used for production startup, focused configuration-screen smoke tests, and the opt-in UI soak; it is not packaged in the release JAR.
  • bridge: a separate Paper 26.2 CMI speed bridge project and deployment guide; its artifact is never embedded in the Fabric JAR.
  • .github/workflows/ci.yml: the pinned Java 25 build, policy, packaging, checksum, and production-client checks.
  • .github/workflows/release.yml: the tag-bound build, smoke-test, GitHub/Sigstore attestation, and guarded GitHub release publisher.

Project links

License

Copyright © 2026 mrfloris. All rights reserved. See LICENSE.

1MB Locator HUD was created by mrfloris and Codex.

About

A compact configurable coordinates, direction, biome, and crosshair-target HUD for Fabric 26.2

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - mrfdev/1MB-Locator-HUD: A compact configurable coordinates, direction, biome, and crosshair-target HUD for Fabric 26.2 · GitHub
Skip to content

Repository files navigation

1MB Locator HUD

1MB Locator HUD is a client-only Fabric mod for Minecraft Java Edition 26.2. It replaces coordinate-heavy F3 use with compact, configurable main and details panels. The ordinary HUD works in singleplayer and on any compatible server without a server plugin. A separate, default-off CMI speed capability is available only when the exact 1moreblock.com entry proves itself through the signed 1MoreBlock bridge.

The mod was made for 1MoreBlock.com, a public Java Edition survival Minecraft server currently running Minecraft 26.2. All location, direction, biome, target, visual, copying, and observed-speed features remain server-independent. On every non-1MoreBlock server, the optional CMI receiver is never installed and its controls remain absent and inert.

Locator HUD icon

Release status

The feature, configuration, build, installation, and download references below describe the tested 1.55.0 Snapshot Public Beta 5. It remains a prerelease and should receive broader player testing before it is treated as stable. Please report beta feedback and problems through the issue tracker.

Features

  • Rounded whole-number XYZ, one- or two-decimal XYZ, containing-block XYZ, both coordinate rows, or neither.
  • Optional Overworld–Nether coordinate lens that shows the approximate mathematical X/Z counterpart without claiming that a portal exists or a destination is safe.
  • Optional friendly world/dimension name before or after the first coordinate row. When coordinates are hidden, the world name uses its own row.
  • Three-state view direction: the default four-way cardinal name, an opt-in eight-way name with a compact signed-axis hint, or off. Compact yaw/pitch angles remain independently toggleable in whole, one-decimal, or two-decimal degrees.
  • Optional biome, three-second biome-transition, smoothed three-dimensional movement-speed, and crosshair-target block, fluid, and entity rows with Friendly or API-accurate names.
  • Optional, default-off CMI walk/fly multiplier controls for , 2.5×, and on authenticated 1MoreBlock sessions. The row shows only server-permitted presets, accepts clicks only while Chat is open, and updates only from signed authoritative results.
  • Optional auto-hide keeps empty target rows compact, while 0.5-second target linger prevents flicker over block edges.
  • Independently visible and positioned main and details panels. A live editor can drag either panel near any corner with small, recoverable X/Y offsets; an unmodified details panel stacks vertically when both panels share a corner.
  • Independent five-stop size sliders at 60%, 70%, 80%, 90%, and 100% for each panel. A default-off Accessibility switch adds 110%, 125%, and 150% choices while retaining screen-edge clamping.
  • Independent minimum- and maximum-width controls for each panel, defaulting to automatic content sizing with optional 120–320 GUI-pixel base widths and final screen-edge clamping.
  • Independent seven-stop background sliders at OFF, 7%, 24%, 55%, 72%, 88%, and 100%. OFF uses a compact backgroundless layout.
  • Shared text and panel shadows plus nine color schemes: None (all white), Duo-tone, Ocean, Amethyst, Emerald, Ember, Frost, Rose, and Gold.
  • Optional default-off biome-aware colors, enabled by the nameless aibo magic checkbox beside Colors, smoothly switch among existing themes for underground, cold, warm, and temperate local environments without replacing the saved manual theme.
  • Explicit coordinate copying in Plain, namespaced Vanilla TP, or CMI tppos format. The remappable F8 action writes locally to the clipboard and never runs or sends the copied text.
  • Automatically respects Minecraft's server-provided reduced-debug state: coordinate rows, the coordinate lens, coordinate copying, and target sampling/display are unavailable while the server restricts them. Direction, biome, and locally observed speed remain available.
  • Four built-in, fully editable Minimal, Explorer, Builder, and Privacy presets, plus exactly one separate local Saved setup slot for preserving a preferred configuration.
  • Remappable global visibility (F7 by default), coordinate-copy (F8 by default), and configuration-screen (unbound by default) key mappings, plus optional Mod Menu integration with responsive scrolling, wide two-column and narrow single-column layouts, near-white setting names, color-coded state labels, and one-second hover tooltips. Accessibility mode adds expanded keyboard/narrator guidance and explains why dependent controls are unavailable.
  • Translation-backed configuration labels, option values, tooltips, confirmations, and key-binding text, with a complete English fallback and support for community locale files.
  • Automatically saved, backward-compatible client configuration in config/locator-hud.json, with brief client-thread debouncing, visible failure/recovery notices, and bounded automatic retries that retain unsaved values in memory.

Requirements

Installing Snapshot Public Beta 5

  1. Install Fabric Loader for Minecraft 26.2.
  2. Download Fabric API and 1MB-Locator-HUD-1.55.0.jar.
  3. Put both JAR files in the client instance's mods/ folder.
  4. Optionally add Mod Menu for the in-game configuration screen.
  5. Launch Minecraft with the Fabric profile.

Verifying release downloads

Starting with Snapshot Public Beta 5, GitHub publishes the runtime JAR together with its .sha256 file and GitHub/Sigstore build provenance. The release notes contain commands specialized for that version.

The checksum detects any byte change relative to the published digest:

# Linux
sha256sum --check 1MB-Locator-HUD-<version>.jar.sha256
# macOS
shasum -a 256 --check 1MB-Locator-HUD-<version>.jar.sha256

GitHub CLI can additionally verify that the exact JAR was attested by this repository's release workflow, from the expected release tag, on a GitHub-hosted runner:

gh attestation verify 1MB-Locator-HUD-<version>.jar \
--repo mrfdev/1MB-Locator-HUD \
--signer-workflow mrfdev/1MB-Locator-HUD/.github/workflows/release.yml \
--source-ref refs/tags/v<version> \
--deny-self-hosted-runners

Each release's specialized command also pins the source commit recorded by the attestation. An attestation proves artifact integrity and build provenance; it does not claim that the code is bug-free or replace source review and testing. See RELEASING.md for the guarded publishing process.

Usage

Press F7 in game to show or hide the entire HUD. Minecraft displays a short enabled/disabled confirmation, and the binding can be changed in the Controls screen under Locator HUD.

Press F8 to copy your current coordinates using the configured Copy format and Decimal precision. The binding is remappable under Locator HUD. This action only updates the local clipboard and shows a confirmation; it never opens chat, runs the copied command, or sends it to the server. If the connected server enables reduced debug information, copying is refused and the existing clipboard is left unchanged.

To configure the mod without Mod Menu, assign Open Locator HUD settings in Minecraft's Controls screen under Locator HUD. It intentionally defaults to unbound to avoid conflicting with existing controls. The assigned key opens the same complete configuration screen from gameplay or another screen.

With Mod Menu installed, open Mods, select 1MB Locator HUD, and use its configuration button. Changes preview immediately and save automatically after a brief pause; slider and panel drags save their final value on release, and Done flushes pending main-setting changes before returning to the previous screen. The Setup section can apply one of four built-in presets, save and restore exactly one preferred setup, or open Place panels. In that explicit editor, drag either outlined panel near a corner; hidden and empty panels receive labeled fallback handles. Reset positions restores only the default panel corners and offsets. The normal gameplay HUD never captures clicks. Reset requires confirmation before restoring all factory defaults and never deletes the separate Saved setup.

If either configuration file cannot be written, Minecraft shows a local toast instead of leaving the problem only in the log. Live HUD changes remain active, and the mod retries the newest main settings every five seconds until they are stored. A failed Save current setup keeps and retries the exact snapshot requested at that moment on its own five-second schedule, even if live settings are edited or flushed afterward. Recovery is reported once. Files protected because they use a newer schema or could not be backed up are never retried or overwritten automatically; the unavailable Saved setup action explains that the file must be handled outside Minecraft before restarting.

The top-level Accessibility switch defaults to OFF. Turning it on exposes 110%, 125%, and 150% panel sizes, adds fuller keyboard/narrator usage guidance, and gives explicit reasons when a dependent setting is unavailable. It does not force a color palette or background. Turning it off returns any panel above 100% to Normal (100%); sizes from 60% through 100% are preserved.

Optional 1MoreBlock CMI controls

The Details setting named CMI defaults to OFF. When enabled, Locator HUD considers the capability only for the exact original multiplayer entry 1moreblock.com (optionally with a port). Before any controls appear, the server must advertise the dedicated channel and return a fresh Ed25519-signed session bound to this connection, the current player UUID, a strictly increasing message sequence, live permissions, supported presets, movement type, and a short expiry. A hostname, resolved address, MOTD, brand, command tree, chat message, or channel name is never enough by itself.

The row identifies the signed WALK or FLY state and includes only the currently permitted , 2.5×, and values. Open Chat to click a preset; ordinary gameplay clicks are never captured. The bridge rechecks CMI and the player's permissions at action time, dispatches the movement-specific command as that player, and reports the Paper walk/fly value after the command has taken effect. The client never changes or guesses the value optimistically.

Missing CMI, a missing bridge permission, unsupported CMI, a bad signature, malformed, replayed, or rolled-back data, a channel unregister, a disconnect or transfer, an expired heartbeat, denial, or failed readback removes the capability. A newer signed permission snapshot is required before a denied or failed session can expose controls again. Connecting through any other saved address does not register the receiver at all. The rest of Locator HUD continues to work normally.

Server-restricted debug information

Some servers enable Minecraft's built-in reduced-debug state. Locator HUD reads the supported state already maintained on the local player and responds to changes while connected. While the restriction is active:

  • decimal and containing-block coordinate rows are hidden;
  • the Overworld–Nether coordinate lens is hidden;
  • F8 coordinate copying is refused without changing the existing clipboard; and
  • block, fluid, and entity target sampling stops, any lingered target values are cleared, and their rows are hidden.

World name, view direction, view angles, biome information, biome transitions, locally observed movement speed, and visual settings remain available. The restriction never rewrites the player's configured choices; those choices automatically take effect again when full debug information is available. Enforcement is automatic and has no client-side override. Locator HUD does not inspect packets or add custom networking to implement it.

Without Mod Menu, the HUD and all three key mappings still work normally; assign Open Locator HUD settings once to retain direct in-game configuration access. Configuration is stored in config/locator-hud.json; the optional Saved setup uses config/locator-hud-saved-setup.json. Close the client before editing either file manually.

Existing unversioned and schema-1 configurations are migrated automatically to schema 2. If the main configuration is malformed, the original is preserved as a dated .broken.json backup before safe defaults are written. A malformed Saved setup is backed up and left unavailable until a new setup is saved. If a required backup cannot be created—or either file belongs to a newer schema—the protected file is not overwritten; the main configuration uses defaults in memory, while a protected Saved setup remains unavailable.

Configuration reference

AreaSettingDefaultChoices or behavior
GlobalHUDONShows or hides the entire HUD.
GlobalAccessibilityOFFAdds 110%, 125%, and 150% size choices plus expanded keyboard/narrator guidance and disabled-control explanations. It never forces Colors or Background. Turning it off returns sizes above 100% to Normal (100%).
GlobalColorsOceanNone (all white), Duo-tone, Ocean, Amethyst, Emerald, Ember, Frost, Rose, or Gold; shared by both panels.
GlobalBiome-aware colorsOFFThe nameless checkbox beside Colors has the tooltip aibo magic. When checked, it uses only the current local biome and column height to select an existing underground, cold, warm, or temperate theme. A short delay and gradual blend prevent border flicker. Unchecking it immediately restores the saved Colors choice.
GlobalText shadowONShared by both panels.
GlobalPanel shadowONShared by both panels and available when at least one enabled panel uses a non-OFF background.
GlobalCopy formatPlainPlain produces X … Y … Z … / World; Vanilla TP produces /minecraft:teleport @s …; CMI tppos produces /cmi tppos -p:<playername> … <world>. All use Decimal precision. The command formats are copied templates only and require the relevant server command and permission.
SetupBuilt-in presetMinimal selected, not appliedMinimal, Explorer, Builder, or Privacy. Applying changes existing content, visibility, sizes, and backgrounds while retaining the manual Colors choice, biome-aware color override, panel positions and width limits, shadows, and Copy format. Every resulting setting remains editable. Privacy hides exact location rows in this HUD only; it does not mask F3 or other mods.
SetupSaved setupEmpty until savedSave current setup writes one separate local slot. Replacing it and restoring it require confirmation; restore replaces all current settings. A transient failure retains and retries the exact requested snapshot and reports both failure and recovery in game.
SetupPlace panelsDefault corners, zero offsetsOpens an explicit live editor for dragging the main and details panels. The nearest corner is selected automatically, offsets snap within 6 GUI pixels and are limited to ±64, and Reset positions changes only placement. Normal gameplay remains non-interactive.
SetupResetRequires confirmation before restoring factory defaults. It does not modify the Saved setup slot.
MainShow main panelONIndependently shows or hides the main panel.
MainMain positionTop / LeftTop / Left, Top / Right, Bottom / Left, or Bottom / Right. Choosing a corner here clears the main panel's fine offset; Place panels can add a small offset.
MainCoordinate displayXYZ onlyXYZ only, block XYZ only, XYZ plus block, or none. Coordinate rows are temporarily hidden when the server enables reduced debug information.
MainDecimal precision1 decimalNone rounds XYZ to whole numbers; 1 or 2 decimal places are also available. This control is available when coordinate display includes XYZ or the coordinate lens is on.
MainOW / Nether lensOFFIn the vanilla Overworld, shows approximate corresponding Nether X/Z coordinates; in the vanilla Nether, shows approximate corresponding Overworld X/Z coordinates. Uses Decimal precision, does not locate portals or guarantee safety, and is hidden under server-provided reduced debug.
MainWorld nameON (behind)ON (in front), ON (behind), or OFF.
MainView directionONON shows the existing four-way cardinal name, ON (with details) adds eight-way directions and a compact signed-axis hint such as Northeast [+X/-Z], and OFF hides it.
MainView anglesOFFShows compact yaw and pitch values; when view direction is also enabled, they appear beside it.
MainAngle decimalsOFFWhole degrees when OFF, or 1 or 2 decimal places; available when view angles are on.
MainMain sizeNormal (100%)Normally snaps to 60%, 70%, 80%, 90%, or 100%. Accessibility adds 110%, 125%, and 150%.
MainMin / max widthAuto / AutoEach bound can stay automatic or use 120, 160, 200, 240, 280, or 320 GUI pixels before Main size scaling. A crossing change moves the companion bound to the same value. Long values are shortened where needed, fixed labels retain a small intrinsic floor, and current screen space is always the final ceiling.
MainMain backgroundBalanced (72%)OFF, 7%, 24%, 55%, 72%, 88%, or 100%.
DetailsShow details panelONIndependently enables the details/target panel. It does not render until at least one details row is visible.
DetailsDetails positionTop / RightTop / Left, Top / Right, Bottom / Left, or Bottom / Right. Choosing a corner here clears the details panel's fine offset; Place panels can add a small offset. A zero-offset details panel automatically stacks when it shares the main panel's corner.
DetailsBiomeOFFShows the biome at the player's current position.
DetailsBiome changeOFFBriefly shows Previous → Current for three seconds after the biome beneath the player changes. It uses only the current client-known biome and does not scan or retain discovery history. When the normal Biome row is enabled, the notice temporarily replaces its value.
DetailsMovement speedOFFShows locally observed three-dimensional movement in blocks per second, including ascent and descent, smoothed over half a second. It does not read or change CMI speed.
DetailsCMIOFFShows signed, server-permitted CMI walk/fly multiplier presets only on an authenticated connection entered as 1moreblock.com. It remains absent on every other server and accepts preset clicks only while Chat is open.
DetailsTarget block, fluid, and entityAll OFFThree independent crosshair-target rows. Empty enabled rows show an em dash unless auto-hide is on. Target sampling and rows are disabled under server-provided reduced debug.
DetailsTarget namesAPI accurateAPI accurate shows the full stable namespaced identifier, such as minecraft:oak_log. Friendly uses Minecraft's localized player-facing name, such as Oak Log, with the identifier as a safe fallback.
DetailsAuto-hide empty valuesOFFHides empty block, fluid, and entity rows; does not hide an enabled biome row. Target linger may delay hiding briefly. If no rows remain visible, the entire details panel does not render.
DetailsTarget lingerOFFKeeps each last non-empty target value visible for 0.5 seconds after the crosshair moves away.
DetailsDetails sizeCompact (80%)Normally snaps to 60%, 70%, 80%, 90%, or 100%. Accessibility adds 110%, 125%, and 150%.
DetailsMin / max widthAuto / AutoUses the same automatic or 120–320 GUI-pixel base widths, crossing-bound repair, value shortening, intrinsic label floor, and final screen-space ceiling as the main panel.
DetailsDetails backgroundOFF (minimal)OFF, 7%, 24%, 55%, 72%, 88%, or 100%.

Localization

The complete English fallback is src/client/resources/assets/locatorhud/lang/en_us.json. Every configuration label, option choice, tooltip, confirmation, key-binding label, and local status message uses a translation key; environment-neutral option types store only those keys and never depend on Minecraft text components.

Community translations can be contributed as src/client/resources/assets/locatorhud/lang/<locale>.json, using Minecraft's lowercase locale filename such as de_de.json or nl_nl.json. Copy the English file, translate JSON values only, and keep every key plus formatting placeholders such as %s and %% unchanged. A clean build rejects any production translation key that is missing from the English fallback.

Screenshots

These screenshots were captured from the tested 1.22.0 Snapshot Public Beta 2. The gameplay HUD examples remain representative of current layouts. The configuration-screen image records the Beta 2 interface and therefore predates the responsive grouped layout, Setup controls, copy formats, target-name options, panel width limits, and biome-aware color checkbox documented above.

Main and biome panelsDecimal and block coordinates
Locator HUD showing rounded XYZ coordinates, view angles, and a separate Plains biome panel in the top-left corner.Locator HUD showing decimal XYZ, containing-block coordinates, yaw, and pitch in the top-left corner.

Configuration screen with live HUD preview

Minecraft gameplay with the 1MB Locator HUD configuration screen open and both HUD panels visible.

Commands and networking

The ordinary HUD registers or executes no commands, performs no telemetry or remote calls, and requires no server-side setup. F8 can place command-shaped text on the local clipboard only after an explicit key press and only when reduced debug permits coordinates; it never sends or executes that text. The namespaced Vanilla TP format requires a server that exposes namespaced vanilla commands and grants teleport permission. The CMI copy format follows the documented tppos order and permission model; its client-known dimension path may need editing when the server uses a different CMI world name.

The single networking exception is the optional locatorhud:cmi_speed plugin-message protocol described above. Its receiver is installed per connection only after the exact original 1MoreBlock entry passes the local prefilter. Every capability and result must then verify against the client-pinned public key. The separate Paper bridge is not bundled with the Fabric JAR, and proprietary CMI/CMILib JARs and the private signing key are never repository or release inputs.

Building from source

The Gradle wrapper is included. With JDK 25 available, run:

./gradlew clean build

On Windows, use gradlew.bat clean build instead.

The verified runtime JAR, source JAR, and runtime checksum are written to:

build/libs/1MB-Locator-HUD-1.55.0.jar
build/libs/1MB-Locator-HUD-1.55.0-sources.jar
build/libs/1MB-Locator-HUD-1.55.0.jar.sha256

The clean build runs the unit-test suite, treats Java source warnings as errors, rejects server APIs, unaudited networking outside the narrowly allowlisted CMI client boundary, telemetry, custom command registration, and location logging, and verifies the runtime JAR's client-only metadata, dependency floors, icon, and translations. The Gradle distribution and resolved build dependencies are checksum-verified.

Build the separately deployed Paper bridge with:

./gradlew -p bridge clean build

Its JAR is written under bridge/build/libs/. It compiles only against Paper API; CMI 9.8.9.8 and CMILib 1.5.9.9 are separately licensed runtime inputs and are not downloaded, bundled, or published by this project. The nested build has its own strict dependency checksums and verifies that the runtime JAR contains only bridge classes and required metadata. See the bridge deployment guide.

To run only the full unit-test suite:

./gradlew test

Two separate production-client smoke tests launch the built mod with Fabric API, exercise focused configuration-screen regressions, and verify operation both without and with optional Mod Menu:

./gradlew runClientSmokeWithoutModMenu
./gradlew runClientSmokeWithModMenu

Performance and retention diagnostics are opt-in and are not part of the normal build or CI gates. To launch the production client without Mod Menu under a bounded Java 25 Flight Recorder profile, run:

./gradlew runClientProfile

Exercise the HUD in a representative world, including the desired worst-case settings, and close Minecraft normally to finish build/profiles/locatorhud-client.jfr. Shutdown can take a little longer because the diagnostic records paths from suspected retained objects to their garbage-collection roots. The task prints hot methods, sampled allocation sites, and memory-leak candidates when the client exits. Those candidates are useful for comparing repeated runs, but they are not proof of a leak by themselves.

For a repeatable configuration-screen stress run, use:

./gradlew runClientUiSoak
./gradlew runClientUiSoak -Plocatorhud.uiSoakIterations=1000

The first command performs 250 cycles by default; explicit values from 1 through 10,000 are accepted. Each cycle rebuilds accessibility-dependent controls, applies a rotating preset, opens and closes panel placement, closes the settings screen, and flushes persistence. Every closed settings and placement screen is tracked through a weak reference, and the task fails if any remain reachable after bounded full-GC attempts. The client runs under a 512 MiB heap ceiling; an out-of-memory failure exits immediately and writes build/profiles/locatorhud-ui-soak-oom.hprof for diagnosis. Its bounded JFR recording is written to build/profiles/locatorhud-ui-soak.jfr, and hot-method, allocation, and statistical retention views are printed on exit.

The regular GitHub Actions workflow runs the strict clean build and both production-client variants on Java 25. A separate release-only workflow must run from an existing version tag on main; it repeats those gates, revalidates the remote tag, verifies and attests the exact runtime JAR through GitHub and Sigstore, uploads the JAR plus checksum to a draft release, byte-compares both draft assets, and only then publishes that verified draft. Every third-party action is pinned to an immutable commit, audited local actions are confined to .github/actions, and the clean build rejects mutable or dynamic action references.

Project structure

  • src/main/java: environment-neutral formatting, layout, option models, panel-content plans, width and drag-placement policies, reduced-debug disclosure policy, immutable HUD snapshots, sampling schedules, validated settings, configuration storage, save debounce/retry policy, and the bounded signed CMI protocol/session validator.
  • src/client/java: Fabric client initialization, centralized key mappings and explicit user actions, tick-owned HUD sampling with read-only render snapshots, rendering and semantic hitbox tracking, crosshair targeting, the narrowly scoped CMI connection controller, the persistence-aware configuration mutation facade, and focused configuration/placement UI builders.
  • src/main/resources: Fabric metadata and the mod icon.
  • src/client/resources: client translations.
  • src/test/java: unit tests for formatting, display modes, exhaustive row-plan matrices, geometry and drag-placement boundaries, responsive screen policy, visibility rules, sampling cadence, theme classification and blending, presets and Saved setup, discrete slider behavior, save debounce/retry transitions, configuration migration and recovery, plus deterministic long-run state churn.
  • src/test/resources: versioned legacy-configuration fixtures used by migration tests.
  • src/gametest: an isolated Fabric client-test mod used for production startup, focused configuration-screen smoke tests, and the opt-in UI soak; it is not packaged in the release JAR.
  • bridge: a separate Paper 26.2 CMI speed bridge project and deployment guide; its artifact is never embedded in the Fabric JAR.
  • .github/workflows/ci.yml: the pinned Java 25 build, policy, packaging, checksum, and production-client checks.
  • .github/workflows/release.yml: the tag-bound build, smoke-test, GitHub/Sigstore attestation, and guarded GitHub release publisher.

Project links

License

Copyright © 2026 mrfloris. All rights reserved. See LICENSE.

1MB Locator HUD was created by mrfloris and Codex.

About

A compact configurable coordinates, direction, biome, and crosshair-target HUD for Fabric 26.2

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - mrfdev/1MB-Locator-HUD: A compact configurable coordinates, direction, biome, and crosshair-target HUD for Fabric 26.2 · GitHub
Skip to content

Repository files navigation

1MB Locator HUD

1MB Locator HUD is a client-only Fabric mod for Minecraft Java Edition 26.2. It replaces coordinate-heavy F3 use with compact, configurable main and details panels. The ordinary HUD works in singleplayer and on any compatible server without a server plugin. A separate, default-off CMI speed capability is available only when the exact 1moreblock.com entry proves itself through the signed 1MoreBlock bridge.

The mod was made for 1MoreBlock.com, a public Java Edition survival Minecraft server currently running Minecraft 26.2. All location, direction, biome, target, visual, copying, and observed-speed features remain server-independent. On every non-1MoreBlock server, the optional CMI receiver is never installed and its controls remain absent and inert.

Locator HUD icon

Release status

The feature, configuration, build, installation, and download references below describe the tested 1.55.0 Snapshot Public Beta 5. It remains a prerelease and should receive broader player testing before it is treated as stable. Please report beta feedback and problems through the issue tracker.

Features

  • Rounded whole-number XYZ, one- or two-decimal XYZ, containing-block XYZ, both coordinate rows, or neither.
  • Optional Overworld–Nether coordinate lens that shows the approximate mathematical X/Z counterpart without claiming that a portal exists or a destination is safe.
  • Optional friendly world/dimension name before or after the first coordinate row. When coordinates are hidden, the world name uses its own row.
  • Three-state view direction: the default four-way cardinal name, an opt-in eight-way name with a compact signed-axis hint, or off. Compact yaw/pitch angles remain independently toggleable in whole, one-decimal, or two-decimal degrees.
  • Optional biome, three-second biome-transition, smoothed three-dimensional movement-speed, and crosshair-target block, fluid, and entity rows with Friendly or API-accurate names.
  • Optional, default-off CMI walk/fly multiplier controls for , 2.5×, and on authenticated 1MoreBlock sessions. The row shows only server-permitted presets, accepts clicks only while Chat is open, and updates only from signed authoritative results.
  • Optional auto-hide keeps empty target rows compact, while 0.5-second target linger prevents flicker over block edges.
  • Independently visible and positioned main and details panels. A live editor can drag either panel near any corner with small, recoverable X/Y offsets; an unmodified details panel stacks vertically when both panels share a corner.
  • Independent five-stop size sliders at 60%, 70%, 80%, 90%, and 100% for each panel. A default-off Accessibility switch adds 110%, 125%, and 150% choices while retaining screen-edge clamping.
  • Independent minimum- and maximum-width controls for each panel, defaulting to automatic content sizing with optional 120–320 GUI-pixel base widths and final screen-edge clamping.
  • Independent seven-stop background sliders at OFF, 7%, 24%, 55%, 72%, 88%, and 100%. OFF uses a compact backgroundless layout.
  • Shared text and panel shadows plus nine color schemes: None (all white), Duo-tone, Ocean, Amethyst, Emerald, Ember, Frost, Rose, and Gold.
  • Optional default-off biome-aware colors, enabled by the nameless aibo magic checkbox beside Colors, smoothly switch among existing themes for underground, cold, warm, and temperate local environments without replacing the saved manual theme.
  • Explicit coordinate copying in Plain, namespaced Vanilla TP, or CMI tppos format. The remappable F8 action writes locally to the clipboard and never runs or sends the copied text.
  • Automatically respects Minecraft's server-provided reduced-debug state: coordinate rows, the coordinate lens, coordinate copying, and target sampling/display are unavailable while the server restricts them. Direction, biome, and locally observed speed remain available.
  • Four built-in, fully editable Minimal, Explorer, Builder, and Privacy presets, plus exactly one separate local Saved setup slot for preserving a preferred configuration.
  • Remappable global visibility (F7 by default), coordinate-copy (F8 by default), and configuration-screen (unbound by default) key mappings, plus optional Mod Menu integration with responsive scrolling, wide two-column and narrow single-column layouts, near-white setting names, color-coded state labels, and one-second hover tooltips. Accessibility mode adds expanded keyboard/narrator guidance and explains why dependent controls are unavailable.
  • Translation-backed configuration labels, option values, tooltips, confirmations, and key-binding text, with a complete English fallback and support for community locale files.
  • Automatically saved, backward-compatible client configuration in config/locator-hud.json, with brief client-thread debouncing, visible failure/recovery notices, and bounded automatic retries that retain unsaved values in memory.

Requirements

Installing Snapshot Public Beta 5

  1. Install Fabric Loader for Minecraft 26.2.
  2. Download Fabric API and 1MB-Locator-HUD-1.55.0.jar.
  3. Put both JAR files in the client instance's mods/ folder.
  4. Optionally add Mod Menu for the in-game configuration screen.
  5. Launch Minecraft with the Fabric profile.

Verifying release downloads

Starting with Snapshot Public Beta 5, GitHub publishes the runtime JAR together with its .sha256 file and GitHub/Sigstore build provenance. The release notes contain commands specialized for that version.

The checksum detects any byte change relative to the published digest:

# Linux
sha256sum --check 1MB-Locator-HUD-<version>.jar.sha256
# macOS
shasum -a 256 --check 1MB-Locator-HUD-<version>.jar.sha256

GitHub CLI can additionally verify that the exact JAR was attested by this repository's release workflow, from the expected release tag, on a GitHub-hosted runner:

gh attestation verify 1MB-Locator-HUD-<version>.jar \
--repo mrfdev/1MB-Locator-HUD \
--signer-workflow mrfdev/1MB-Locator-HUD/.github/workflows/release.yml \
--source-ref refs/tags/v<version> \
--deny-self-hosted-runners

Each release's specialized command also pins the source commit recorded by the attestation. An attestation proves artifact integrity and build provenance; it does not claim that the code is bug-free or replace source review and testing. See RELEASING.md for the guarded publishing process.

Usage

Press F7 in game to show or hide the entire HUD. Minecraft displays a short enabled/disabled confirmation, and the binding can be changed in the Controls screen under Locator HUD.

Press F8 to copy your current coordinates using the configured Copy format and Decimal precision. The binding is remappable under Locator HUD. This action only updates the local clipboard and shows a confirmation; it never opens chat, runs the copied command, or sends it to the server. If the connected server enables reduced debug information, copying is refused and the existing clipboard is left unchanged.

To configure the mod without Mod Menu, assign Open Locator HUD settings in Minecraft's Controls screen under Locator HUD. It intentionally defaults to unbound to avoid conflicting with existing controls. The assigned key opens the same complete configuration screen from gameplay or another screen.

With Mod Menu installed, open Mods, select 1MB Locator HUD, and use its configuration button. Changes preview immediately and save automatically after a brief pause; slider and panel drags save their final value on release, and Done flushes pending main-setting changes before returning to the previous screen. The Setup section can apply one of four built-in presets, save and restore exactly one preferred setup, or open Place panels. In that explicit editor, drag either outlined panel near a corner; hidden and empty panels receive labeled fallback handles. Reset positions restores only the default panel corners and offsets. The normal gameplay HUD never captures clicks. Reset requires confirmation before restoring all factory defaults and never deletes the separate Saved setup.

If either configuration file cannot be written, Minecraft shows a local toast instead of leaving the problem only in the log. Live HUD changes remain active, and the mod retries the newest main settings every five seconds until they are stored. A failed Save current setup keeps and retries the exact snapshot requested at that moment on its own five-second schedule, even if live settings are edited or flushed afterward. Recovery is reported once. Files protected because they use a newer schema or could not be backed up are never retried or overwritten automatically; the unavailable Saved setup action explains that the file must be handled outside Minecraft before restarting.

The top-level Accessibility switch defaults to OFF. Turning it on exposes 110%, 125%, and 150% panel sizes, adds fuller keyboard/narrator usage guidance, and gives explicit reasons when a dependent setting is unavailable. It does not force a color palette or background. Turning it off returns any panel above 100% to Normal (100%); sizes from 60% through 100% are preserved.

Optional 1MoreBlock CMI controls

The Details setting named CMI defaults to OFF. When enabled, Locator HUD considers the capability only for the exact original multiplayer entry 1moreblock.com (optionally with a port). Before any controls appear, the server must advertise the dedicated channel and return a fresh Ed25519-signed session bound to this connection, the current player UUID, a strictly increasing message sequence, live permissions, supported presets, movement type, and a short expiry. A hostname, resolved address, MOTD, brand, command tree, chat message, or channel name is never enough by itself.

The row identifies the signed WALK or FLY state and includes only the currently permitted , 2.5×, and values. Open Chat to click a preset; ordinary gameplay clicks are never captured. The bridge rechecks CMI and the player's permissions at action time, dispatches the movement-specific command as that player, and reports the Paper walk/fly value after the command has taken effect. The client never changes or guesses the value optimistically.

Missing CMI, a missing bridge permission, unsupported CMI, a bad signature, malformed, replayed, or rolled-back data, a channel unregister, a disconnect or transfer, an expired heartbeat, denial, or failed readback removes the capability. A newer signed permission snapshot is required before a denied or failed session can expose controls again. Connecting through any other saved address does not register the receiver at all. The rest of Locator HUD continues to work normally.

Server-restricted debug information

Some servers enable Minecraft's built-in reduced-debug state. Locator HUD reads the supported state already maintained on the local player and responds to changes while connected. While the restriction is active:

  • decimal and containing-block coordinate rows are hidden;
  • the Overworld–Nether coordinate lens is hidden;
  • F8 coordinate copying is refused without changing the existing clipboard; and
  • block, fluid, and entity target sampling stops, any lingered target values are cleared, and their rows are hidden.

World name, view direction, view angles, biome information, biome transitions, locally observed movement speed, and visual settings remain available. The restriction never rewrites the player's configured choices; those choices automatically take effect again when full debug information is available. Enforcement is automatic and has no client-side override. Locator HUD does not inspect packets or add custom networking to implement it.

Without Mod Menu, the HUD and all three key mappings still work normally; assign Open Locator HUD settings once to retain direct in-game configuration access. Configuration is stored in config/locator-hud.json; the optional Saved setup uses config/locator-hud-saved-setup.json. Close the client before editing either file manually.

Existing unversioned and schema-1 configurations are migrated automatically to schema 2. If the main configuration is malformed, the original is preserved as a dated .broken.json backup before safe defaults are written. A malformed Saved setup is backed up and left unavailable until a new setup is saved. If a required backup cannot be created—or either file belongs to a newer schema—the protected file is not overwritten; the main configuration uses defaults in memory, while a protected Saved setup remains unavailable.

Configuration reference

AreaSettingDefaultChoices or behavior
GlobalHUDONShows or hides the entire HUD.
GlobalAccessibilityOFFAdds 110%, 125%, and 150% size choices plus expanded keyboard/narrator guidance and disabled-control explanations. It never forces Colors or Background. Turning it off returns sizes above 100% to Normal (100%).
GlobalColorsOceanNone (all white), Duo-tone, Ocean, Amethyst, Emerald, Ember, Frost, Rose, or Gold; shared by both panels.
GlobalBiome-aware colorsOFFThe nameless checkbox beside Colors has the tooltip aibo magic. When checked, it uses only the current local biome and column height to select an existing underground, cold, warm, or temperate theme. A short delay and gradual blend prevent border flicker. Unchecking it immediately restores the saved Colors choice.
GlobalText shadowONShared by both panels.
GlobalPanel shadowONShared by both panels and available when at least one enabled panel uses a non-OFF background.
GlobalCopy formatPlainPlain produces X … Y … Z … / World; Vanilla TP produces /minecraft:teleport @s …; CMI tppos produces /cmi tppos -p:<playername> … <world>. All use Decimal precision. The command formats are copied templates only and require the relevant server command and permission.
SetupBuilt-in presetMinimal selected, not appliedMinimal, Explorer, Builder, or Privacy. Applying changes existing content, visibility, sizes, and backgrounds while retaining the manual Colors choice, biome-aware color override, panel positions and width limits, shadows, and Copy format. Every resulting setting remains editable. Privacy hides exact location rows in this HUD only; it does not mask F3 or other mods.
SetupSaved setupEmpty until savedSave current setup writes one separate local slot. Replacing it and restoring it require confirmation; restore replaces all current settings. A transient failure retains and retries the exact requested snapshot and reports both failure and recovery in game.
SetupPlace panelsDefault corners, zero offsetsOpens an explicit live editor for dragging the main and details panels. The nearest corner is selected automatically, offsets snap within 6 GUI pixels and are limited to ±64, and Reset positions changes only placement. Normal gameplay remains non-interactive.
SetupResetRequires confirmation before restoring factory defaults. It does not modify the Saved setup slot.
MainShow main panelONIndependently shows or hides the main panel.
MainMain positionTop / LeftTop / Left, Top / Right, Bottom / Left, or Bottom / Right. Choosing a corner here clears the main panel's fine offset; Place panels can add a small offset.
MainCoordinate displayXYZ onlyXYZ only, block XYZ only, XYZ plus block, or none. Coordinate rows are temporarily hidden when the server enables reduced debug information.
MainDecimal precision1 decimalNone rounds XYZ to whole numbers; 1 or 2 decimal places are also available. This control is available when coordinate display includes XYZ or the coordinate lens is on.
MainOW / Nether lensOFFIn the vanilla Overworld, shows approximate corresponding Nether X/Z coordinates; in the vanilla Nether, shows approximate corresponding Overworld X/Z coordinates. Uses Decimal precision, does not locate portals or guarantee safety, and is hidden under server-provided reduced debug.
MainWorld nameON (behind)ON (in front), ON (behind), or OFF.
MainView directionONON shows the existing four-way cardinal name, ON (with details) adds eight-way directions and a compact signed-axis hint such as Northeast [+X/-Z], and OFF hides it.
MainView anglesOFFShows compact yaw and pitch values; when view direction is also enabled, they appear beside it.
MainAngle decimalsOFFWhole degrees when OFF, or 1 or 2 decimal places; available when view angles are on.
MainMain sizeNormal (100%)Normally snaps to 60%, 70%, 80%, 90%, or 100%. Accessibility adds 110%, 125%, and 150%.
MainMin / max widthAuto / AutoEach bound can stay automatic or use 120, 160, 200, 240, 280, or 320 GUI pixels before Main size scaling. A crossing change moves the companion bound to the same value. Long values are shortened where needed, fixed labels retain a small intrinsic floor, and current screen space is always the final ceiling.
MainMain backgroundBalanced (72%)OFF, 7%, 24%, 55%, 72%, 88%, or 100%.
DetailsShow details panelONIndependently enables the details/target panel. It does not render until at least one details row is visible.
DetailsDetails positionTop / RightTop / Left, Top / Right, Bottom / Left, or Bottom / Right. Choosing a corner here clears the details panel's fine offset; Place panels can add a small offset. A zero-offset details panel automatically stacks when it shares the main panel's corner.
DetailsBiomeOFFShows the biome at the player's current position.
DetailsBiome changeOFFBriefly shows Previous → Current for three seconds after the biome beneath the player changes. It uses only the current client-known biome and does not scan or retain discovery history. When the normal Biome row is enabled, the notice temporarily replaces its value.
DetailsMovement speedOFFShows locally observed three-dimensional movement in blocks per second, including ascent and descent, smoothed over half a second. It does not read or change CMI speed.
DetailsCMIOFFShows signed, server-permitted CMI walk/fly multiplier presets only on an authenticated connection entered as 1moreblock.com. It remains absent on every other server and accepts preset clicks only while Chat is open.
DetailsTarget block, fluid, and entityAll OFFThree independent crosshair-target rows. Empty enabled rows show an em dash unless auto-hide is on. Target sampling and rows are disabled under server-provided reduced debug.
DetailsTarget namesAPI accurateAPI accurate shows the full stable namespaced identifier, such as minecraft:oak_log. Friendly uses Minecraft's localized player-facing name, such as Oak Log, with the identifier as a safe fallback.
DetailsAuto-hide empty valuesOFFHides empty block, fluid, and entity rows; does not hide an enabled biome row. Target linger may delay hiding briefly. If no rows remain visible, the entire details panel does not render.
DetailsTarget lingerOFFKeeps each last non-empty target value visible for 0.5 seconds after the crosshair moves away.
DetailsDetails sizeCompact (80%)Normally snaps to 60%, 70%, 80%, 90%, or 100%. Accessibility adds 110%, 125%, and 150%.
DetailsMin / max widthAuto / AutoUses the same automatic or 120–320 GUI-pixel base widths, crossing-bound repair, value shortening, intrinsic label floor, and final screen-space ceiling as the main panel.
DetailsDetails backgroundOFF (minimal)OFF, 7%, 24%, 55%, 72%, 88%, or 100%.

Localization

The complete English fallback is src/client/resources/assets/locatorhud/lang/en_us.json. Every configuration label, option choice, tooltip, confirmation, key-binding label, and local status message uses a translation key; environment-neutral option types store only those keys and never depend on Minecraft text components.

Community translations can be contributed as src/client/resources/assets/locatorhud/lang/<locale>.json, using Minecraft's lowercase locale filename such as de_de.json or nl_nl.json. Copy the English file, translate JSON values only, and keep every key plus formatting placeholders such as %s and %% unchanged. A clean build rejects any production translation key that is missing from the English fallback.

Screenshots

These screenshots were captured from the tested 1.22.0 Snapshot Public Beta 2. The gameplay HUD examples remain representative of current layouts. The configuration-screen image records the Beta 2 interface and therefore predates the responsive grouped layout, Setup controls, copy formats, target-name options, panel width limits, and biome-aware color checkbox documented above.

Main and biome panelsDecimal and block coordinates
Locator HUD showing rounded XYZ coordinates, view angles, and a separate Plains biome panel in the top-left corner.Locator HUD showing decimal XYZ, containing-block coordinates, yaw, and pitch in the top-left corner.

Configuration screen with live HUD preview

Minecraft gameplay with the 1MB Locator HUD configuration screen open and both HUD panels visible.

Commands and networking

The ordinary HUD registers or executes no commands, performs no telemetry or remote calls, and requires no server-side setup. F8 can place command-shaped text on the local clipboard only after an explicit key press and only when reduced debug permits coordinates; it never sends or executes that text. The namespaced Vanilla TP format requires a server that exposes namespaced vanilla commands and grants teleport permission. The CMI copy format follows the documented tppos order and permission model; its client-known dimension path may need editing when the server uses a different CMI world name.

The single networking exception is the optional locatorhud:cmi_speed plugin-message protocol described above. Its receiver is installed per connection only after the exact original 1MoreBlock entry passes the local prefilter. Every capability and result must then verify against the client-pinned public key. The separate Paper bridge is not bundled with the Fabric JAR, and proprietary CMI/CMILib JARs and the private signing key are never repository or release inputs.

Building from source

The Gradle wrapper is included. With JDK 25 available, run:

./gradlew clean build

On Windows, use gradlew.bat clean build instead.

The verified runtime JAR, source JAR, and runtime checksum are written to:

build/libs/1MB-Locator-HUD-1.55.0.jar
build/libs/1MB-Locator-HUD-1.55.0-sources.jar
build/libs/1MB-Locator-HUD-1.55.0.jar.sha256

The clean build runs the unit-test suite, treats Java source warnings as errors, rejects server APIs, unaudited networking outside the narrowly allowlisted CMI client boundary, telemetry, custom command registration, and location logging, and verifies the runtime JAR's client-only metadata, dependency floors, icon, and translations. The Gradle distribution and resolved build dependencies are checksum-verified.

Build the separately deployed Paper bridge with:

./gradlew -p bridge clean build

Its JAR is written under bridge/build/libs/. It compiles only against Paper API; CMI 9.8.9.8 and CMILib 1.5.9.9 are separately licensed runtime inputs and are not downloaded, bundled, or published by this project. The nested build has its own strict dependency checksums and verifies that the runtime JAR contains only bridge classes and required metadata. See the bridge deployment guide.

To run only the full unit-test suite:

./gradlew test

Two separate production-client smoke tests launch the built mod with Fabric API, exercise focused configuration-screen regressions, and verify operation both without and with optional Mod Menu:

./gradlew runClientSmokeWithoutModMenu
./gradlew runClientSmokeWithModMenu

Performance and retention diagnostics are opt-in and are not part of the normal build or CI gates. To launch the production client without Mod Menu under a bounded Java 25 Flight Recorder profile, run:

./gradlew runClientProfile

Exercise the HUD in a representative world, including the desired worst-case settings, and close Minecraft normally to finish build/profiles/locatorhud-client.jfr. Shutdown can take a little longer because the diagnostic records paths from suspected retained objects to their garbage-collection roots. The task prints hot methods, sampled allocation sites, and memory-leak candidates when the client exits. Those candidates are useful for comparing repeated runs, but they are not proof of a leak by themselves.

For a repeatable configuration-screen stress run, use:

./gradlew runClientUiSoak
./gradlew runClientUiSoak -Plocatorhud.uiSoakIterations=1000

The first command performs 250 cycles by default; explicit values from 1 through 10,000 are accepted. Each cycle rebuilds accessibility-dependent controls, applies a rotating preset, opens and closes panel placement, closes the settings screen, and flushes persistence. Every closed settings and placement screen is tracked through a weak reference, and the task fails if any remain reachable after bounded full-GC attempts. The client runs under a 512 MiB heap ceiling; an out-of-memory failure exits immediately and writes build/profiles/locatorhud-ui-soak-oom.hprof for diagnosis. Its bounded JFR recording is written to build/profiles/locatorhud-ui-soak.jfr, and hot-method, allocation, and statistical retention views are printed on exit.

The regular GitHub Actions workflow runs the strict clean build and both production-client variants on Java 25. A separate release-only workflow must run from an existing version tag on main; it repeats those gates, revalidates the remote tag, verifies and attests the exact runtime JAR through GitHub and Sigstore, uploads the JAR plus checksum to a draft release, byte-compares both draft assets, and only then publishes that verified draft. Every third-party action is pinned to an immutable commit, audited local actions are confined to .github/actions, and the clean build rejects mutable or dynamic action references.

Project structure

  • src/main/java: environment-neutral formatting, layout, option models, panel-content plans, width and drag-placement policies, reduced-debug disclosure policy, immutable HUD snapshots, sampling schedules, validated settings, configuration storage, save debounce/retry policy, and the bounded signed CMI protocol/session validator.
  • src/client/java: Fabric client initialization, centralized key mappings and explicit user actions, tick-owned HUD sampling with read-only render snapshots, rendering and semantic hitbox tracking, crosshair targeting, the narrowly scoped CMI connection controller, the persistence-aware configuration mutation facade, and focused configuration/placement UI builders.
  • src/main/resources: Fabric metadata and the mod icon.
  • src/client/resources: client translations.
  • src/test/java: unit tests for formatting, display modes, exhaustive row-plan matrices, geometry and drag-placement boundaries, responsive screen policy, visibility rules, sampling cadence, theme classification and blending, presets and Saved setup, discrete slider behavior, save debounce/retry transitions, configuration migration and recovery, plus deterministic long-run state churn.
  • src/test/resources: versioned legacy-configuration fixtures used by migration tests.
  • src/gametest: an isolated Fabric client-test mod used for production startup, focused configuration-screen smoke tests, and the opt-in UI soak; it is not packaged in the release JAR.
  • bridge: a separate Paper 26.2 CMI speed bridge project and deployment guide; its artifact is never embedded in the Fabric JAR.
  • .github/workflows/ci.yml: the pinned Java 25 build, policy, packaging, checksum, and production-client checks.
  • .github/workflows/release.yml: the tag-bound build, smoke-test, GitHub/Sigstore attestation, and guarded GitHub release publisher.

Project links

License

Copyright © 2026 mrfloris. All rights reserved. See LICENSE.

1MB Locator HUD was created by mrfloris and Codex.

About

A compact configurable coordinates, direction, biome, and crosshair-target HUD for Fabric 26.2

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - mrfdev/1MB-Locator-HUD: A compact configurable coordinates, direction, biome, and crosshair-target HUD for Fabric 26.2 · GitHub
Skip to content

Repository files navigation

1MB Locator HUD

1MB Locator HUD is a client-only Fabric mod for Minecraft Java Edition 26.2. It replaces coordinate-heavy F3 use with compact, configurable main and details panels. The ordinary HUD works in singleplayer and on any compatible server without a server plugin. A separate, default-off CMI speed capability is available only when the exact 1moreblock.com entry proves itself through the signed 1MoreBlock bridge.

The mod was made for 1MoreBlock.com, a public Java Edition survival Minecraft server currently running Minecraft 26.2. All location, direction, biome, target, visual, copying, and observed-speed features remain server-independent. On every non-1MoreBlock server, the optional CMI receiver is never installed and its controls remain absent and inert.

Locator HUD icon

Release status

The feature, configuration, build, installation, and download references below describe the tested 1.55.0 Snapshot Public Beta 5. It remains a prerelease and should receive broader player testing before it is treated as stable. Please report beta feedback and problems through the issue tracker.

Features

  • Rounded whole-number XYZ, one- or two-decimal XYZ, containing-block XYZ, both coordinate rows, or neither.
  • Optional Overworld–Nether coordinate lens that shows the approximate mathematical X/Z counterpart without claiming that a portal exists or a destination is safe.
  • Optional friendly world/dimension name before or after the first coordinate row. When coordinates are hidden, the world name uses its own row.
  • Three-state view direction: the default four-way cardinal name, an opt-in eight-way name with a compact signed-axis hint, or off. Compact yaw/pitch angles remain independently toggleable in whole, one-decimal, or two-decimal degrees.
  • Optional biome, three-second biome-transition, smoothed three-dimensional movement-speed, and crosshair-target block, fluid, and entity rows with Friendly or API-accurate names.
  • Optional, default-off CMI walk/fly multiplier controls for , 2.5×, and on authenticated 1MoreBlock sessions. The row shows only server-permitted presets, accepts clicks only while Chat is open, and updates only from signed authoritative results.
  • Optional auto-hide keeps empty target rows compact, while 0.5-second target linger prevents flicker over block edges.
  • Independently visible and positioned main and details panels. A live editor can drag either panel near any corner with small, recoverable X/Y offsets; an unmodified details panel stacks vertically when both panels share a corner.
  • Independent five-stop size sliders at 60%, 70%, 80%, 90%, and 100% for each panel. A default-off Accessibility switch adds 110%, 125%, and 150% choices while retaining screen-edge clamping.
  • Independent minimum- and maximum-width controls for each panel, defaulting to automatic content sizing with optional 120–320 GUI-pixel base widths and final screen-edge clamping.
  • Independent seven-stop background sliders at OFF, 7%, 24%, 55%, 72%, 88%, and 100%. OFF uses a compact backgroundless layout.
  • Shared text and panel shadows plus nine color schemes: None (all white), Duo-tone, Ocean, Amethyst, Emerald, Ember, Frost, Rose, and Gold.
  • Optional default-off biome-aware colors, enabled by the nameless aibo magic checkbox beside Colors, smoothly switch among existing themes for underground, cold, warm, and temperate local environments without replacing the saved manual theme.
  • Explicit coordinate copying in Plain, namespaced Vanilla TP, or CMI tppos format. The remappable F8 action writes locally to the clipboard and never runs or sends the copied text.
  • Automatically respects Minecraft's server-provided reduced-debug state: coordinate rows, the coordinate lens, coordinate copying, and target sampling/display are unavailable while the server restricts them. Direction, biome, and locally observed speed remain available.
  • Four built-in, fully editable Minimal, Explorer, Builder, and Privacy presets, plus exactly one separate local Saved setup slot for preserving a preferred configuration.
  • Remappable global visibility (F7 by default), coordinate-copy (F8 by default), and configuration-screen (unbound by default) key mappings, plus optional Mod Menu integration with responsive scrolling, wide two-column and narrow single-column layouts, near-white setting names, color-coded state labels, and one-second hover tooltips. Accessibility mode adds expanded keyboard/narrator guidance and explains why dependent controls are unavailable.
  • Translation-backed configuration labels, option values, tooltips, confirmations, and key-binding text, with a complete English fallback and support for community locale files.
  • Automatically saved, backward-compatible client configuration in config/locator-hud.json, with brief client-thread debouncing, visible failure/recovery notices, and bounded automatic retries that retain unsaved values in memory.

Requirements

Installing Snapshot Public Beta 5

  1. Install Fabric Loader for Minecraft 26.2.
  2. Download Fabric API and 1MB-Locator-HUD-1.55.0.jar.
  3. Put both JAR files in the client instance's mods/ folder.
  4. Optionally add Mod Menu for the in-game configuration screen.
  5. Launch Minecraft with the Fabric profile.

Verifying release downloads

Starting with Snapshot Public Beta 5, GitHub publishes the runtime JAR together with its .sha256 file and GitHub/Sigstore build provenance. The release notes contain commands specialized for that version.

The checksum detects any byte change relative to the published digest:

# Linux
sha256sum --check 1MB-Locator-HUD-<version>.jar.sha256
# macOS
shasum -a 256 --check 1MB-Locator-HUD-<version>.jar.sha256

GitHub CLI can additionally verify that the exact JAR was attested by this repository's release workflow, from the expected release tag, on a GitHub-hosted runner:

gh attestation verify 1MB-Locator-HUD-<version>.jar \
--repo mrfdev/1MB-Locator-HUD \
--signer-workflow mrfdev/1MB-Locator-HUD/.github/workflows/release.yml \
--source-ref refs/tags/v<version> \
--deny-self-hosted-runners

Each release's specialized command also pins the source commit recorded by the attestation. An attestation proves artifact integrity and build provenance; it does not claim that the code is bug-free or replace source review and testing. See RELEASING.md for the guarded publishing process.

Usage

Press F7 in game to show or hide the entire HUD. Minecraft displays a short enabled/disabled confirmation, and the binding can be changed in the Controls screen under Locator HUD.

Press F8 to copy your current coordinates using the configured Copy format and Decimal precision. The binding is remappable under Locator HUD. This action only updates the local clipboard and shows a confirmation; it never opens chat, runs the copied command, or sends it to the server. If the connected server enables reduced debug information, copying is refused and the existing clipboard is left unchanged.

To configure the mod without Mod Menu, assign Open Locator HUD settings in Minecraft's Controls screen under Locator HUD. It intentionally defaults to unbound to avoid conflicting with existing controls. The assigned key opens the same complete configuration screen from gameplay or another screen.

With Mod Menu installed, open Mods, select 1MB Locator HUD, and use its configuration button. Changes preview immediately and save automatically after a brief pause; slider and panel drags save their final value on release, and Done flushes pending main-setting changes before returning to the previous screen. The Setup section can apply one of four built-in presets, save and restore exactly one preferred setup, or open Place panels. In that explicit editor, drag either outlined panel near a corner; hidden and empty panels receive labeled fallback handles. Reset positions restores only the default panel corners and offsets. The normal gameplay HUD never captures clicks. Reset requires confirmation before restoring all factory defaults and never deletes the separate Saved setup.

If either configuration file cannot be written, Minecraft shows a local toast instead of leaving the problem only in the log. Live HUD changes remain active, and the mod retries the newest main settings every five seconds until they are stored. A failed Save current setup keeps and retries the exact snapshot requested at that moment on its own five-second schedule, even if live settings are edited or flushed afterward. Recovery is reported once. Files protected because they use a newer schema or could not be backed up are never retried or overwritten automatically; the unavailable Saved setup action explains that the file must be handled outside Minecraft before restarting.

The top-level Accessibility switch defaults to OFF. Turning it on exposes 110%, 125%, and 150% panel sizes, adds fuller keyboard/narrator usage guidance, and gives explicit reasons when a dependent setting is unavailable. It does not force a color palette or background. Turning it off returns any panel above 100% to Normal (100%); sizes from 60% through 100% are preserved.

Optional 1MoreBlock CMI controls

The Details setting named CMI defaults to OFF. When enabled, Locator HUD considers the capability only for the exact original multiplayer entry 1moreblock.com (optionally with a port). Before any controls appear, the server must advertise the dedicated channel and return a fresh Ed25519-signed session bound to this connection, the current player UUID, a strictly increasing message sequence, live permissions, supported presets, movement type, and a short expiry. A hostname, resolved address, MOTD, brand, command tree, chat message, or channel name is never enough by itself.

The row identifies the signed WALK or FLY state and includes only the currently permitted , 2.5×, and values. Open Chat to click a preset; ordinary gameplay clicks are never captured. The bridge rechecks CMI and the player's permissions at action time, dispatches the movement-specific command as that player, and reports the Paper walk/fly value after the command has taken effect. The client never changes or guesses the value optimistically.

Missing CMI, a missing bridge permission, unsupported CMI, a bad signature, malformed, replayed, or rolled-back data, a channel unregister, a disconnect or transfer, an expired heartbeat, denial, or failed readback removes the capability. A newer signed permission snapshot is required before a denied or failed session can expose controls again. Connecting through any other saved address does not register the receiver at all. The rest of Locator HUD continues to work normally.

Server-restricted debug information

Some servers enable Minecraft's built-in reduced-debug state. Locator HUD reads the supported state already maintained on the local player and responds to changes while connected. While the restriction is active:

  • decimal and containing-block coordinate rows are hidden;
  • the Overworld–Nether coordinate lens is hidden;
  • F8 coordinate copying is refused without changing the existing clipboard; and
  • block, fluid, and entity target sampling stops, any lingered target values are cleared, and their rows are hidden.

World name, view direction, view angles, biome information, biome transitions, locally observed movement speed, and visual settings remain available. The restriction never rewrites the player's configured choices; those choices automatically take effect again when full debug information is available. Enforcement is automatic and has no client-side override. Locator HUD does not inspect packets or add custom networking to implement it.

Without Mod Menu, the HUD and all three key mappings still work normally; assign Open Locator HUD settings once to retain direct in-game configuration access. Configuration is stored in config/locator-hud.json; the optional Saved setup uses config/locator-hud-saved-setup.json. Close the client before editing either file manually.

Existing unversioned and schema-1 configurations are migrated automatically to schema 2. If the main configuration is malformed, the original is preserved as a dated .broken.json backup before safe defaults are written. A malformed Saved setup is backed up and left unavailable until a new setup is saved. If a required backup cannot be created—or either file belongs to a newer schema—the protected file is not overwritten; the main configuration uses defaults in memory, while a protected Saved setup remains unavailable.

Configuration reference

AreaSettingDefaultChoices or behavior
GlobalHUDONShows or hides the entire HUD.
GlobalAccessibilityOFFAdds 110%, 125%, and 150% size choices plus expanded keyboard/narrator guidance and disabled-control explanations. It never forces Colors or Background. Turning it off returns sizes above 100% to Normal (100%).
GlobalColorsOceanNone (all white), Duo-tone, Ocean, Amethyst, Emerald, Ember, Frost, Rose, or Gold; shared by both panels.
GlobalBiome-aware colorsOFFThe nameless checkbox beside Colors has the tooltip aibo magic. When checked, it uses only the current local biome and column height to select an existing underground, cold, warm, or temperate theme. A short delay and gradual blend prevent border flicker. Unchecking it immediately restores the saved Colors choice.
GlobalText shadowONShared by both panels.
GlobalPanel shadowONShared by both panels and available when at least one enabled panel uses a non-OFF background.
GlobalCopy formatPlainPlain produces X … Y … Z … / World; Vanilla TP produces /minecraft:teleport @s …; CMI tppos produces /cmi tppos -p:<playername> … <world>. All use Decimal precision. The command formats are copied templates only and require the relevant server command and permission.
SetupBuilt-in presetMinimal selected, not appliedMinimal, Explorer, Builder, or Privacy. Applying changes existing content, visibility, sizes, and backgrounds while retaining the manual Colors choice, biome-aware color override, panel positions and width limits, shadows, and Copy format. Every resulting setting remains editable. Privacy hides exact location rows in this HUD only; it does not mask F3 or other mods.
SetupSaved setupEmpty until savedSave current setup writes one separate local slot. Replacing it and restoring it require confirmation; restore replaces all current settings. A transient failure retains and retries the exact requested snapshot and reports both failure and recovery in game.
SetupPlace panelsDefault corners, zero offsetsOpens an explicit live editor for dragging the main and details panels. The nearest corner is selected automatically, offsets snap within 6 GUI pixels and are limited to ±64, and Reset positions changes only placement. Normal gameplay remains non-interactive.
SetupResetRequires confirmation before restoring factory defaults. It does not modify the Saved setup slot.
MainShow main panelONIndependently shows or hides the main panel.
MainMain positionTop / LeftTop / Left, Top / Right, Bottom / Left, or Bottom / Right. Choosing a corner here clears the main panel's fine offset; Place panels can add a small offset.
MainCoordinate displayXYZ onlyXYZ only, block XYZ only, XYZ plus block, or none. Coordinate rows are temporarily hidden when the server enables reduced debug information.
MainDecimal precision1 decimalNone rounds XYZ to whole numbers; 1 or 2 decimal places are also available. This control is available when coordinate display includes XYZ or the coordinate lens is on.
MainOW / Nether lensOFFIn the vanilla Overworld, shows approximate corresponding Nether X/Z coordinates; in the vanilla Nether, shows approximate corresponding Overworld X/Z coordinates. Uses Decimal precision, does not locate portals or guarantee safety, and is hidden under server-provided reduced debug.
MainWorld nameON (behind)ON (in front), ON (behind), or OFF.
MainView directionONON shows the existing four-way cardinal name, ON (with details) adds eight-way directions and a compact signed-axis hint such as Northeast [+X/-Z], and OFF hides it.
MainView anglesOFFShows compact yaw and pitch values; when view direction is also enabled, they appear beside it.
MainAngle decimalsOFFWhole degrees when OFF, or 1 or 2 decimal places; available when view angles are on.
MainMain sizeNormal (100%)Normally snaps to 60%, 70%, 80%, 90%, or 100%. Accessibility adds 110%, 125%, and 150%.
MainMin / max widthAuto / AutoEach bound can stay automatic or use 120, 160, 200, 240, 280, or 320 GUI pixels before Main size scaling. A crossing change moves the companion bound to the same value. Long values are shortened where needed, fixed labels retain a small intrinsic floor, and current screen space is always the final ceiling.
MainMain backgroundBalanced (72%)OFF, 7%, 24%, 55%, 72%, 88%, or 100%.
DetailsShow details panelONIndependently enables the details/target panel. It does not render until at least one details row is visible.
DetailsDetails positionTop / RightTop / Left, Top / Right, Bottom / Left, or Bottom / Right. Choosing a corner here clears the details panel's fine offset; Place panels can add a small offset. A zero-offset details panel automatically stacks when it shares the main panel's corner.
DetailsBiomeOFFShows the biome at the player's current position.
DetailsBiome changeOFFBriefly shows Previous → Current for three seconds after the biome beneath the player changes. It uses only the current client-known biome and does not scan or retain discovery history. When the normal Biome row is enabled, the notice temporarily replaces its value.
DetailsMovement speedOFFShows locally observed three-dimensional movement in blocks per second, including ascent and descent, smoothed over half a second. It does not read or change CMI speed.
DetailsCMIOFFShows signed, server-permitted CMI walk/fly multiplier presets only on an authenticated connection entered as 1moreblock.com. It remains absent on every other server and accepts preset clicks only while Chat is open.
DetailsTarget block, fluid, and entityAll OFFThree independent crosshair-target rows. Empty enabled rows show an em dash unless auto-hide is on. Target sampling and rows are disabled under server-provided reduced debug.
DetailsTarget namesAPI accurateAPI accurate shows the full stable namespaced identifier, such as minecraft:oak_log. Friendly uses Minecraft's localized player-facing name, such as Oak Log, with the identifier as a safe fallback.
DetailsAuto-hide empty valuesOFFHides empty block, fluid, and entity rows; does not hide an enabled biome row. Target linger may delay hiding briefly. If no rows remain visible, the entire details panel does not render.
DetailsTarget lingerOFFKeeps each last non-empty target value visible for 0.5 seconds after the crosshair moves away.
DetailsDetails sizeCompact (80%)Normally snaps to 60%, 70%, 80%, 90%, or 100%. Accessibility adds 110%, 125%, and 150%.
DetailsMin / max widthAuto / AutoUses the same automatic or 120–320 GUI-pixel base widths, crossing-bound repair, value shortening, intrinsic label floor, and final screen-space ceiling as the main panel.
DetailsDetails backgroundOFF (minimal)OFF, 7%, 24%, 55%, 72%, 88%, or 100%.

Localization

The complete English fallback is src/client/resources/assets/locatorhud/lang/en_us.json. Every configuration label, option choice, tooltip, confirmation, key-binding label, and local status message uses a translation key; environment-neutral option types store only those keys and never depend on Minecraft text components.

Community translations can be contributed as src/client/resources/assets/locatorhud/lang/<locale>.json, using Minecraft's lowercase locale filename such as de_de.json or nl_nl.json. Copy the English file, translate JSON values only, and keep every key plus formatting placeholders such as %s and %% unchanged. A clean build rejects any production translation key that is missing from the English fallback.

Screenshots

These screenshots were captured from the tested 1.22.0 Snapshot Public Beta 2. The gameplay HUD examples remain representative of current layouts. The configuration-screen image records the Beta 2 interface and therefore predates the responsive grouped layout, Setup controls, copy formats, target-name options, panel width limits, and biome-aware color checkbox documented above.

Main and biome panelsDecimal and block coordinates
Locator HUD showing rounded XYZ coordinates, view angles, and a separate Plains biome panel in the top-left corner.Locator HUD showing decimal XYZ, containing-block coordinates, yaw, and pitch in the top-left corner.

Configuration screen with live HUD preview

Minecraft gameplay with the 1MB Locator HUD configuration screen open and both HUD panels visible.

Commands and networking

The ordinary HUD registers or executes no commands, performs no telemetry or remote calls, and requires no server-side setup. F8 can place command-shaped text on the local clipboard only after an explicit key press and only when reduced debug permits coordinates; it never sends or executes that text. The namespaced Vanilla TP format requires a server that exposes namespaced vanilla commands and grants teleport permission. The CMI copy format follows the documented tppos order and permission model; its client-known dimension path may need editing when the server uses a different CMI world name.

The single networking exception is the optional locatorhud:cmi_speed plugin-message protocol described above. Its receiver is installed per connection only after the exact original 1MoreBlock entry passes the local prefilter. Every capability and result must then verify against the client-pinned public key. The separate Paper bridge is not bundled with the Fabric JAR, and proprietary CMI/CMILib JARs and the private signing key are never repository or release inputs.

Building from source

The Gradle wrapper is included. With JDK 25 available, run:

./gradlew clean build

On Windows, use gradlew.bat clean build instead.

The verified runtime JAR, source JAR, and runtime checksum are written to:

build/libs/1MB-Locator-HUD-1.55.0.jar
build/libs/1MB-Locator-HUD-1.55.0-sources.jar
build/libs/1MB-Locator-HUD-1.55.0.jar.sha256

The clean build runs the unit-test suite, treats Java source warnings as errors, rejects server APIs, unaudited networking outside the narrowly allowlisted CMI client boundary, telemetry, custom command registration, and location logging, and verifies the runtime JAR's client-only metadata, dependency floors, icon, and translations. The Gradle distribution and resolved build dependencies are checksum-verified.

Build the separately deployed Paper bridge with:

./gradlew -p bridge clean build

Its JAR is written under bridge/build/libs/. It compiles only against Paper API; CMI 9.8.9.8 and CMILib 1.5.9.9 are separately licensed runtime inputs and are not downloaded, bundled, or published by this project. The nested build has its own strict dependency checksums and verifies that the runtime JAR contains only bridge classes and required metadata. See the bridge deployment guide.

To run only the full unit-test suite:

./gradlew test

Two separate production-client smoke tests launch the built mod with Fabric API, exercise focused configuration-screen regressions, and verify operation both without and with optional Mod Menu:

./gradlew runClientSmokeWithoutModMenu
./gradlew runClientSmokeWithModMenu

Performance and retention diagnostics are opt-in and are not part of the normal build or CI gates. To launch the production client without Mod Menu under a bounded Java 25 Flight Recorder profile, run:

./gradlew runClientProfile

Exercise the HUD in a representative world, including the desired worst-case settings, and close Minecraft normally to finish build/profiles/locatorhud-client.jfr. Shutdown can take a little longer because the diagnostic records paths from suspected retained objects to their garbage-collection roots. The task prints hot methods, sampled allocation sites, and memory-leak candidates when the client exits. Those candidates are useful for comparing repeated runs, but they are not proof of a leak by themselves.

For a repeatable configuration-screen stress run, use:

./gradlew runClientUiSoak
./gradlew runClientUiSoak -Plocatorhud.uiSoakIterations=1000

The first command performs 250 cycles by default; explicit values from 1 through 10,000 are accepted. Each cycle rebuilds accessibility-dependent controls, applies a rotating preset, opens and closes panel placement, closes the settings screen, and flushes persistence. Every closed settings and placement screen is tracked through a weak reference, and the task fails if any remain reachable after bounded full-GC attempts. The client runs under a 512 MiB heap ceiling; an out-of-memory failure exits immediately and writes build/profiles/locatorhud-ui-soak-oom.hprof for diagnosis. Its bounded JFR recording is written to build/profiles/locatorhud-ui-soak.jfr, and hot-method, allocation, and statistical retention views are printed on exit.

The regular GitHub Actions workflow runs the strict clean build and both production-client variants on Java 25. A separate release-only workflow must run from an existing version tag on main; it repeats those gates, revalidates the remote tag, verifies and attests the exact runtime JAR through GitHub and Sigstore, uploads the JAR plus checksum to a draft release, byte-compares both draft assets, and only then publishes that verified draft. Every third-party action is pinned to an immutable commit, audited local actions are confined to .github/actions, and the clean build rejects mutable or dynamic action references.

Project structure

  • src/main/java: environment-neutral formatting, layout, option models, panel-content plans, width and drag-placement policies, reduced-debug disclosure policy, immutable HUD snapshots, sampling schedules, validated settings, configuration storage, save debounce/retry policy, and the bounded signed CMI protocol/session validator.
  • src/client/java: Fabric client initialization, centralized key mappings and explicit user actions, tick-owned HUD sampling with read-only render snapshots, rendering and semantic hitbox tracking, crosshair targeting, the narrowly scoped CMI connection controller, the persistence-aware configuration mutation facade, and focused configuration/placement UI builders.
  • src/main/resources: Fabric metadata and the mod icon.
  • src/client/resources: client translations.
  • src/test/java: unit tests for formatting, display modes, exhaustive row-plan matrices, geometry and drag-placement boundaries, responsive screen policy, visibility rules, sampling cadence, theme classification and blending, presets and Saved setup, discrete slider behavior, save debounce/retry transitions, configuration migration and recovery, plus deterministic long-run state churn.
  • src/test/resources: versioned legacy-configuration fixtures used by migration tests.
  • src/gametest: an isolated Fabric client-test mod used for production startup, focused configuration-screen smoke tests, and the opt-in UI soak; it is not packaged in the release JAR.
  • bridge: a separate Paper 26.2 CMI speed bridge project and deployment guide; its artifact is never embedded in the Fabric JAR.
  • .github/workflows/ci.yml: the pinned Java 25 build, policy, packaging, checksum, and production-client checks.
  • .github/workflows/release.yml: the tag-bound build, smoke-test, GitHub/Sigstore attestation, and guarded GitHub release publisher.

Project links

License

Copyright © 2026 mrfloris. All rights reserved. See LICENSE.

1MB Locator HUD was created by mrfloris and Codex.

About

A compact configurable coordinates, direction, biome, and crosshair-target HUD for Fabric 26.2

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages