OreOverlay is a Fabric 1.21.11 client-only mod that renders translucent ore markers in-world from cached data.
The renderer still works from a local in-memory marker list. The new search flow only replaces how that list gets filled:
- manual import into
ores.json - in-game search UI that rewrites
ores.json - hidden/mined marker tracking in a separate state file
- reload without rebuilding the mod
The mod stays client-only. It does not talk to Minecraft servers, and it does not depend on any external ore website or helper process at runtime.
- Client-only translucent ore overlay
- Per-ore colors
- Dimension filtering
- Chunk-grouped marker storage
- Max render distance culling (
96blocks in v1) Ooverlay toggleRreloadores.jsonGopen the in-game ore search screen- Search-state persistence
- Query-result cache under the config folder
- Hidden-marker persistence separate from imported/search result data
Packaged Minecraft client:
%APPDATA%\\.minecraft\\config\\oreoverlay\\ores.json%APPDATA%\\.minecraft\\config\\oreoverlay\\hidden-markers.json%APPDATA%\\.minecraft\\config\\oreoverlay\\search-state.json%APPDATA%\\.minecraft\\config\\oreoverlay\\query-cache\\
This repo's VS Code dev launch:
run/config/oreoverlay/ores.jsonrun/config/oreoverlay/hidden-markers.jsonrun/config/oreoverlay/search-state.jsonrun/config/oreoverlay/query-cache/
O: toggle overlayR: reloadores.jsonG: open the in-game search screen
Reload success and failure are shown as client chat messages.
Press G in-game to open the search screen.
The screen uses:
- seed text input
- ore selector
- cluster filter:
All,Medium+,Big only - the current player position as the search origin
Buttons:
FetchReloadClear ResultsReset HiddenClear CachePaste Seedwhen available in an OP-enabled local world
The in-game search is intentionally limited in v1:
- Java Edition logic only
1.21.11only- overworld only
- single ore per fetch
Ancient debris remains supported for manual JSON import, but not for the in-game search screen because that search path is overworld-only in this first pass.
The in-game search is local and exact-only:
- it boots a local headless 1.21.11 overworld generation path in-process
- it generates fresh chunks for the requested seed
- it scans ore blocks
- it clusters neighboring ore blocks with 26-neighbor adjacency
- it never calls an external site or Python script
The exact mode is only intended to be exact for:
- vanilla Minecraft Java Edition
- the correct seed
- fresh chunks first generated in
1.21.11 - the default
normalworld preset - structures enabled
- bonus chest disabled
- the overworld
It is not claimed to be exact for:
- chunks generated in older versions first
- custom presets
- modded world generation
- datapacks that alter generation
- nether/end searches
A successful fetch:
- writes a new
ores.json - writes a per-query cached result under
query-cache - rebuilds the in-memory marker store
- shows a small client message with the marker count
The temporary runtime world used by the exact search path is deleted after each search. The cache keeps the normalized result JSON, not the generated world data.
ores.json uses this shape:
{
"dimension": "minecraft:overworld",
"source": "manual",
"seed": "123456789",
"version": "1.21.11",
"ores": [
{ "x": 100, "y": -54, "z": 100, "type": "diamond" },
{ "x": 104, "y": -53, "z": 101, "type": "diamond", "distance": 12.0, "clusterSize": 5 },
{ "x": 130, "y": -20, "z": 90, "type": "redstone" }
]
}Supported ore ids in imported JSON:
diamondredstonegoldironemeraldlapiscoalcopperancient_debris
Optional marker fields:
distanceclusterSizemetadata
The loader is intentionally strict. Unknown fields, malformed coordinates, invalid ore ids, or malformed JSON fail reload and keep the previous valid in-memory dataset.
ores.json is treated as the current imported/generated result snapshot. When you mine a marked block, OreOverlay now stores that hidden state in hidden-markers.json instead of mutating ores.json. Hidden-marker state follows the current seed/dimension/version rather than a specific provider mode.
- Install a Windows JDK
21. - Open the repository in VS Code.
- Make sure the VS Code Java extension is using that JDK.
- Open Run and Debug.
- Launch
Minecraft Clientusing launch.json. - Join an overworld world.
- Press
Gto open the search screen. - Enter the seed, choose an ore and cluster filter, and press
Fetch. - Use
Paste Seedin singleplayer if the button is enabled. - Use
Oto hide/show the overlay andRto reload the currentores.jsonsnapshot manually. - Use
Reset Hiddento restore boxes you already mined from view state. - Use
Clear Query Cacheif you want to drop cached search results.
If you want to skip the in-game search and import data manually, write to:
run/config/oreoverlay/ores.jsonfor the VS Code dev launch%APPDATA%\.minecraft\config\oreoverlay\ores.jsonfor a normal Minecraft install
- The renderer no longer depends on hardcoded test boxes.
- The current renderer still only reads loaded markers; search/import logic stays separate.
ores.jsonremains the active result snapshot, but mined-marker visibility is tracked separately inhidden-markers.json.- Query cache entries can be safely deleted from the UI.
- The in-game search currently omits ancient debris because the v1 search path is overworld-only.
- The in-game search is fully local and does not depend on external services.