30 Fabric/Forge/NeoForge builds spanning 1.18.2 through 26.2 (the newest
stable Minecraft release at time of writing). Full per-version, per-loader
matrix is in PLAN.md.
A Minecraft client-side mod that snaps your facing direction to the nearest cardinal or intercardinal point (N, NE, E, SE, S, SW, W, NW) with a keybind. Perfect for precise ice boat placement!
| Range | Fabric | NeoForge | Forge |
|---|---|---|---|
| 1.21.4 - 26.2 | ✅ | ✅ | — |
| 1.18.2 - 1.20.1 | ✅ | — | ✅ |
Full per-version matrix (15 Minecraft versions, 30 builds total) is in PLAN.md.
Quilt is not built directly but is expected to work via its Fabric API compatibility layer.
- Direction Snapping: Press the keybind (default:
\backslash) to instantly snap to the nearest cardinal or intercardinal direction - 8 Directions: North, Northeast, East, Southeast, South, Southwest, West, Northwest
- Client-Side Only: No server installation required
- Multi-Loader: Available for Fabric, NeoForge, and Forge
- Install Fabric Loader
- Install Fabric API
- Download the Fabric version of Critical Orientation
- Place the
.jarfile in yourmodsfolder
- Install NeoForge
- Download the NeoForge version of Critical Orientation
- Place the
.jarfile in yourmodsfolder
- Install Forge
- Download the Forge version of Critical Orientation
- Place the
.jarfile in yourmodsfolder
- Launch Minecraft with the mod installed
- Enter a world
- Press the
\(backslash) key to snap to the nearest direction - Customize the keybind in Options > Controls > Critical Orientation
# Clone the repository
git clone https://github.com/bshuler/critical-orientation.git
cd critical-orientation
# Build all versions and loaders
./gradlew chiseledBuild
# Built JARs will be in versions/*/build/libs/| Component | Technology |
|---|---|
| Language | Java (17-25, toolchain-selected per Minecraft version) |
| Build System | Gradle 9.7.0 + Stonecraft |
| Multi-Version | Stonecutter |
| Multi-Loader | Architectury Loom (via Stonecraft) |
| Testing | JUnit 5 + JaCoCo, fabric-loader-junit, fabric-client-gametest (see below) |
Every build is tested at three tiers, all run by CI (build.yml):
- Unit tests + coverage gate — JUnit 5 over the pure yaw-snapping math,
with a JaCoCo 100% line-coverage gate enforced by
./gradlew check. The suite runs in all 30 version×loader builds, not just one. - Loaded-game tests (
fabric-loader-junit) — a real, bootstrapped Minecraft verifies the snap math agrees with the game's own yaw-to-facing mapping (Direction.fromYRot) on every Fabric cell, all 15 versions. A Minecraft release that quietly changed the yaw convention would pass the unit tests and fail here. - Client gametests (
fabric-client-gametest-api-v1) — a real Minecraft client (real window, real GL, real world, real player) presses a real backslash key through vanilla's keyboard handler and asserts the player's yaw, head yaw, and body yaw all snapped. This is the only tier that exercises the keybind itself — and the keybind is the whole mod. Runs on all 12 cells ≥ 1.21.4 in CI under a virtual display, with before/after screenshots uploaded as artifacts.
Negative controls were run against each tier (e.g. deleting the keybind
registration must turn the gametest red — it does). Details, including what
each tier can and cannot see, are in PLAN.md.
This project is licensed under CC0-1.0 (Public Domain). You are free to use, modify, and distribute this code without restriction.
Contributions are welcome! Please feel free to submit issues or pull requests.
Made with ❤️ for the Minecraft ice boat racing community