
Reach Display
A configurable visual representation of your reach and hit distances
Автор: Wolren52,4 тыс.14обновлён 8 окт. 2026 г.
Механики игрыМини-игрыУтилиты
Описание
General
The goal of this mod is to allow you to display the distance between you and the enemy player/mob + see from how far your hits reached them. It's useful information that allows one to control combo distances and align look angles to optimise the distance. Everything — text size, color, placement, shadow, decimal places — is configurable.

The mod (as of 2.0.0) has 3 different displays:
-
Distance
Displays the distance from your eye to enemy hitbox -
Hit Distance
Displays the distance of your last hit -
Average Hit Distance
The average of either last X hits or local/global session hit distances
Dependencies
Future
I will continue supporting the mod for 1.17+, if you would like more options added then please request them
Галерея
Последние версии
Все версии →release
3.1.2-1.20.1-forge
3.1.2-1.20.1-forge8 окт. 2026 г.91Minecraft: 1.20.1forge
Что нового
# Changelog
## 3.1.2 - Colour Bands Fixed on 26.x, New Icon
### Fixed
- Colour bands and gradients did nothing on 26.1.2, 26.2 and 26.2 NeoForge: the resolved
colour was written to a variable that was never read, so the flat colour option always won
- The crosshair colour and the number were computed from two different distances and could
disagree; both read the same value now, smoothing and calculation method included
- The colour ignored the distance update rate, and the blocks/metres display mode never
applied on 1.20.1 through 1.21.11
- Band colouring defaults to off on fresh configs, like the other two displays
### Changed
- New mod icon across all builds, about 40% smaller file
## 3.1.1 - Forge + NeoForge Ports, Quilt Publishing Fixed
### Added
- **Forge 1.20.1 port** (`3.1.1-1.20.1-forge`): standalone ForgeGradle project. HUD rendering
via `RenderGuiEvent.Post` (Forge replaces `Minecraft.gui` with a `ForgeGui` subclass whose
`render` override bypasses any `Gui.render` mixin — event-based rendering is the reliable path).
Config via midnightlib 1.4.2-forge (the 1.9.x forge builds lack a refmap and crash Mojmap dev runs)
plus an F6 keybind that opens the config screen directly.
- **NeoForge ports**: `3.1.1-1.21.1-neoforge`, `3.1.1-1.21.11-neoforge`, `3.1.1-26.2-neoforge`
(moddev 2.0.141, runtime-verified).
- **Quilt releases now declare the quilt loader** on Modrinth and CurseForge (`fabric,quilt`
per subproject) — previously shipped as fabric-only.
- **Quilt runtime fixes**: `quilt.mod.json` license in object form (the strict SPDX string check
rejects `"ARR"`), plain `entrypoints` with fabric type names (`fabric-like:entrypoints` does not
exist in quilt-loader 0.30.x), quilt-loader pinned to 0.30.1-beta.2, loom `mods` block to silence
the dev-run discovery error.
- **Forge config reliability**: HUD drawing suppressed while a screen is open (no more
counter-artifacts behind the Options screen); midnightlib 1.4.2-forge pinned for 1.20.1.
## 3.1.0 - Eight-Version Coverage + Pipeline Fixes
### Added
- MixinExtras 0.5.4 dependency (self-contained via `include`)
- .editorconfig for consistent code style
- Dependabot tracking for GitHub Actions updates
- MC 26.1.2 support restored as `version-26_1_2` (v3.0.0 feature set, version `3.1.0-26.1.2`)
- New `version-26_2` subproject for MC 26.2 (version `3.1.0-26.2`); the HUD
extraction moved from `Gui.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` to
`Gui.extractRenderState(DeltaTracker, boolean, boolean)`, so the HUD mixin now targets
`Hud.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` which kept the old signature
- Weapons display: spear (stab) hits are tracked and shown on the hit/average displays on 26.1.2
- Shadow toggle and shadow color options on 1.18.2 and 1.19.4 (were always-on black shadows)
- Hit/average display mode (number / blocks / M) now applies on 1.20.1
- 26.1.2 build: MC 26.1+ ships unobfuscated, so the subproject uses the no-remap loom plugin without a mappings line
- Full 1.21.x coverage: new `version-1_21_1` (1.21.1-1.21.4) and `version-1_21_5` (1.21.5) subprojects;
1.21.x jars now declare exact supported game version ranges (`>=1.21.1 <=1.21.4` / `>=1.21.5 <=1.21.5` /
`>=1.21.6 <=1.21.11` — the client API broke at 1.21.5 and 1.21.6)
- Per-subproject `game_versions` publish matrix on Modrinth + CurseForge — no duplicate or
over-claimed game versions (1.20.1 bounded to <=1.20.6, 26.1.2 bounded to <=26.1.2)
- Publish dependency metadata: Modrinth now declares fabric-api and midnightlib as
required, modmenu as optional — launchers auto-install them for players (backfilled onto
the v3.0.0 and shipped with all 3.1.0 versions)
- Quilt builds fixed: each subproject now applies quilt-loom 1.15.1 (`-PuseQuilt=true`) instead of
fabric-loom, which cannot remap quilted-fabric-api (no `quilt.mod.json` support); the quilt build
was broken since it was introduced. Mixin API pulled in explicitly (quilt-loader does not bundle
it). 26.1.2 quilt build uses fabric-api directly (no quilted-fabric-api for 26.x) and declares
`fabric_api` in quilt.mod.json. CI now builds both loaders for all 8 subprojects.
### Infrastructure
- CI now builds each subproject separately (fail-fast disabled)
- Release workflow builds all versions, collects JARs, creates GitHub Release with changelog
- Changelog follows KeepAChangelog format for automated extraction
- CI and release workflows now build all 8 subprojects (26.x on JDK 25); CI triggers on `restructure`
- Modrinth dependency metadata backfilled retroactively on the published v3.0.0 versions
(fabric-api + midnightlib required, modmenu optional)
### Fixed
- 26.1.2: ray-hit-point distance no longer records hits against the wrong entity when the crosshair target differs from the attacked entity
- 26.1.2: `fabric.mod.json` depended on the non-existent `fabric-api` mod id instead of `fabric`
- All subprojects: `quilt.mod.json` license metadata said GPL-3.0 while v3.0.0+ is All Rights Reserved
- 26.1.2: hit distance no longer stays on screen forever — keep-last-distance and reset-time settings apply like on other versions
- 26.1.2/26.2: `fabric.mod.json` depends on `fabric-api` (the real mod id on 26.x) instead of the
`fabric` alias, which 26.x fabric-api jars no longer provide — the mod would not start otherwise
- Release pipeline: Modrinth publish skip-check always evaluated to "version exists" and silently
skipped every publish (the version-list endpoint ignores the `?version_number` query parameter);
the check now filters versions client-side
- Release pipeline: changelog extraction used a broken sed idiom that never looped and produced
headers plus one line (v3.0.0 shipped with empty release notes); extraction now reads the first
`## ` section body directly
- Release pipeline: CurseForge publish used `curseforge-relations`, an input name that only
existed in mc-publish v2 — v3 ignores it, so the published files carry no dependency relations;
renamed to `curseforge-dependencies` with the v3 `slug(type)` syntax (3.1.0 files on CurseForge
are unaffected; the fix applies from the next release)
## 3.0.0 — Multi-Version Restructure + Entity Filter
### Major Changes
- **License change** — Switched from GPL-3.0 to **All Rights Reserved (ARR)** for v3.0.0 and later. Old versions remain under GPL-3.0. Commercial redistribution and publishing forks under a different name are now explicitly prohibited.
- **Multi-project restructure** — Split into 4 version-specific subprojects:
- `version-1_17_1_18` (MC 1.18.2)
- `version-1_19` (MC 1.19.4)
- `version-1_20_1` (MC 1.20.1)
- `version-1_21_11` (MC 1.21.11)
- **Entity filter system** — New filter/EntityFilterHelper with whitelist/blacklist mode, category toggles (Players, Hostile, Passive, Boss, Other), and custom entity ID matching
- **Unified build config** — Shared Gradle configuration via root `build.gradle` (processResources, sourcesJar, publishing)
### Entity Filter
- Config entries: `entityFilterEnable`, `entityFilterMode` (WHITELIST/BLACKLIST), per-category toggles, `entityFilterCustomIDs`
- All 3 HUD display sections filtered with `!enable || shouldTrack(entity)`
- Works across all 7 supported versions
### Build System
- Root `build.gradle` with `subprojects` block for common config
- Added Fabric maven repository to all subprojects
- `org.gradle.parallel=true` for faster builds
- `--no-daemon` required (known daemon termination issue)
### Infrastructure
- `agents.md` — Project knowledge reference for AI-assisted development
- `.gitignore` — Added `*.ipr`, `*.iws`, `out/`, `*.log`, `Thumbs.db`, `.DS_Store`; fixed `/run/` → `run/` for subproject run dirs
- Community standards: CODE_OF_CONDUCT, CONTRIBUTING, SECURITY, issue & PR templates
- CI/CD: GitHub Actions (build, CodeQL, Scorecards, Dependabot auto-merge, stale issue management)
- Gradle updated to 9.5.0
- Java target updated to 21
### Fixes
- `run/` directories now properly excluded at subproject level
- IntelliJ workspace/project files (`.iws`, `.ipr`) excluded from version control
### Available Jars
| Version | File |
|---------|------|
| 1.18.2 | `reach_display-3.0.0-1.18.2.jar` |
| 1.19.4 | `reach_display-3.0.0-1.19.4.jar` |
| 1.20.1 | `reach_display-3.0.0-1.20.1.jar` |
| 1.21.11 | `reach_display-3.0.0-1.21.11.jar` |
release
3.1.2-26.2-neoforge
3.1.2-26.2-neoforge8 окт. 2026 г.23Minecraft: 26.2neoforge
Что нового
# Changelog
## 3.1.2 - Colour Bands Fixed on 26.x, New Icon
### Fixed
- Colour bands and gradients did nothing on 26.1.2, 26.2 and 26.2 NeoForge: the resolved
colour was written to a variable that was never read, so the flat colour option always won
- The crosshair colour and the number were computed from two different distances and could
disagree; both read the same value now, smoothing and calculation method included
- The colour ignored the distance update rate, and the blocks/metres display mode never
applied on 1.20.1 through 1.21.11
- Band colouring defaults to off on fresh configs, like the other two displays
### Changed
- New mod icon across all builds, about 40% smaller file
## 3.1.1 - Forge + NeoForge Ports, Quilt Publishing Fixed
### Added
- **Forge 1.20.1 port** (`3.1.1-1.20.1-forge`): standalone ForgeGradle project. HUD rendering
via `RenderGuiEvent.Post` (Forge replaces `Minecraft.gui` with a `ForgeGui` subclass whose
`render` override bypasses any `Gui.render` mixin — event-based rendering is the reliable path).
Config via midnightlib 1.4.2-forge (the 1.9.x forge builds lack a refmap and crash Mojmap dev runs)
plus an F6 keybind that opens the config screen directly.
- **NeoForge ports**: `3.1.1-1.21.1-neoforge`, `3.1.1-1.21.11-neoforge`, `3.1.1-26.2-neoforge`
(moddev 2.0.141, runtime-verified).
- **Quilt releases now declare the quilt loader** on Modrinth and CurseForge (`fabric,quilt`
per subproject) — previously shipped as fabric-only.
- **Quilt runtime fixes**: `quilt.mod.json` license in object form (the strict SPDX string check
rejects `"ARR"`), plain `entrypoints` with fabric type names (`fabric-like:entrypoints` does not
exist in quilt-loader 0.30.x), quilt-loader pinned to 0.30.1-beta.2, loom `mods` block to silence
the dev-run discovery error.
- **Forge config reliability**: HUD drawing suppressed while a screen is open (no more
counter-artifacts behind the Options screen); midnightlib 1.4.2-forge pinned for 1.20.1.
## 3.1.0 - Eight-Version Coverage + Pipeline Fixes
### Added
- MixinExtras 0.5.4 dependency (self-contained via `include`)
- .editorconfig for consistent code style
- Dependabot tracking for GitHub Actions updates
- MC 26.1.2 support restored as `version-26_1_2` (v3.0.0 feature set, version `3.1.0-26.1.2`)
- New `version-26_2` subproject for MC 26.2 (version `3.1.0-26.2`); the HUD
extraction moved from `Gui.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` to
`Gui.extractRenderState(DeltaTracker, boolean, boolean)`, so the HUD mixin now targets
`Hud.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` which kept the old signature
- Weapons display: spear (stab) hits are tracked and shown on the hit/average displays on 26.1.2
- Shadow toggle and shadow color options on 1.18.2 and 1.19.4 (were always-on black shadows)
- Hit/average display mode (number / blocks / M) now applies on 1.20.1
- 26.1.2 build: MC 26.1+ ships unobfuscated, so the subproject uses the no-remap loom plugin without a mappings line
- Full 1.21.x coverage: new `version-1_21_1` (1.21.1-1.21.4) and `version-1_21_5` (1.21.5) subprojects;
1.21.x jars now declare exact supported game version ranges (`>=1.21.1 <=1.21.4` / `>=1.21.5 <=1.21.5` /
`>=1.21.6 <=1.21.11` — the client API broke at 1.21.5 and 1.21.6)
- Per-subproject `game_versions` publish matrix on Modrinth + CurseForge — no duplicate or
over-claimed game versions (1.20.1 bounded to <=1.20.6, 26.1.2 bounded to <=26.1.2)
- Publish dependency metadata: Modrinth now declares fabric-api and midnightlib as
required, modmenu as optional — launchers auto-install them for players (backfilled onto
the v3.0.0 and shipped with all 3.1.0 versions)
- Quilt builds fixed: each subproject now applies quilt-loom 1.15.1 (`-PuseQuilt=true`) instead of
fabric-loom, which cannot remap quilted-fabric-api (no `quilt.mod.json` support); the quilt build
was broken since it was introduced. Mixin API pulled in explicitly (quilt-loader does not bundle
it). 26.1.2 quilt build uses fabric-api directly (no quilted-fabric-api for 26.x) and declares
`fabric_api` in quilt.mod.json. CI now builds both loaders for all 8 subprojects.
### Infrastructure
- CI now builds each subproject separately (fail-fast disabled)
- Release workflow builds all versions, collects JARs, creates GitHub Release with changelog
- Changelog follows KeepAChangelog format for automated extraction
- CI and release workflows now build all 8 subprojects (26.x on JDK 25); CI triggers on `restructure`
- Modrinth dependency metadata backfilled retroactively on the published v3.0.0 versions
(fabric-api + midnightlib required, modmenu optional)
### Fixed
- 26.1.2: ray-hit-point distance no longer records hits against the wrong entity when the crosshair target differs from the attacked entity
- 26.1.2: `fabric.mod.json` depended on the non-existent `fabric-api` mod id instead of `fabric`
- All subprojects: `quilt.mod.json` license metadata said GPL-3.0 while v3.0.0+ is All Rights Reserved
- 26.1.2: hit distance no longer stays on screen forever — keep-last-distance and reset-time settings apply like on other versions
- 26.1.2/26.2: `fabric.mod.json` depends on `fabric-api` (the real mod id on 26.x) instead of the
`fabric` alias, which 26.x fabric-api jars no longer provide — the mod would not start otherwise
- Release pipeline: Modrinth publish skip-check always evaluated to "version exists" and silently
skipped every publish (the version-list endpoint ignores the `?version_number` query parameter);
the check now filters versions client-side
- Release pipeline: changelog extraction used a broken sed idiom that never looped and produced
headers plus one line (v3.0.0 shipped with empty release notes); extraction now reads the first
`## ` section body directly
- Release pipeline: CurseForge publish used `curseforge-relations`, an input name that only
existed in mc-publish v2 — v3 ignores it, so the published files carry no dependency relations;
renamed to `curseforge-dependencies` with the v3 `slug(type)` syntax (3.1.0 files on CurseForge
are unaffected; the fix applies from the next release)
## 3.0.0 — Multi-Version Restructure + Entity Filter
### Major Changes
- **License change** — Switched from GPL-3.0 to **All Rights Reserved (ARR)** for v3.0.0 and later. Old versions remain under GPL-3.0. Commercial redistribution and publishing forks under a different name are now explicitly prohibited.
- **Multi-project restructure** — Split into 4 version-specific subprojects:
- `version-1_17_1_18` (MC 1.18.2)
- `version-1_19` (MC 1.19.4)
- `version-1_20_1` (MC 1.20.1)
- `version-1_21_11` (MC 1.21.11)
- **Entity filter system** — New filter/EntityFilterHelper with whitelist/blacklist mode, category toggles (Players, Hostile, Passive, Boss, Other), and custom entity ID matching
- **Unified build config** — Shared Gradle configuration via root `build.gradle` (processResources, sourcesJar, publishing)
### Entity Filter
- Config entries: `entityFilterEnable`, `entityFilterMode` (WHITELIST/BLACKLIST), per-category toggles, `entityFilterCustomIDs`
- All 3 HUD display sections filtered with `!enable || shouldTrack(entity)`
- Works across all 7 supported versions
### Build System
- Root `build.gradle` with `subprojects` block for common config
- Added Fabric maven repository to all subprojects
- `org.gradle.parallel=true` for faster builds
- `--no-daemon` required (known daemon termination issue)
### Infrastructure
- `agents.md` — Project knowledge reference for AI-assisted development
- `.gitignore` — Added `*.ipr`, `*.iws`, `out/`, `*.log`, `Thumbs.db`, `.DS_Store`; fixed `/run/` → `run/` for subproject run dirs
- Community standards: CODE_OF_CONDUCT, CONTRIBUTING, SECURITY, issue & PR templates
- CI/CD: GitHub Actions (build, CodeQL, Scorecards, Dependabot auto-merge, stale issue management)
- Gradle updated to 9.5.0
- Java target updated to 21
### Fixes
- `run/` directories now properly excluded at subproject level
- IntelliJ workspace/project files (`.iws`, `.ipr`) excluded from version control
### Available Jars
| Version | File |
|---------|------|
| 1.18.2 | `reach_display-3.0.0-1.18.2.jar` |
| 1.19.4 | `reach_display-3.0.0-1.19.4.jar` |
| 1.20.1 | `reach_display-3.0.0-1.20.1.jar` |
| 1.21.11 | `reach_display-3.0.0-1.21.11.jar` |
release
3.1.2-1.21.5
3.1.2-1.21.58 окт. 2026 г.39Minecraft: 1.21.5fabric, quilt
Что нового
# Changelog
## 3.1.2 - Colour Bands Fixed on 26.x, New Icon
### Fixed
- Colour bands and gradients did nothing on 26.1.2, 26.2 and 26.2 NeoForge: the resolved
colour was written to a variable that was never read, so the flat colour option always won
- The crosshair colour and the number were computed from two different distances and could
disagree; both read the same value now, smoothing and calculation method included
- The colour ignored the distance update rate, and the blocks/metres display mode never
applied on 1.20.1 through 1.21.11
- Band colouring defaults to off on fresh configs, like the other two displays
### Changed
- New mod icon across all builds, about 40% smaller file
## 3.1.1 - Forge + NeoForge Ports, Quilt Publishing Fixed
### Added
- **Forge 1.20.1 port** (`3.1.1-1.20.1-forge`): standalone ForgeGradle project. HUD rendering
via `RenderGuiEvent.Post` (Forge replaces `Minecraft.gui` with a `ForgeGui` subclass whose
`render` override bypasses any `Gui.render` mixin — event-based rendering is the reliable path).
Config via midnightlib 1.4.2-forge (the 1.9.x forge builds lack a refmap and crash Mojmap dev runs)
plus an F6 keybind that opens the config screen directly.
- **NeoForge ports**: `3.1.1-1.21.1-neoforge`, `3.1.1-1.21.11-neoforge`, `3.1.1-26.2-neoforge`
(moddev 2.0.141, runtime-verified).
- **Quilt releases now declare the quilt loader** on Modrinth and CurseForge (`fabric,quilt`
per subproject) — previously shipped as fabric-only.
- **Quilt runtime fixes**: `quilt.mod.json` license in object form (the strict SPDX string check
rejects `"ARR"`), plain `entrypoints` with fabric type names (`fabric-like:entrypoints` does not
exist in quilt-loader 0.30.x), quilt-loader pinned to 0.30.1-beta.2, loom `mods` block to silence
the dev-run discovery error.
- **Forge config reliability**: HUD drawing suppressed while a screen is open (no more
counter-artifacts behind the Options screen); midnightlib 1.4.2-forge pinned for 1.20.1.
## 3.1.0 - Eight-Version Coverage + Pipeline Fixes
### Added
- MixinExtras 0.5.4 dependency (self-contained via `include`)
- .editorconfig for consistent code style
- Dependabot tracking for GitHub Actions updates
- MC 26.1.2 support restored as `version-26_1_2` (v3.0.0 feature set, version `3.1.0-26.1.2`)
- New `version-26_2` subproject for MC 26.2 (version `3.1.0-26.2`); the HUD
extraction moved from `Gui.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` to
`Gui.extractRenderState(DeltaTracker, boolean, boolean)`, so the HUD mixin now targets
`Hud.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` which kept the old signature
- Weapons display: spear (stab) hits are tracked and shown on the hit/average displays on 26.1.2
- Shadow toggle and shadow color options on 1.18.2 and 1.19.4 (were always-on black shadows)
- Hit/average display mode (number / blocks / M) now applies on 1.20.1
- 26.1.2 build: MC 26.1+ ships unobfuscated, so the subproject uses the no-remap loom plugin without a mappings line
- Full 1.21.x coverage: new `version-1_21_1` (1.21.1-1.21.4) and `version-1_21_5` (1.21.5) subprojects;
1.21.x jars now declare exact supported game version ranges (`>=1.21.1 <=1.21.4` / `>=1.21.5 <=1.21.5` /
`>=1.21.6 <=1.21.11` — the client API broke at 1.21.5 and 1.21.6)
- Per-subproject `game_versions` publish matrix on Modrinth + CurseForge — no duplicate or
over-claimed game versions (1.20.1 bounded to <=1.20.6, 26.1.2 bounded to <=26.1.2)
- Publish dependency metadata: Modrinth now declares fabric-api and midnightlib as
required, modmenu as optional — launchers auto-install them for players (backfilled onto
the v3.0.0 and shipped with all 3.1.0 versions)
- Quilt builds fixed: each subproject now applies quilt-loom 1.15.1 (`-PuseQuilt=true`) instead of
fabric-loom, which cannot remap quilted-fabric-api (no `quilt.mod.json` support); the quilt build
was broken since it was introduced. Mixin API pulled in explicitly (quilt-loader does not bundle
it). 26.1.2 quilt build uses fabric-api directly (no quilted-fabric-api for 26.x) and declares
`fabric_api` in quilt.mod.json. CI now builds both loaders for all 8 subprojects.
### Infrastructure
- CI now builds each subproject separately (fail-fast disabled)
- Release workflow builds all versions, collects JARs, creates GitHub Release with changelog
- Changelog follows KeepAChangelog format for automated extraction
- CI and release workflows now build all 8 subprojects (26.x on JDK 25); CI triggers on `restructure`
- Modrinth dependency metadata backfilled retroactively on the published v3.0.0 versions
(fabric-api + midnightlib required, modmenu optional)
### Fixed
- 26.1.2: ray-hit-point distance no longer records hits against the wrong entity when the crosshair target differs from the attacked entity
- 26.1.2: `fabric.mod.json` depended on the non-existent `fabric-api` mod id instead of `fabric`
- All subprojects: `quilt.mod.json` license metadata said GPL-3.0 while v3.0.0+ is All Rights Reserved
- 26.1.2: hit distance no longer stays on screen forever — keep-last-distance and reset-time settings apply like on other versions
- 26.1.2/26.2: `fabric.mod.json` depends on `fabric-api` (the real mod id on 26.x) instead of the
`fabric` alias, which 26.x fabric-api jars no longer provide — the mod would not start otherwise
- Release pipeline: Modrinth publish skip-check always evaluated to "version exists" and silently
skipped every publish (the version-list endpoint ignores the `?version_number` query parameter);
the check now filters versions client-side
- Release pipeline: changelog extraction used a broken sed idiom that never looped and produced
headers plus one line (v3.0.0 shipped with empty release notes); extraction now reads the first
`## ` section body directly
- Release pipeline: CurseForge publish used `curseforge-relations`, an input name that only
existed in mc-publish v2 — v3 ignores it, so the published files carry no dependency relations;
renamed to `curseforge-dependencies` with the v3 `slug(type)` syntax (3.1.0 files on CurseForge
are unaffected; the fix applies from the next release)
## 3.0.0 — Multi-Version Restructure + Entity Filter
### Major Changes
- **License change** — Switched from GPL-3.0 to **All Rights Reserved (ARR)** for v3.0.0 and later. Old versions remain under GPL-3.0. Commercial redistribution and publishing forks under a different name are now explicitly prohibited.
- **Multi-project restructure** — Split into 4 version-specific subprojects:
- `version-1_17_1_18` (MC 1.18.2)
- `version-1_19` (MC 1.19.4)
- `version-1_20_1` (MC 1.20.1)
- `version-1_21_11` (MC 1.21.11)
- **Entity filter system** — New filter/EntityFilterHelper with whitelist/blacklist mode, category toggles (Players, Hostile, Passive, Boss, Other), and custom entity ID matching
- **Unified build config** — Shared Gradle configuration via root `build.gradle` (processResources, sourcesJar, publishing)
### Entity Filter
- Config entries: `entityFilterEnable`, `entityFilterMode` (WHITELIST/BLACKLIST), per-category toggles, `entityFilterCustomIDs`
- All 3 HUD display sections filtered with `!enable || shouldTrack(entity)`
- Works across all 7 supported versions
### Build System
- Root `build.gradle` with `subprojects` block for common config
- Added Fabric maven repository to all subprojects
- `org.gradle.parallel=true` for faster builds
- `--no-daemon` required (known daemon termination issue)
### Infrastructure
- `agents.md` — Project knowledge reference for AI-assisted development
- `.gitignore` — Added `*.ipr`, `*.iws`, `out/`, `*.log`, `Thumbs.db`, `.DS_Store`; fixed `/run/` → `run/` for subproject run dirs
- Community standards: CODE_OF_CONDUCT, CONTRIBUTING, SECURITY, issue & PR templates
- CI/CD: GitHub Actions (build, CodeQL, Scorecards, Dependabot auto-merge, stale issue management)
- Gradle updated to 9.5.0
- Java target updated to 21
### Fixes
- `run/` directories now properly excluded at subproject level
- IntelliJ workspace/project files (`.iws`, `.ipr`) excluded from version control
### Available Jars
| Version | File |
|---------|------|
| 1.18.2 | `reach_display-3.0.0-1.18.2.jar` |
| 1.19.4 | `reach_display-3.0.0-1.19.4.jar` |
| 1.20.1 | `reach_display-3.0.0-1.20.1.jar` |
| 1.21.11 | `reach_display-3.0.0-1.21.11.jar` |
release
3.1.2-1.21.11
3.1.2-1.21.118 окт. 2026 г.2,8 тыс.Minecraft: 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11fabric, quilt
Что нового
# Changelog
## 3.1.2 - Colour Bands Fixed on 26.x, New Icon
### Fixed
- Colour bands and gradients did nothing on 26.1.2, 26.2 and 26.2 NeoForge: the resolved
colour was written to a variable that was never read, so the flat colour option always won
- The crosshair colour and the number were computed from two different distances and could
disagree; both read the same value now, smoothing and calculation method included
- The colour ignored the distance update rate, and the blocks/metres display mode never
applied on 1.20.1 through 1.21.11
- Band colouring defaults to off on fresh configs, like the other two displays
### Changed
- New mod icon across all builds, about 40% smaller file
## 3.1.1 - Forge + NeoForge Ports, Quilt Publishing Fixed
### Added
- **Forge 1.20.1 port** (`3.1.1-1.20.1-forge`): standalone ForgeGradle project. HUD rendering
via `RenderGuiEvent.Post` (Forge replaces `Minecraft.gui` with a `ForgeGui` subclass whose
`render` override bypasses any `Gui.render` mixin — event-based rendering is the reliable path).
Config via midnightlib 1.4.2-forge (the 1.9.x forge builds lack a refmap and crash Mojmap dev runs)
plus an F6 keybind that opens the config screen directly.
- **NeoForge ports**: `3.1.1-1.21.1-neoforge`, `3.1.1-1.21.11-neoforge`, `3.1.1-26.2-neoforge`
(moddev 2.0.141, runtime-verified).
- **Quilt releases now declare the quilt loader** on Modrinth and CurseForge (`fabric,quilt`
per subproject) — previously shipped as fabric-only.
- **Quilt runtime fixes**: `quilt.mod.json` license in object form (the strict SPDX string check
rejects `"ARR"`), plain `entrypoints` with fabric type names (`fabric-like:entrypoints` does not
exist in quilt-loader 0.30.x), quilt-loader pinned to 0.30.1-beta.2, loom `mods` block to silence
the dev-run discovery error.
- **Forge config reliability**: HUD drawing suppressed while a screen is open (no more
counter-artifacts behind the Options screen); midnightlib 1.4.2-forge pinned for 1.20.1.
## 3.1.0 - Eight-Version Coverage + Pipeline Fixes
### Added
- MixinExtras 0.5.4 dependency (self-contained via `include`)
- .editorconfig for consistent code style
- Dependabot tracking for GitHub Actions updates
- MC 26.1.2 support restored as `version-26_1_2` (v3.0.0 feature set, version `3.1.0-26.1.2`)
- New `version-26_2` subproject for MC 26.2 (version `3.1.0-26.2`); the HUD
extraction moved from `Gui.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` to
`Gui.extractRenderState(DeltaTracker, boolean, boolean)`, so the HUD mixin now targets
`Hud.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` which kept the old signature
- Weapons display: spear (stab) hits are tracked and shown on the hit/average displays on 26.1.2
- Shadow toggle and shadow color options on 1.18.2 and 1.19.4 (were always-on black shadows)
- Hit/average display mode (number / blocks / M) now applies on 1.20.1
- 26.1.2 build: MC 26.1+ ships unobfuscated, so the subproject uses the no-remap loom plugin without a mappings line
- Full 1.21.x coverage: new `version-1_21_1` (1.21.1-1.21.4) and `version-1_21_5` (1.21.5) subprojects;
1.21.x jars now declare exact supported game version ranges (`>=1.21.1 <=1.21.4` / `>=1.21.5 <=1.21.5` /
`>=1.21.6 <=1.21.11` — the client API broke at 1.21.5 and 1.21.6)
- Per-subproject `game_versions` publish matrix on Modrinth + CurseForge — no duplicate or
over-claimed game versions (1.20.1 bounded to <=1.20.6, 26.1.2 bounded to <=26.1.2)
- Publish dependency metadata: Modrinth now declares fabric-api and midnightlib as
required, modmenu as optional — launchers auto-install them for players (backfilled onto
the v3.0.0 and shipped with all 3.1.0 versions)
- Quilt builds fixed: each subproject now applies quilt-loom 1.15.1 (`-PuseQuilt=true`) instead of
fabric-loom, which cannot remap quilted-fabric-api (no `quilt.mod.json` support); the quilt build
was broken since it was introduced. Mixin API pulled in explicitly (quilt-loader does not bundle
it). 26.1.2 quilt build uses fabric-api directly (no quilted-fabric-api for 26.x) and declares
`fabric_api` in quilt.mod.json. CI now builds both loaders for all 8 subprojects.
### Infrastructure
- CI now builds each subproject separately (fail-fast disabled)
- Release workflow builds all versions, collects JARs, creates GitHub Release with changelog
- Changelog follows KeepAChangelog format for automated extraction
- CI and release workflows now build all 8 subprojects (26.x on JDK 25); CI triggers on `restructure`
- Modrinth dependency metadata backfilled retroactively on the published v3.0.0 versions
(fabric-api + midnightlib required, modmenu optional)
### Fixed
- 26.1.2: ray-hit-point distance no longer records hits against the wrong entity when the crosshair target differs from the attacked entity
- 26.1.2: `fabric.mod.json` depended on the non-existent `fabric-api` mod id instead of `fabric`
- All subprojects: `quilt.mod.json` license metadata said GPL-3.0 while v3.0.0+ is All Rights Reserved
- 26.1.2: hit distance no longer stays on screen forever — keep-last-distance and reset-time settings apply like on other versions
- 26.1.2/26.2: `fabric.mod.json` depends on `fabric-api` (the real mod id on 26.x) instead of the
`fabric` alias, which 26.x fabric-api jars no longer provide — the mod would not start otherwise
- Release pipeline: Modrinth publish skip-check always evaluated to "version exists" and silently
skipped every publish (the version-list endpoint ignores the `?version_number` query parameter);
the check now filters versions client-side
- Release pipeline: changelog extraction used a broken sed idiom that never looped and produced
headers plus one line (v3.0.0 shipped with empty release notes); extraction now reads the first
`## ` section body directly
- Release pipeline: CurseForge publish used `curseforge-relations`, an input name that only
existed in mc-publish v2 — v3 ignores it, so the published files carry no dependency relations;
renamed to `curseforge-dependencies` with the v3 `slug(type)` syntax (3.1.0 files on CurseForge
are unaffected; the fix applies from the next release)
## 3.0.0 — Multi-Version Restructure + Entity Filter
### Major Changes
- **License change** — Switched from GPL-3.0 to **All Rights Reserved (ARR)** for v3.0.0 and later. Old versions remain under GPL-3.0. Commercial redistribution and publishing forks under a different name are now explicitly prohibited.
- **Multi-project restructure** — Split into 4 version-specific subprojects:
- `version-1_17_1_18` (MC 1.18.2)
- `version-1_19` (MC 1.19.4)
- `version-1_20_1` (MC 1.20.1)
- `version-1_21_11` (MC 1.21.11)
- **Entity filter system** — New filter/EntityFilterHelper with whitelist/blacklist mode, category toggles (Players, Hostile, Passive, Boss, Other), and custom entity ID matching
- **Unified build config** — Shared Gradle configuration via root `build.gradle` (processResources, sourcesJar, publishing)
### Entity Filter
- Config entries: `entityFilterEnable`, `entityFilterMode` (WHITELIST/BLACKLIST), per-category toggles, `entityFilterCustomIDs`
- All 3 HUD display sections filtered with `!enable || shouldTrack(entity)`
- Works across all 7 supported versions
### Build System
- Root `build.gradle` with `subprojects` block for common config
- Added Fabric maven repository to all subprojects
- `org.gradle.parallel=true` for faster builds
- `--no-daemon` required (known daemon termination issue)
### Infrastructure
- `agents.md` — Project knowledge reference for AI-assisted development
- `.gitignore` — Added `*.ipr`, `*.iws`, `out/`, `*.log`, `Thumbs.db`, `.DS_Store`; fixed `/run/` → `run/` for subproject run dirs
- Community standards: CODE_OF_CONDUCT, CONTRIBUTING, SECURITY, issue & PR templates
- CI/CD: GitHub Actions (build, CodeQL, Scorecards, Dependabot auto-merge, stale issue management)
- Gradle updated to 9.5.0
- Java target updated to 21
### Fixes
- `run/` directories now properly excluded at subproject level
- IntelliJ workspace/project files (`.iws`, `.ipr`) excluded from version control
### Available Jars
| Version | File |
|---------|------|
| 1.18.2 | `reach_display-3.0.0-1.18.2.jar` |
| 1.19.4 | `reach_display-3.0.0-1.19.4.jar` |
| 1.20.1 | `reach_display-3.0.0-1.20.1.jar` |
| 1.21.11 | `reach_display-3.0.0-1.21.11.jar` |
release
3.1.2-1.21.1
3.1.2-1.21.18 окт. 2026 г.444Minecraft: 1.21.1, 1.21.2, 1.21.3, 1.21.4fabric, quilt
Что нового
# Changelog
## 3.1.2 - Colour Bands Fixed on 26.x, New Icon
### Fixed
- Colour bands and gradients did nothing on 26.1.2, 26.2 and 26.2 NeoForge: the resolved
colour was written to a variable that was never read, so the flat colour option always won
- The crosshair colour and the number were computed from two different distances and could
disagree; both read the same value now, smoothing and calculation method included
- The colour ignored the distance update rate, and the blocks/metres display mode never
applied on 1.20.1 through 1.21.11
- Band colouring defaults to off on fresh configs, like the other two displays
### Changed
- New mod icon across all builds, about 40% smaller file
## 3.1.1 - Forge + NeoForge Ports, Quilt Publishing Fixed
### Added
- **Forge 1.20.1 port** (`3.1.1-1.20.1-forge`): standalone ForgeGradle project. HUD rendering
via `RenderGuiEvent.Post` (Forge replaces `Minecraft.gui` with a `ForgeGui` subclass whose
`render` override bypasses any `Gui.render` mixin — event-based rendering is the reliable path).
Config via midnightlib 1.4.2-forge (the 1.9.x forge builds lack a refmap and crash Mojmap dev runs)
plus an F6 keybind that opens the config screen directly.
- **NeoForge ports**: `3.1.1-1.21.1-neoforge`, `3.1.1-1.21.11-neoforge`, `3.1.1-26.2-neoforge`
(moddev 2.0.141, runtime-verified).
- **Quilt releases now declare the quilt loader** on Modrinth and CurseForge (`fabric,quilt`
per subproject) — previously shipped as fabric-only.
- **Quilt runtime fixes**: `quilt.mod.json` license in object form (the strict SPDX string check
rejects `"ARR"`), plain `entrypoints` with fabric type names (`fabric-like:entrypoints` does not
exist in quilt-loader 0.30.x), quilt-loader pinned to 0.30.1-beta.2, loom `mods` block to silence
the dev-run discovery error.
- **Forge config reliability**: HUD drawing suppressed while a screen is open (no more
counter-artifacts behind the Options screen); midnightlib 1.4.2-forge pinned for 1.20.1.
## 3.1.0 - Eight-Version Coverage + Pipeline Fixes
### Added
- MixinExtras 0.5.4 dependency (self-contained via `include`)
- .editorconfig for consistent code style
- Dependabot tracking for GitHub Actions updates
- MC 26.1.2 support restored as `version-26_1_2` (v3.0.0 feature set, version `3.1.0-26.1.2`)
- New `version-26_2` subproject for MC 26.2 (version `3.1.0-26.2`); the HUD
extraction moved from `Gui.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` to
`Gui.extractRenderState(DeltaTracker, boolean, boolean)`, so the HUD mixin now targets
`Hud.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` which kept the old signature
- Weapons display: spear (stab) hits are tracked and shown on the hit/average displays on 26.1.2
- Shadow toggle and shadow color options on 1.18.2 and 1.19.4 (were always-on black shadows)
- Hit/average display mode (number / blocks / M) now applies on 1.20.1
- 26.1.2 build: MC 26.1+ ships unobfuscated, so the subproject uses the no-remap loom plugin without a mappings line
- Full 1.21.x coverage: new `version-1_21_1` (1.21.1-1.21.4) and `version-1_21_5` (1.21.5) subprojects;
1.21.x jars now declare exact supported game version ranges (`>=1.21.1 <=1.21.4` / `>=1.21.5 <=1.21.5` /
`>=1.21.6 <=1.21.11` — the client API broke at 1.21.5 and 1.21.6)
- Per-subproject `game_versions` publish matrix on Modrinth + CurseForge — no duplicate or
over-claimed game versions (1.20.1 bounded to <=1.20.6, 26.1.2 bounded to <=26.1.2)
- Publish dependency metadata: Modrinth now declares fabric-api and midnightlib as
required, modmenu as optional — launchers auto-install them for players (backfilled onto
the v3.0.0 and shipped with all 3.1.0 versions)
- Quilt builds fixed: each subproject now applies quilt-loom 1.15.1 (`-PuseQuilt=true`) instead of
fabric-loom, which cannot remap quilted-fabric-api (no `quilt.mod.json` support); the quilt build
was broken since it was introduced. Mixin API pulled in explicitly (quilt-loader does not bundle
it). 26.1.2 quilt build uses fabric-api directly (no quilted-fabric-api for 26.x) and declares
`fabric_api` in quilt.mod.json. CI now builds both loaders for all 8 subprojects.
### Infrastructure
- CI now builds each subproject separately (fail-fast disabled)
- Release workflow builds all versions, collects JARs, creates GitHub Release with changelog
- Changelog follows KeepAChangelog format for automated extraction
- CI and release workflows now build all 8 subprojects (26.x on JDK 25); CI triggers on `restructure`
- Modrinth dependency metadata backfilled retroactively on the published v3.0.0 versions
(fabric-api + midnightlib required, modmenu optional)
### Fixed
- 26.1.2: ray-hit-point distance no longer records hits against the wrong entity when the crosshair target differs from the attacked entity
- 26.1.2: `fabric.mod.json` depended on the non-existent `fabric-api` mod id instead of `fabric`
- All subprojects: `quilt.mod.json` license metadata said GPL-3.0 while v3.0.0+ is All Rights Reserved
- 26.1.2: hit distance no longer stays on screen forever — keep-last-distance and reset-time settings apply like on other versions
- 26.1.2/26.2: `fabric.mod.json` depends on `fabric-api` (the real mod id on 26.x) instead of the
`fabric` alias, which 26.x fabric-api jars no longer provide — the mod would not start otherwise
- Release pipeline: Modrinth publish skip-check always evaluated to "version exists" and silently
skipped every publish (the version-list endpoint ignores the `?version_number` query parameter);
the check now filters versions client-side
- Release pipeline: changelog extraction used a broken sed idiom that never looped and produced
headers plus one line (v3.0.0 shipped with empty release notes); extraction now reads the first
`## ` section body directly
- Release pipeline: CurseForge publish used `curseforge-relations`, an input name that only
existed in mc-publish v2 — v3 ignores it, so the published files carry no dependency relations;
renamed to `curseforge-dependencies` with the v3 `slug(type)` syntax (3.1.0 files on CurseForge
are unaffected; the fix applies from the next release)
## 3.0.0 — Multi-Version Restructure + Entity Filter
### Major Changes
- **License change** — Switched from GPL-3.0 to **All Rights Reserved (ARR)** for v3.0.0 and later. Old versions remain under GPL-3.0. Commercial redistribution and publishing forks under a different name are now explicitly prohibited.
- **Multi-project restructure** — Split into 4 version-specific subprojects:
- `version-1_17_1_18` (MC 1.18.2)
- `version-1_19` (MC 1.19.4)
- `version-1_20_1` (MC 1.20.1)
- `version-1_21_11` (MC 1.21.11)
- **Entity filter system** — New filter/EntityFilterHelper with whitelist/blacklist mode, category toggles (Players, Hostile, Passive, Boss, Other), and custom entity ID matching
- **Unified build config** — Shared Gradle configuration via root `build.gradle` (processResources, sourcesJar, publishing)
### Entity Filter
- Config entries: `entityFilterEnable`, `entityFilterMode` (WHITELIST/BLACKLIST), per-category toggles, `entityFilterCustomIDs`
- All 3 HUD display sections filtered with `!enable || shouldTrack(entity)`
- Works across all 7 supported versions
### Build System
- Root `build.gradle` with `subprojects` block for common config
- Added Fabric maven repository to all subprojects
- `org.gradle.parallel=true` for faster builds
- `--no-daemon` required (known daemon termination issue)
### Infrastructure
- `agents.md` — Project knowledge reference for AI-assisted development
- `.gitignore` — Added `*.ipr`, `*.iws`, `out/`, `*.log`, `Thumbs.db`, `.DS_Store`; fixed `/run/` → `run/` for subproject run dirs
- Community standards: CODE_OF_CONDUCT, CONTRIBUTING, SECURITY, issue & PR templates
- CI/CD: GitHub Actions (build, CodeQL, Scorecards, Dependabot auto-merge, stale issue management)
- Gradle updated to 9.5.0
- Java target updated to 21
### Fixes
- `run/` directories now properly excluded at subproject level
- IntelliJ workspace/project files (`.iws`, `.ipr`) excluded from version control
### Available Jars
| Version | File |
|---------|------|
| 1.18.2 | `reach_display-3.0.0-1.18.2.jar` |
| 1.19.4 | `reach_display-3.0.0-1.19.4.jar` |
| 1.20.1 | `reach_display-3.0.0-1.20.1.jar` |
| 1.21.11 | `reach_display-3.0.0-1.21.11.jar` |
release
3.1.2-1.21.11-neoforge
3.1.2-1.21.11-neoforge8 окт. 2026 г.28Minecraft: 1.21.11neoforge
Что нового
# Changelog
## 3.1.2 - Colour Bands Fixed on 26.x, New Icon
### Fixed
- Colour bands and gradients did nothing on 26.1.2, 26.2 and 26.2 NeoForge: the resolved
colour was written to a variable that was never read, so the flat colour option always won
- The crosshair colour and the number were computed from two different distances and could
disagree; both read the same value now, smoothing and calculation method included
- The colour ignored the distance update rate, and the blocks/metres display mode never
applied on 1.20.1 through 1.21.11
- Band colouring defaults to off on fresh configs, like the other two displays
### Changed
- New mod icon across all builds, about 40% smaller file
## 3.1.1 - Forge + NeoForge Ports, Quilt Publishing Fixed
### Added
- **Forge 1.20.1 port** (`3.1.1-1.20.1-forge`): standalone ForgeGradle project. HUD rendering
via `RenderGuiEvent.Post` (Forge replaces `Minecraft.gui` with a `ForgeGui` subclass whose
`render` override bypasses any `Gui.render` mixin — event-based rendering is the reliable path).
Config via midnightlib 1.4.2-forge (the 1.9.x forge builds lack a refmap and crash Mojmap dev runs)
plus an F6 keybind that opens the config screen directly.
- **NeoForge ports**: `3.1.1-1.21.1-neoforge`, `3.1.1-1.21.11-neoforge`, `3.1.1-26.2-neoforge`
(moddev 2.0.141, runtime-verified).
- **Quilt releases now declare the quilt loader** on Modrinth and CurseForge (`fabric,quilt`
per subproject) — previously shipped as fabric-only.
- **Quilt runtime fixes**: `quilt.mod.json` license in object form (the strict SPDX string check
rejects `"ARR"`), plain `entrypoints` with fabric type names (`fabric-like:entrypoints` does not
exist in quilt-loader 0.30.x), quilt-loader pinned to 0.30.1-beta.2, loom `mods` block to silence
the dev-run discovery error.
- **Forge config reliability**: HUD drawing suppressed while a screen is open (no more
counter-artifacts behind the Options screen); midnightlib 1.4.2-forge pinned for 1.20.1.
## 3.1.0 - Eight-Version Coverage + Pipeline Fixes
### Added
- MixinExtras 0.5.4 dependency (self-contained via `include`)
- .editorconfig for consistent code style
- Dependabot tracking for GitHub Actions updates
- MC 26.1.2 support restored as `version-26_1_2` (v3.0.0 feature set, version `3.1.0-26.1.2`)
- New `version-26_2` subproject for MC 26.2 (version `3.1.0-26.2`); the HUD
extraction moved from `Gui.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` to
`Gui.extractRenderState(DeltaTracker, boolean, boolean)`, so the HUD mixin now targets
`Hud.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` which kept the old signature
- Weapons display: spear (stab) hits are tracked and shown on the hit/average displays on 26.1.2
- Shadow toggle and shadow color options on 1.18.2 and 1.19.4 (were always-on black shadows)
- Hit/average display mode (number / blocks / M) now applies on 1.20.1
- 26.1.2 build: MC 26.1+ ships unobfuscated, so the subproject uses the no-remap loom plugin without a mappings line
- Full 1.21.x coverage: new `version-1_21_1` (1.21.1-1.21.4) and `version-1_21_5` (1.21.5) subprojects;
1.21.x jars now declare exact supported game version ranges (`>=1.21.1 <=1.21.4` / `>=1.21.5 <=1.21.5` /
`>=1.21.6 <=1.21.11` — the client API broke at 1.21.5 and 1.21.6)
- Per-subproject `game_versions` publish matrix on Modrinth + CurseForge — no duplicate or
over-claimed game versions (1.20.1 bounded to <=1.20.6, 26.1.2 bounded to <=26.1.2)
- Publish dependency metadata: Modrinth now declares fabric-api and midnightlib as
required, modmenu as optional — launchers auto-install them for players (backfilled onto
the v3.0.0 and shipped with all 3.1.0 versions)
- Quilt builds fixed: each subproject now applies quilt-loom 1.15.1 (`-PuseQuilt=true`) instead of
fabric-loom, which cannot remap quilted-fabric-api (no `quilt.mod.json` support); the quilt build
was broken since it was introduced. Mixin API pulled in explicitly (quilt-loader does not bundle
it). 26.1.2 quilt build uses fabric-api directly (no quilted-fabric-api for 26.x) and declares
`fabric_api` in quilt.mod.json. CI now builds both loaders for all 8 subprojects.
### Infrastructure
- CI now builds each subproject separately (fail-fast disabled)
- Release workflow builds all versions, collects JARs, creates GitHub Release with changelog
- Changelog follows KeepAChangelog format for automated extraction
- CI and release workflows now build all 8 subprojects (26.x on JDK 25); CI triggers on `restructure`
- Modrinth dependency metadata backfilled retroactively on the published v3.0.0 versions
(fabric-api + midnightlib required, modmenu optional)
### Fixed
- 26.1.2: ray-hit-point distance no longer records hits against the wrong entity when the crosshair target differs from the attacked entity
- 26.1.2: `fabric.mod.json` depended on the non-existent `fabric-api` mod id instead of `fabric`
- All subprojects: `quilt.mod.json` license metadata said GPL-3.0 while v3.0.0+ is All Rights Reserved
- 26.1.2: hit distance no longer stays on screen forever — keep-last-distance and reset-time settings apply like on other versions
- 26.1.2/26.2: `fabric.mod.json` depends on `fabric-api` (the real mod id on 26.x) instead of the
`fabric` alias, which 26.x fabric-api jars no longer provide — the mod would not start otherwise
- Release pipeline: Modrinth publish skip-check always evaluated to "version exists" and silently
skipped every publish (the version-list endpoint ignores the `?version_number` query parameter);
the check now filters versions client-side
- Release pipeline: changelog extraction used a broken sed idiom that never looped and produced
headers plus one line (v3.0.0 shipped with empty release notes); extraction now reads the first
`## ` section body directly
- Release pipeline: CurseForge publish used `curseforge-relations`, an input name that only
existed in mc-publish v2 — v3 ignores it, so the published files carry no dependency relations;
renamed to `curseforge-dependencies` with the v3 `slug(type)` syntax (3.1.0 files on CurseForge
are unaffected; the fix applies from the next release)
## 3.0.0 — Multi-Version Restructure + Entity Filter
### Major Changes
- **License change** — Switched from GPL-3.0 to **All Rights Reserved (ARR)** for v3.0.0 and later. Old versions remain under GPL-3.0. Commercial redistribution and publishing forks under a different name are now explicitly prohibited.
- **Multi-project restructure** — Split into 4 version-specific subprojects:
- `version-1_17_1_18` (MC 1.18.2)
- `version-1_19` (MC 1.19.4)
- `version-1_20_1` (MC 1.20.1)
- `version-1_21_11` (MC 1.21.11)
- **Entity filter system** — New filter/EntityFilterHelper with whitelist/blacklist mode, category toggles (Players, Hostile, Passive, Boss, Other), and custom entity ID matching
- **Unified build config** — Shared Gradle configuration via root `build.gradle` (processResources, sourcesJar, publishing)
### Entity Filter
- Config entries: `entityFilterEnable`, `entityFilterMode` (WHITELIST/BLACKLIST), per-category toggles, `entityFilterCustomIDs`
- All 3 HUD display sections filtered with `!enable || shouldTrack(entity)`
- Works across all 7 supported versions
### Build System
- Root `build.gradle` with `subprojects` block for common config
- Added Fabric maven repository to all subprojects
- `org.gradle.parallel=true` for faster builds
- `--no-daemon` required (known daemon termination issue)
### Infrastructure
- `agents.md` — Project knowledge reference for AI-assisted development
- `.gitignore` — Added `*.ipr`, `*.iws`, `out/`, `*.log`, `Thumbs.db`, `.DS_Store`; fixed `/run/` → `run/` for subproject run dirs
- Community standards: CODE_OF_CONDUCT, CONTRIBUTING, SECURITY, issue & PR templates
- CI/CD: GitHub Actions (build, CodeQL, Scorecards, Dependabot auto-merge, stale issue management)
- Gradle updated to 9.5.0
- Java target updated to 21
### Fixes
- `run/` directories now properly excluded at subproject level
- IntelliJ workspace/project files (`.iws`, `.ipr`) excluded from version control
### Available Jars
| Version | File |
|---------|------|
| 1.18.2 | `reach_display-3.0.0-1.18.2.jar` |
| 1.19.4 | `reach_display-3.0.0-1.19.4.jar` |
| 1.20.1 | `reach_display-3.0.0-1.20.1.jar` |
| 1.21.11 | `reach_display-3.0.0-1.21.11.jar` |
release
3.1.2-1.21.1-neoforge
3.1.2-1.21.1-neoforge8 окт. 2026 г.47Minecraft: 1.21.1neoforge
Что нового
# Changelog
## 3.1.2 - Colour Bands Fixed on 26.x, New Icon
### Fixed
- Colour bands and gradients did nothing on 26.1.2, 26.2 and 26.2 NeoForge: the resolved
colour was written to a variable that was never read, so the flat colour option always won
- The crosshair colour and the number were computed from two different distances and could
disagree; both read the same value now, smoothing and calculation method included
- The colour ignored the distance update rate, and the blocks/metres display mode never
applied on 1.20.1 through 1.21.11
- Band colouring defaults to off on fresh configs, like the other two displays
### Changed
- New mod icon across all builds, about 40% smaller file
## 3.1.1 - Forge + NeoForge Ports, Quilt Publishing Fixed
### Added
- **Forge 1.20.1 port** (`3.1.1-1.20.1-forge`): standalone ForgeGradle project. HUD rendering
via `RenderGuiEvent.Post` (Forge replaces `Minecraft.gui` with a `ForgeGui` subclass whose
`render` override bypasses any `Gui.render` mixin — event-based rendering is the reliable path).
Config via midnightlib 1.4.2-forge (the 1.9.x forge builds lack a refmap and crash Mojmap dev runs)
plus an F6 keybind that opens the config screen directly.
- **NeoForge ports**: `3.1.1-1.21.1-neoforge`, `3.1.1-1.21.11-neoforge`, `3.1.1-26.2-neoforge`
(moddev 2.0.141, runtime-verified).
- **Quilt releases now declare the quilt loader** on Modrinth and CurseForge (`fabric,quilt`
per subproject) — previously shipped as fabric-only.
- **Quilt runtime fixes**: `quilt.mod.json` license in object form (the strict SPDX string check
rejects `"ARR"`), plain `entrypoints` with fabric type names (`fabric-like:entrypoints` does not
exist in quilt-loader 0.30.x), quilt-loader pinned to 0.30.1-beta.2, loom `mods` block to silence
the dev-run discovery error.
- **Forge config reliability**: HUD drawing suppressed while a screen is open (no more
counter-artifacts behind the Options screen); midnightlib 1.4.2-forge pinned for 1.20.1.
## 3.1.0 - Eight-Version Coverage + Pipeline Fixes
### Added
- MixinExtras 0.5.4 dependency (self-contained via `include`)
- .editorconfig for consistent code style
- Dependabot tracking for GitHub Actions updates
- MC 26.1.2 support restored as `version-26_1_2` (v3.0.0 feature set, version `3.1.0-26.1.2`)
- New `version-26_2` subproject for MC 26.2 (version `3.1.0-26.2`); the HUD
extraction moved from `Gui.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` to
`Gui.extractRenderState(DeltaTracker, boolean, boolean)`, so the HUD mixin now targets
`Hud.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` which kept the old signature
- Weapons display: spear (stab) hits are tracked and shown on the hit/average displays on 26.1.2
- Shadow toggle and shadow color options on 1.18.2 and 1.19.4 (were always-on black shadows)
- Hit/average display mode (number / blocks / M) now applies on 1.20.1
- 26.1.2 build: MC 26.1+ ships unobfuscated, so the subproject uses the no-remap loom plugin without a mappings line
- Full 1.21.x coverage: new `version-1_21_1` (1.21.1-1.21.4) and `version-1_21_5` (1.21.5) subprojects;
1.21.x jars now declare exact supported game version ranges (`>=1.21.1 <=1.21.4` / `>=1.21.5 <=1.21.5` /
`>=1.21.6 <=1.21.11` — the client API broke at 1.21.5 and 1.21.6)
- Per-subproject `game_versions` publish matrix on Modrinth + CurseForge — no duplicate or
over-claimed game versions (1.20.1 bounded to <=1.20.6, 26.1.2 bounded to <=26.1.2)
- Publish dependency metadata: Modrinth now declares fabric-api and midnightlib as
required, modmenu as optional — launchers auto-install them for players (backfilled onto
the v3.0.0 and shipped with all 3.1.0 versions)
- Quilt builds fixed: each subproject now applies quilt-loom 1.15.1 (`-PuseQuilt=true`) instead of
fabric-loom, which cannot remap quilted-fabric-api (no `quilt.mod.json` support); the quilt build
was broken since it was introduced. Mixin API pulled in explicitly (quilt-loader does not bundle
it). 26.1.2 quilt build uses fabric-api directly (no quilted-fabric-api for 26.x) and declares
`fabric_api` in quilt.mod.json. CI now builds both loaders for all 8 subprojects.
### Infrastructure
- CI now builds each subproject separately (fail-fast disabled)
- Release workflow builds all versions, collects JARs, creates GitHub Release with changelog
- Changelog follows KeepAChangelog format for automated extraction
- CI and release workflows now build all 8 subprojects (26.x on JDK 25); CI triggers on `restructure`
- Modrinth dependency metadata backfilled retroactively on the published v3.0.0 versions
(fabric-api + midnightlib required, modmenu optional)
### Fixed
- 26.1.2: ray-hit-point distance no longer records hits against the wrong entity when the crosshair target differs from the attacked entity
- 26.1.2: `fabric.mod.json` depended on the non-existent `fabric-api` mod id instead of `fabric`
- All subprojects: `quilt.mod.json` license metadata said GPL-3.0 while v3.0.0+ is All Rights Reserved
- 26.1.2: hit distance no longer stays on screen forever — keep-last-distance and reset-time settings apply like on other versions
- 26.1.2/26.2: `fabric.mod.json` depends on `fabric-api` (the real mod id on 26.x) instead of the
`fabric` alias, which 26.x fabric-api jars no longer provide — the mod would not start otherwise
- Release pipeline: Modrinth publish skip-check always evaluated to "version exists" and silently
skipped every publish (the version-list endpoint ignores the `?version_number` query parameter);
the check now filters versions client-side
- Release pipeline: changelog extraction used a broken sed idiom that never looped and produced
headers plus one line (v3.0.0 shipped with empty release notes); extraction now reads the first
`## ` section body directly
- Release pipeline: CurseForge publish used `curseforge-relations`, an input name that only
existed in mc-publish v2 — v3 ignores it, so the published files carry no dependency relations;
renamed to `curseforge-dependencies` with the v3 `slug(type)` syntax (3.1.0 files on CurseForge
are unaffected; the fix applies from the next release)
## 3.0.0 — Multi-Version Restructure + Entity Filter
### Major Changes
- **License change** — Switched from GPL-3.0 to **All Rights Reserved (ARR)** for v3.0.0 and later. Old versions remain under GPL-3.0. Commercial redistribution and publishing forks under a different name are now explicitly prohibited.
- **Multi-project restructure** — Split into 4 version-specific subprojects:
- `version-1_17_1_18` (MC 1.18.2)
- `version-1_19` (MC 1.19.4)
- `version-1_20_1` (MC 1.20.1)
- `version-1_21_11` (MC 1.21.11)
- **Entity filter system** — New filter/EntityFilterHelper with whitelist/blacklist mode, category toggles (Players, Hostile, Passive, Boss, Other), and custom entity ID matching
- **Unified build config** — Shared Gradle configuration via root `build.gradle` (processResources, sourcesJar, publishing)
### Entity Filter
- Config entries: `entityFilterEnable`, `entityFilterMode` (WHITELIST/BLACKLIST), per-category toggles, `entityFilterCustomIDs`
- All 3 HUD display sections filtered with `!enable || shouldTrack(entity)`
- Works across all 7 supported versions
### Build System
- Root `build.gradle` with `subprojects` block for common config
- Added Fabric maven repository to all subprojects
- `org.gradle.parallel=true` for faster builds
- `--no-daemon` required (known daemon termination issue)
### Infrastructure
- `agents.md` — Project knowledge reference for AI-assisted development
- `.gitignore` — Added `*.ipr`, `*.iws`, `out/`, `*.log`, `Thumbs.db`, `.DS_Store`; fixed `/run/` → `run/` for subproject run dirs
- Community standards: CODE_OF_CONDUCT, CONTRIBUTING, SECURITY, issue & PR templates
- CI/CD: GitHub Actions (build, CodeQL, Scorecards, Dependabot auto-merge, stale issue management)
- Gradle updated to 9.5.0
- Java target updated to 21
### Fixes
- `run/` directories now properly excluded at subproject level
- IntelliJ workspace/project files (`.iws`, `.ipr`) excluded from version control
### Available Jars
| Version | File |
|---------|------|
| 1.18.2 | `reach_display-3.0.0-1.18.2.jar` |
| 1.19.4 | `reach_display-3.0.0-1.19.4.jar` |
| 1.20.1 | `reach_display-3.0.0-1.20.1.jar` |
| 1.21.11 | `reach_display-3.0.0-1.21.11.jar` |
release
3.1.2-1.18.2
3.1.2-1.18.28 окт. 2026 г.13Minecraft: 1.17.1, 1.18, 1.18.1, 1.18.2fabric, quilt
Что нового
# Changelog
## 3.1.2 - Colour Bands Fixed on 26.x, New Icon
### Fixed
- Colour bands and gradients did nothing on 26.1.2, 26.2 and 26.2 NeoForge: the resolved
colour was written to a variable that was never read, so the flat colour option always won
- The crosshair colour and the number were computed from two different distances and could
disagree; both read the same value now, smoothing and calculation method included
- The colour ignored the distance update rate, and the blocks/metres display mode never
applied on 1.20.1 through 1.21.11
- Band colouring defaults to off on fresh configs, like the other two displays
### Changed
- New mod icon across all builds, about 40% smaller file
## 3.1.1 - Forge + NeoForge Ports, Quilt Publishing Fixed
### Added
- **Forge 1.20.1 port** (`3.1.1-1.20.1-forge`): standalone ForgeGradle project. HUD rendering
via `RenderGuiEvent.Post` (Forge replaces `Minecraft.gui` with a `ForgeGui` subclass whose
`render` override bypasses any `Gui.render` mixin — event-based rendering is the reliable path).
Config via midnightlib 1.4.2-forge (the 1.9.x forge builds lack a refmap and crash Mojmap dev runs)
plus an F6 keybind that opens the config screen directly.
- **NeoForge ports**: `3.1.1-1.21.1-neoforge`, `3.1.1-1.21.11-neoforge`, `3.1.1-26.2-neoforge`
(moddev 2.0.141, runtime-verified).
- **Quilt releases now declare the quilt loader** on Modrinth and CurseForge (`fabric,quilt`
per subproject) — previously shipped as fabric-only.
- **Quilt runtime fixes**: `quilt.mod.json` license in object form (the strict SPDX string check
rejects `"ARR"`), plain `entrypoints` with fabric type names (`fabric-like:entrypoints` does not
exist in quilt-loader 0.30.x), quilt-loader pinned to 0.30.1-beta.2, loom `mods` block to silence
the dev-run discovery error.
- **Forge config reliability**: HUD drawing suppressed while a screen is open (no more
counter-artifacts behind the Options screen); midnightlib 1.4.2-forge pinned for 1.20.1.
## 3.1.0 - Eight-Version Coverage + Pipeline Fixes
### Added
- MixinExtras 0.5.4 dependency (self-contained via `include`)
- .editorconfig for consistent code style
- Dependabot tracking for GitHub Actions updates
- MC 26.1.2 support restored as `version-26_1_2` (v3.0.0 feature set, version `3.1.0-26.1.2`)
- New `version-26_2` subproject for MC 26.2 (version `3.1.0-26.2`); the HUD
extraction moved from `Gui.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` to
`Gui.extractRenderState(DeltaTracker, boolean, boolean)`, so the HUD mixin now targets
`Hud.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` which kept the old signature
- Weapons display: spear (stab) hits are tracked and shown on the hit/average displays on 26.1.2
- Shadow toggle and shadow color options on 1.18.2 and 1.19.4 (were always-on black shadows)
- Hit/average display mode (number / blocks / M) now applies on 1.20.1
- 26.1.2 build: MC 26.1+ ships unobfuscated, so the subproject uses the no-remap loom plugin without a mappings line
- Full 1.21.x coverage: new `version-1_21_1` (1.21.1-1.21.4) and `version-1_21_5` (1.21.5) subprojects;
1.21.x jars now declare exact supported game version ranges (`>=1.21.1 <=1.21.4` / `>=1.21.5 <=1.21.5` /
`>=1.21.6 <=1.21.11` — the client API broke at 1.21.5 and 1.21.6)
- Per-subproject `game_versions` publish matrix on Modrinth + CurseForge — no duplicate or
over-claimed game versions (1.20.1 bounded to <=1.20.6, 26.1.2 bounded to <=26.1.2)
- Publish dependency metadata: Modrinth now declares fabric-api and midnightlib as
required, modmenu as optional — launchers auto-install them for players (backfilled onto
the v3.0.0 and shipped with all 3.1.0 versions)
- Quilt builds fixed: each subproject now applies quilt-loom 1.15.1 (`-PuseQuilt=true`) instead of
fabric-loom, which cannot remap quilted-fabric-api (no `quilt.mod.json` support); the quilt build
was broken since it was introduced. Mixin API pulled in explicitly (quilt-loader does not bundle
it). 26.1.2 quilt build uses fabric-api directly (no quilted-fabric-api for 26.x) and declares
`fabric_api` in quilt.mod.json. CI now builds both loaders for all 8 subprojects.
### Infrastructure
- CI now builds each subproject separately (fail-fast disabled)
- Release workflow builds all versions, collects JARs, creates GitHub Release with changelog
- Changelog follows KeepAChangelog format for automated extraction
- CI and release workflows now build all 8 subprojects (26.x on JDK 25); CI triggers on `restructure`
- Modrinth dependency metadata backfilled retroactively on the published v3.0.0 versions
(fabric-api + midnightlib required, modmenu optional)
### Fixed
- 26.1.2: ray-hit-point distance no longer records hits against the wrong entity when the crosshair target differs from the attacked entity
- 26.1.2: `fabric.mod.json` depended on the non-existent `fabric-api` mod id instead of `fabric`
- All subprojects: `quilt.mod.json` license metadata said GPL-3.0 while v3.0.0+ is All Rights Reserved
- 26.1.2: hit distance no longer stays on screen forever — keep-last-distance and reset-time settings apply like on other versions
- 26.1.2/26.2: `fabric.mod.json` depends on `fabric-api` (the real mod id on 26.x) instead of the
`fabric` alias, which 26.x fabric-api jars no longer provide — the mod would not start otherwise
- Release pipeline: Modrinth publish skip-check always evaluated to "version exists" and silently
skipped every publish (the version-list endpoint ignores the `?version_number` query parameter);
the check now filters versions client-side
- Release pipeline: changelog extraction used a broken sed idiom that never looped and produced
headers plus one line (v3.0.0 shipped with empty release notes); extraction now reads the first
`## ` section body directly
- Release pipeline: CurseForge publish used `curseforge-relations`, an input name that only
existed in mc-publish v2 — v3 ignores it, so the published files carry no dependency relations;
renamed to `curseforge-dependencies` with the v3 `slug(type)` syntax (3.1.0 files on CurseForge
are unaffected; the fix applies from the next release)
## 3.0.0 — Multi-Version Restructure + Entity Filter
### Major Changes
- **License change** — Switched from GPL-3.0 to **All Rights Reserved (ARR)** for v3.0.0 and later. Old versions remain under GPL-3.0. Commercial redistribution and publishing forks under a different name are now explicitly prohibited.
- **Multi-project restructure** — Split into 4 version-specific subprojects:
- `version-1_17_1_18` (MC 1.18.2)
- `version-1_19` (MC 1.19.4)
- `version-1_20_1` (MC 1.20.1)
- `version-1_21_11` (MC 1.21.11)
- **Entity filter system** — New filter/EntityFilterHelper with whitelist/blacklist mode, category toggles (Players, Hostile, Passive, Boss, Other), and custom entity ID matching
- **Unified build config** — Shared Gradle configuration via root `build.gradle` (processResources, sourcesJar, publishing)
### Entity Filter
- Config entries: `entityFilterEnable`, `entityFilterMode` (WHITELIST/BLACKLIST), per-category toggles, `entityFilterCustomIDs`
- All 3 HUD display sections filtered with `!enable || shouldTrack(entity)`
- Works across all 7 supported versions
### Build System
- Root `build.gradle` with `subprojects` block for common config
- Added Fabric maven repository to all subprojects
- `org.gradle.parallel=true` for faster builds
- `--no-daemon` required (known daemon termination issue)
### Infrastructure
- `agents.md` — Project knowledge reference for AI-assisted development
- `.gitignore` — Added `*.ipr`, `*.iws`, `out/`, `*.log`, `Thumbs.db`, `.DS_Store`; fixed `/run/` → `run/` for subproject run dirs
- Community standards: CODE_OF_CONDUCT, CONTRIBUTING, SECURITY, issue & PR templates
- CI/CD: GitHub Actions (build, CodeQL, Scorecards, Dependabot auto-merge, stale issue management)
- Gradle updated to 9.5.0
- Java target updated to 21
### Fixes
- `run/` directories now properly excluded at subproject level
- IntelliJ workspace/project files (`.iws`, `.ipr`) excluded from version control
### Available Jars
| Version | File |
|---------|------|
| 1.18.2 | `reach_display-3.0.0-1.18.2.jar` |
| 1.19.4 | `reach_display-3.0.0-1.19.4.jar` |
| 1.20.1 | `reach_display-3.0.0-1.20.1.jar` |
| 1.21.11 | `reach_display-3.0.0-1.21.11.jar` |
release
3.1.2-26.1.2
3.1.2-26.1.28 окт. 2026 г.216Minecraft: 26.1, 26.1.1, 26.1.2fabric, quilt
Что нового
# Changelog
## 3.1.2 - Colour Bands Fixed on 26.x, New Icon
### Fixed
- Colour bands and gradients did nothing on 26.1.2, 26.2 and 26.2 NeoForge: the resolved
colour was written to a variable that was never read, so the flat colour option always won
- The crosshair colour and the number were computed from two different distances and could
disagree; both read the same value now, smoothing and calculation method included
- The colour ignored the distance update rate, and the blocks/metres display mode never
applied on 1.20.1 through 1.21.11
- Band colouring defaults to off on fresh configs, like the other two displays
### Changed
- New mod icon across all builds, about 40% smaller file
## 3.1.1 - Forge + NeoForge Ports, Quilt Publishing Fixed
### Added
- **Forge 1.20.1 port** (`3.1.1-1.20.1-forge`): standalone ForgeGradle project. HUD rendering
via `RenderGuiEvent.Post` (Forge replaces `Minecraft.gui` with a `ForgeGui` subclass whose
`render` override bypasses any `Gui.render` mixin — event-based rendering is the reliable path).
Config via midnightlib 1.4.2-forge (the 1.9.x forge builds lack a refmap and crash Mojmap dev runs)
plus an F6 keybind that opens the config screen directly.
- **NeoForge ports**: `3.1.1-1.21.1-neoforge`, `3.1.1-1.21.11-neoforge`, `3.1.1-26.2-neoforge`
(moddev 2.0.141, runtime-verified).
- **Quilt releases now declare the quilt loader** on Modrinth and CurseForge (`fabric,quilt`
per subproject) — previously shipped as fabric-only.
- **Quilt runtime fixes**: `quilt.mod.json` license in object form (the strict SPDX string check
rejects `"ARR"`), plain `entrypoints` with fabric type names (`fabric-like:entrypoints` does not
exist in quilt-loader 0.30.x), quilt-loader pinned to 0.30.1-beta.2, loom `mods` block to silence
the dev-run discovery error.
- **Forge config reliability**: HUD drawing suppressed while a screen is open (no more
counter-artifacts behind the Options screen); midnightlib 1.4.2-forge pinned for 1.20.1.
## 3.1.0 - Eight-Version Coverage + Pipeline Fixes
### Added
- MixinExtras 0.5.4 dependency (self-contained via `include`)
- .editorconfig for consistent code style
- Dependabot tracking for GitHub Actions updates
- MC 26.1.2 support restored as `version-26_1_2` (v3.0.0 feature set, version `3.1.0-26.1.2`)
- New `version-26_2` subproject for MC 26.2 (version `3.1.0-26.2`); the HUD
extraction moved from `Gui.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` to
`Gui.extractRenderState(DeltaTracker, boolean, boolean)`, so the HUD mixin now targets
`Hud.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` which kept the old signature
- Weapons display: spear (stab) hits are tracked and shown on the hit/average displays on 26.1.2
- Shadow toggle and shadow color options on 1.18.2 and 1.19.4 (were always-on black shadows)
- Hit/average display mode (number / blocks / M) now applies on 1.20.1
- 26.1.2 build: MC 26.1+ ships unobfuscated, so the subproject uses the no-remap loom plugin without a mappings line
- Full 1.21.x coverage: new `version-1_21_1` (1.21.1-1.21.4) and `version-1_21_5` (1.21.5) subprojects;
1.21.x jars now declare exact supported game version ranges (`>=1.21.1 <=1.21.4` / `>=1.21.5 <=1.21.5` /
`>=1.21.6 <=1.21.11` — the client API broke at 1.21.5 and 1.21.6)
- Per-subproject `game_versions` publish matrix on Modrinth + CurseForge — no duplicate or
over-claimed game versions (1.20.1 bounded to <=1.20.6, 26.1.2 bounded to <=26.1.2)
- Publish dependency metadata: Modrinth now declares fabric-api and midnightlib as
required, modmenu as optional — launchers auto-install them for players (backfilled onto
the v3.0.0 and shipped with all 3.1.0 versions)
- Quilt builds fixed: each subproject now applies quilt-loom 1.15.1 (`-PuseQuilt=true`) instead of
fabric-loom, which cannot remap quilted-fabric-api (no `quilt.mod.json` support); the quilt build
was broken since it was introduced. Mixin API pulled in explicitly (quilt-loader does not bundle
it). 26.1.2 quilt build uses fabric-api directly (no quilted-fabric-api for 26.x) and declares
`fabric_api` in quilt.mod.json. CI now builds both loaders for all 8 subprojects.
### Infrastructure
- CI now builds each subproject separately (fail-fast disabled)
- Release workflow builds all versions, collects JARs, creates GitHub Release with changelog
- Changelog follows KeepAChangelog format for automated extraction
- CI and release workflows now build all 8 subprojects (26.x on JDK 25); CI triggers on `restructure`
- Modrinth dependency metadata backfilled retroactively on the published v3.0.0 versions
(fabric-api + midnightlib required, modmenu optional)
### Fixed
- 26.1.2: ray-hit-point distance no longer records hits against the wrong entity when the crosshair target differs from the attacked entity
- 26.1.2: `fabric.mod.json` depended on the non-existent `fabric-api` mod id instead of `fabric`
- All subprojects: `quilt.mod.json` license metadata said GPL-3.0 while v3.0.0+ is All Rights Reserved
- 26.1.2: hit distance no longer stays on screen forever — keep-last-distance and reset-time settings apply like on other versions
- 26.1.2/26.2: `fabric.mod.json` depends on `fabric-api` (the real mod id on 26.x) instead of the
`fabric` alias, which 26.x fabric-api jars no longer provide — the mod would not start otherwise
- Release pipeline: Modrinth publish skip-check always evaluated to "version exists" and silently
skipped every publish (the version-list endpoint ignores the `?version_number` query parameter);
the check now filters versions client-side
- Release pipeline: changelog extraction used a broken sed idiom that never looped and produced
headers plus one line (v3.0.0 shipped with empty release notes); extraction now reads the first
`## ` section body directly
- Release pipeline: CurseForge publish used `curseforge-relations`, an input name that only
existed in mc-publish v2 — v3 ignores it, so the published files carry no dependency relations;
renamed to `curseforge-dependencies` with the v3 `slug(type)` syntax (3.1.0 files on CurseForge
are unaffected; the fix applies from the next release)
## 3.0.0 — Multi-Version Restructure + Entity Filter
### Major Changes
- **License change** — Switched from GPL-3.0 to **All Rights Reserved (ARR)** for v3.0.0 and later. Old versions remain under GPL-3.0. Commercial redistribution and publishing forks under a different name are now explicitly prohibited.
- **Multi-project restructure** — Split into 4 version-specific subprojects:
- `version-1_17_1_18` (MC 1.18.2)
- `version-1_19` (MC 1.19.4)
- `version-1_20_1` (MC 1.20.1)
- `version-1_21_11` (MC 1.21.11)
- **Entity filter system** — New filter/EntityFilterHelper with whitelist/blacklist mode, category toggles (Players, Hostile, Passive, Boss, Other), and custom entity ID matching
- **Unified build config** — Shared Gradle configuration via root `build.gradle` (processResources, sourcesJar, publishing)
### Entity Filter
- Config entries: `entityFilterEnable`, `entityFilterMode` (WHITELIST/BLACKLIST), per-category toggles, `entityFilterCustomIDs`
- All 3 HUD display sections filtered with `!enable || shouldTrack(entity)`
- Works across all 7 supported versions
### Build System
- Root `build.gradle` with `subprojects` block for common config
- Added Fabric maven repository to all subprojects
- `org.gradle.parallel=true` for faster builds
- `--no-daemon` required (known daemon termination issue)
### Infrastructure
- `agents.md` — Project knowledge reference for AI-assisted development
- `.gitignore` — Added `*.ipr`, `*.iws`, `out/`, `*.log`, `Thumbs.db`, `.DS_Store`; fixed `/run/` → `run/` for subproject run dirs
- Community standards: CODE_OF_CONDUCT, CONTRIBUTING, SECURITY, issue & PR templates
- CI/CD: GitHub Actions (build, CodeQL, Scorecards, Dependabot auto-merge, stale issue management)
- Gradle updated to 9.5.0
- Java target updated to 21
### Fixes
- `run/` directories now properly excluded at subproject level
- IntelliJ workspace/project files (`.iws`, `.ipr`) excluded from version control
### Available Jars
| Version | File |
|---------|------|
| 1.18.2 | `reach_display-3.0.0-1.18.2.jar` |
| 1.19.4 | `reach_display-3.0.0-1.19.4.jar` |
| 1.20.1 | `reach_display-3.0.0-1.20.1.jar` |
| 1.21.11 | `reach_display-3.0.0-1.21.11.jar` |
release
3.1.2-1.20.1
3.1.2-1.20.18 окт. 2026 г.624Minecraft: 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6fabric, quilt
Что нового
# Changelog
## 3.1.2 - Colour Bands Fixed on 26.x, New Icon
### Fixed
- Colour bands and gradients did nothing on 26.1.2, 26.2 and 26.2 NeoForge: the resolved
colour was written to a variable that was never read, so the flat colour option always won
- The crosshair colour and the number were computed from two different distances and could
disagree; both read the same value now, smoothing and calculation method included
- The colour ignored the distance update rate, and the blocks/metres display mode never
applied on 1.20.1 through 1.21.11
- Band colouring defaults to off on fresh configs, like the other two displays
### Changed
- New mod icon across all builds, about 40% smaller file
## 3.1.1 - Forge + NeoForge Ports, Quilt Publishing Fixed
### Added
- **Forge 1.20.1 port** (`3.1.1-1.20.1-forge`): standalone ForgeGradle project. HUD rendering
via `RenderGuiEvent.Post` (Forge replaces `Minecraft.gui` with a `ForgeGui` subclass whose
`render` override bypasses any `Gui.render` mixin — event-based rendering is the reliable path).
Config via midnightlib 1.4.2-forge (the 1.9.x forge builds lack a refmap and crash Mojmap dev runs)
plus an F6 keybind that opens the config screen directly.
- **NeoForge ports**: `3.1.1-1.21.1-neoforge`, `3.1.1-1.21.11-neoforge`, `3.1.1-26.2-neoforge`
(moddev 2.0.141, runtime-verified).
- **Quilt releases now declare the quilt loader** on Modrinth and CurseForge (`fabric,quilt`
per subproject) — previously shipped as fabric-only.
- **Quilt runtime fixes**: `quilt.mod.json` license in object form (the strict SPDX string check
rejects `"ARR"`), plain `entrypoints` with fabric type names (`fabric-like:entrypoints` does not
exist in quilt-loader 0.30.x), quilt-loader pinned to 0.30.1-beta.2, loom `mods` block to silence
the dev-run discovery error.
- **Forge config reliability**: HUD drawing suppressed while a screen is open (no more
counter-artifacts behind the Options screen); midnightlib 1.4.2-forge pinned for 1.20.1.
## 3.1.0 - Eight-Version Coverage + Pipeline Fixes
### Added
- MixinExtras 0.5.4 dependency (self-contained via `include`)
- .editorconfig for consistent code style
- Dependabot tracking for GitHub Actions updates
- MC 26.1.2 support restored as `version-26_1_2` (v3.0.0 feature set, version `3.1.0-26.1.2`)
- New `version-26_2` subproject for MC 26.2 (version `3.1.0-26.2`); the HUD
extraction moved from `Gui.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` to
`Gui.extractRenderState(DeltaTracker, boolean, boolean)`, so the HUD mixin now targets
`Hud.extractRenderState(GuiGraphicsExtractor, DeltaTracker)` which kept the old signature
- Weapons display: spear (stab) hits are tracked and shown on the hit/average displays on 26.1.2
- Shadow toggle and shadow color options on 1.18.2 and 1.19.4 (were always-on black shadows)
- Hit/average display mode (number / blocks / M) now applies on 1.20.1
- 26.1.2 build: MC 26.1+ ships unobfuscated, so the subproject uses the no-remap loom plugin without a mappings line
- Full 1.21.x coverage: new `version-1_21_1` (1.21.1-1.21.4) and `version-1_21_5` (1.21.5) subprojects;
1.21.x jars now declare exact supported game version ranges (`>=1.21.1 <=1.21.4` / `>=1.21.5 <=1.21.5` /
`>=1.21.6 <=1.21.11` — the client API broke at 1.21.5 and 1.21.6)
- Per-subproject `game_versions` publish matrix on Modrinth + CurseForge — no duplicate or
over-claimed game versions (1.20.1 bounded to <=1.20.6, 26.1.2 bounded to <=26.1.2)
- Publish dependency metadata: Modrinth now declares fabric-api and midnightlib as
required, modmenu as optional — launchers auto-install them for players (backfilled onto
the v3.0.0 and shipped with all 3.1.0 versions)
- Quilt builds fixed: each subproject now applies quilt-loom 1.15.1 (`-PuseQuilt=true`) instead of
fabric-loom, which cannot remap quilted-fabric-api (no `quilt.mod.json` support); the quilt build
was broken since it was introduced. Mixin API pulled in explicitly (quilt-loader does not bundle
it). 26.1.2 quilt build uses fabric-api directly (no quilted-fabric-api for 26.x) and declares
`fabric_api` in quilt.mod.json. CI now builds both loaders for all 8 subprojects.
### Infrastructure
- CI now builds each subproject separately (fail-fast disabled)
- Release workflow builds all versions, collects JARs, creates GitHub Release with changelog
- Changelog follows KeepAChangelog format for automated extraction
- CI and release workflows now build all 8 subprojects (26.x on JDK 25); CI triggers on `restructure`
- Modrinth dependency metadata backfilled retroactively on the published v3.0.0 versions
(fabric-api + midnightlib required, modmenu optional)
### Fixed
- 26.1.2: ray-hit-point distance no longer records hits against the wrong entity when the crosshair target differs from the attacked entity
- 26.1.2: `fabric.mod.json` depended on the non-existent `fabric-api` mod id instead of `fabric`
- All subprojects: `quilt.mod.json` license metadata said GPL-3.0 while v3.0.0+ is All Rights Reserved
- 26.1.2: hit distance no longer stays on screen forever — keep-last-distance and reset-time settings apply like on other versions
- 26.1.2/26.2: `fabric.mod.json` depends on `fabric-api` (the real mod id on 26.x) instead of the
`fabric` alias, which 26.x fabric-api jars no longer provide — the mod would not start otherwise
- Release pipeline: Modrinth publish skip-check always evaluated to "version exists" and silently
skipped every publish (the version-list endpoint ignores the `?version_number` query parameter);
the check now filters versions client-side
- Release pipeline: changelog extraction used a broken sed idiom that never looped and produced
headers plus one line (v3.0.0 shipped with empty release notes); extraction now reads the first
`## ` section body directly
- Release pipeline: CurseForge publish used `curseforge-relations`, an input name that only
existed in mc-publish v2 — v3 ignores it, so the published files carry no dependency relations;
renamed to `curseforge-dependencies` with the v3 `slug(type)` syntax (3.1.0 files on CurseForge
are unaffected; the fix applies from the next release)
## 3.0.0 — Multi-Version Restructure + Entity Filter
### Major Changes
- **License change** — Switched from GPL-3.0 to **All Rights Reserved (ARR)** for v3.0.0 and later. Old versions remain under GPL-3.0. Commercial redistribution and publishing forks under a different name are now explicitly prohibited.
- **Multi-project restructure** — Split into 4 version-specific subprojects:
- `version-1_17_1_18` (MC 1.18.2)
- `version-1_19` (MC 1.19.4)
- `version-1_20_1` (MC 1.20.1)
- `version-1_21_11` (MC 1.21.11)
- **Entity filter system** — New filter/EntityFilterHelper with whitelist/blacklist mode, category toggles (Players, Hostile, Passive, Boss, Other), and custom entity ID matching
- **Unified build config** — Shared Gradle configuration via root `build.gradle` (processResources, sourcesJar, publishing)
### Entity Filter
- Config entries: `entityFilterEnable`, `entityFilterMode` (WHITELIST/BLACKLIST), per-category toggles, `entityFilterCustomIDs`
- All 3 HUD display sections filtered with `!enable || shouldTrack(entity)`
- Works across all 7 supported versions
### Build System
- Root `build.gradle` with `subprojects` block for common config
- Added Fabric maven repository to all subprojects
- `org.gradle.parallel=true` for faster builds
- `--no-daemon` required (known daemon termination issue)
### Infrastructure
- `agents.md` — Project knowledge reference for AI-assisted development
- `.gitignore` — Added `*.ipr`, `*.iws`, `out/`, `*.log`, `Thumbs.db`, `.DS_Store`; fixed `/run/` → `run/` for subproject run dirs
- Community standards: CODE_OF_CONDUCT, CONTRIBUTING, SECURITY, issue & PR templates
- CI/CD: GitHub Actions (build, CodeQL, Scorecards, Dependabot auto-merge, stale issue management)
- Gradle updated to 9.5.0
- Java target updated to 21
### Fixes
- `run/` directories now properly excluded at subproject level
- IntelliJ workspace/project files (`.iws`, `.ipr`) excluded from version control
### Available Jars
| Version | File |
|---------|------|
| 1.18.2 | `reach_display-3.0.0-1.18.2.jar` |
| 1.19.4 | `reach_display-3.0.0-1.19.4.jar` |
| 1.20.1 | `reach_display-3.0.0-1.20.1.jar` |
| 1.21.11 | `reach_display-3.0.0-1.21.11.jar` |



