Tags
Creators
Details
1.3.0+neoforge-26.2
Compatibility
Changes
# Odyssey Map v1.3.0
Release Date: September 3, 2026
Supported MC Versions: 1.20.1 (Forge/Fabric), 1.21.1 (NeoForge/Fabric), 26.1.2 (NeoForge/Fabric), 26.2 (NeoForge/Fabric)
License
- Relicensed the project from GPL-3.0-only to Apache License 2.0.
- Added standard OSS contributor docs (NOTICE, CONTRIBUTING.md, CODE_OF_CONDUCT.md, .github/SECURITY.md).
Build / packaging
- Added root Gradle aggregator (uildAll → ll-jars/) covering all four version roots.
- Added local Modrinth + CurseForge upload script.
- Removed committed release jars and MultiLoader template READMEs.
Upgrade Notes
- Replace any
odysseymap-*-1.2.2.jarwith the matching 1.3.0 loader jar. - No config reset required.
Odyssey Map v1.2.2
Release Date: August 27, 2026
Supported MC Versions: 1.20.1 (Forge/Fabric), 1.21.1 (NeoForge/Fabric), 26.1.2 (NeoForge/Fabric), 26.2 (NeoForge/Fabric)
Bug Fixes
- Fixed MC 26.2 NeoForge/Fabric startup crash —
MixinGuitargeted an obsoleteextractRenderState(GuiGraphicsExtractor, DeltaTracker)descriptor. Vanilla 26.2 usesextractRenderState(DeltaTracker, boolean, boolean)and buildsGuiGraphicsExtractorlocally. The mixin now matches that signature, shadowsguiRenderState, and draws the minimap beforeapplyCursor.
Upgrade Notes
- Replace
odysseymap-*-26.2-1.2.1.jarwith the matching 1.2.2 loader jar. - No config reset required.
Odyssey Map v1.2.1
Release Date: July 16, 2026
Supported MC Versions: 1.20.1 (Forge/Fabric), 1.21.1 (NeoForge/Fabric), 26.1.2 (NeoForge/Fabric), 26.2 (NeoForge/Fabric)
Bug Fixes
- Fixed MC 26.2 client crash on launch (Fabric/NeoForge) —
GameRendererAccessorshadowedmainCameraas an interface field, which Java treats asstatic. Mixin rejected the apply withSTATIC modifier of @Shadow field mainCamera does not match the target. Removed the broken accessor and now use the publicGameRenderer.mainCamera()method. - Hardened LevelRenderer access on MC 26.2 — Replaced the same static
@Shadowfield pattern onLevelRendererAccessor.submitNodeStoragewith a proper@Accessorgetter so world waypoint rendering cannot hit the same mixin failure.
Technical Changes
- Deleted
GameRendererAccessor(Fabric + NeoForge) for MC 26.2. MixinGameRenderernow reads the camera viamc.gameRenderer.mainCamera().LevelRendererAccessoruses@Accessor("submitNodeStorage")instead of an interface@Shadowfield.
Odyssey Map v1.2.0
Release Date: June 24, 2026
Supported MC Versions: 1.20.1 (Forge/Fabric), 1.21.1 (NeoForge/Fabric), 26.1.2 (NeoForge/Fabric), 26.2 (NeoForge/Fabric)
New Features
- In-Game Settings Screen (MapSettingsScreen) — A comprehensive configuration UI screen directly accessible inside Minecraft. Players no longer need to edit
config.jsonmanually in their mod folders.- Accessible via a new
Settingsbutton on the Fullscreen Map top bar. - Bound to the default
Okey (fully rebindable in standard Controls config). - Divided into 4 categorical tabs:
- Minimap: Toggle minimap HUD, adjust size (64-512px), screen corner position, shape (circle/square), zoom, rotation mode, transparency, and show/hide options.
- HUD & Markers: Toggle overlays (compass, coordinates) and configure individual marker visibility (players, waypoints, death, beds, portals, structures, entities, distance overlays, and clamping).
- Fullscreen Map: Enable/disable map features, default zoom level, grid display, max waypoint limit, and safe render mode.
- Performance: Configure performance preset presets, scan interval, columns per tick, border thickness, and custom border color (Hex ARGB field with a live color swatch).
- Auto-Saving: Any changed options save automatically to the configuration file on click and apply in-game immediately without requiring client restarts.
- Accessible via a new
Technical Improvements
- Custom standalone screen implementation per version in the
commonsubproject packagedev.nightbeam.odysseymap.guiensuring full compatibility across Fabric, Forge, and NeoForge mod loaders. - Updated English locale keys in
en_us.jsonfor settings key mappings.
Odyssey Map v1.1.0
Release Date: June 17, 2026
Supported MC Versions: 1.20.1 (Forge/Fabric), 1.21.1 (NeoForge/Fabric), 26.1.2 (NeoForge/Fabric)
Bug Fixes
- Fixed fullscreen map crash (MC 26.1.2) — Texture composition was running on the deferred GUI render thread, violating the new rendering pipeline. Moved
compose()andupload()to the client tick thread via a newFullscreenMapRenderercoordinator class. - Fixed thread safety in TileCache — Replaced
HashMapwithConcurrentHashMapand madecurrentDimensionvolatile to prevent concurrent modification during map rendering. - Fixed texture upload/register crashes — Wrapped
DynamicTexture.upload()andTextureManager.register()in try-catch blocks with atextureReadyflag to prevent hard crashes on GPU upload failures. - Fixed NullPointerException in player head rendering — Added null checks for skin data (
getSkin().body().texturePath()/getSkin().texture()) before blitting player head icons, with a fallback to a simple dot marker. - Fixed fullscreen map opening without player/level — Added guards in
onOpenFullscreen()to prevent opening the map when player or level is null. - Fixed minimum map dimensions — Clamped fullscreen map panel to a minimum of 64x64 pixels to prevent degenerate rendering on small window sizes.
Improvements
- Fullscreen map UI refresh:
- Added a bordered frame around the map panel
- Added a close button (X) in the top-right corner
- Added zoom +/- buttons below the Recenter button
- Added current zoom level display
- Added current dimension label in the bottom-left corner
- "Loading map..." fallback — Shows a centered loading message when the map texture is not yet ready, instead of rendering nothing.
- Safe render mode — New config option
map.safeRenderModethat throttles fullscreen map composition to every 3 ticks, skips the player head blit, and uses simple dot markers to reduce GPU load. - Configurable waypoint rendering limits — New
map.maxWaypointsRenderedoption (default 100) caps how many waypoints are drawn on the fullscreen map to prevent frame drops in waypoint-heavy worlds. - Null-safe fullscreen map opening — The fullscreen map keybind now checks for player/level availability and config gates before opening.
New Features
- Waypoint search — A search box in the fullscreen map sidebar filters waypoints by name in real time.
- Waypoint favorites — Click the star icon on any waypoint to favorite it. Favorites sort to the top of the list and are persisted to disk.
- Waypoint visibility toggle — Click the eye icon to hide/show individual waypoints without deleting them. Hidden waypoints are still saved but not rendered on the map.
- New config options (under
mapsection):map.fullscreenEnabled— Enable/disable the fullscreen map (default: true)map.showCoordinates— Show coordinates overlay on fullscreen map (default: true)map.showWaypoints— Show waypoints on fullscreen map (default: true)map.showPlayerMarker— Show player marker on fullscreen map (default: true)map.maxWaypointsRendered— Max waypoints rendered (default: 100)map.safeRenderMode— Reduce rendering load (default: false)
Technical Changes
- New
FullscreenMapRendererclass handles deferred texture composition with dirty-flag caching and safe-mode throttling. MinimapTexturenow exposesisTextureReady()for callers to check texture availability before blitting.Markerclass gainedfavoritefield with getter/setter.MarkerManagergainedtoggleFavorite()andtoggleVisibility()methods.MarkerStoragenow serializes/deserializesvisibleandfavoritefields (backward compatible with old save files).MarkerListWidgetrewritten with search filtering, favorite-first sorting, and clickable star/eye icons.- Config values with
map.prefix are serialized into a nested JSON object for cleaner config files. - Updated
en_us.jsonlang file with new translation keys.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:lLviL6Oq:5ojc0ciN"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:lLviL6Oq:5ojc0ciN"
}

