Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
OreFinder
Points you to ore veins, dungeon entrances, spawners, ancient roots and rare pickables: screen arrow, light beam, map pin, once per find. Hotkey toggle. Client-side; a server can optionally enforce its config. Valheim 1.0.
| Date uploaded | a week ago |
| Version | 1.3.0 |
| Download link | Muindor-OreFinder-1.3.0.zip |
| Downloads | 963 |
| Dependency string | Muindor-OreFinder-1.3.0 |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2350README
Ore Finder
Points you to the ore veins around you in Valheim 1.0, and to dungeon entrances, monster spawners, ancient roots and rare pickables. Every second the mod looks for ore within a configurable radius (20 m by default) and for the other targets within 40 m. The first time something comes into range it gets a screen arrow with its name and distance, a coloured light, a vertical beam and a glow, for 10 seconds by default, plus a pin on the map. Each find is shown once, so walking past a deposit you already know does not nag you.
Only real ore counts: copper and tin deposits, silver veins, iron scrap piles, flametal. Plain rocks, obsidian and black marble are ignored unless you list them. Press F9 to turn the finder on and off.
Client-side: install it on every player's game that should use it. Nothing is needed on the server, and players without the mod can play on the same server.
Source, issues and releases: github.com/egor-muindor/ValheimMods.
Features
- Screen arrow: an arrow with the ore name and distance is drawn over the vein while it is in view. When the vein is behind you or outside the screen, the arrow sits at the screen edge and points towards it.
- Vein highlight: a pulsing point light in the ore's colour (orange for copper, blue-grey for tin, white for silver, rust for iron, red for flametal), a 30 m vertical beam and an emissive tint on the vein itself. Everything fades out at the end of the highlight.
- Once per vein: a vein is highlighted the first time it enters the radius
and not again, until you leave the world or run
orefinder reset. - Ore list: look for every ore, or only the ones you name.
- Map pin: a dot pin named after the ore, saved with your map, for every found vein. Nothing is added when another pin is already nearby, so your own pins and re-found veins do not pile up.
- Your own names: call the ores what you like, for example one letter each so the map stays readable. Off by default.
- Hidden ores need the Wishbone: silver veins and the scrap piles the Wishbone reacts to are only found while you carry it, like in the game.
- More than ores: entrances of crypts, caves and mines (with their own map pin icon), monster spawners (greydwarf nests, bone and body piles, surtling spawners and other respawning spawn points, with a hammer pin), ancient roots for the sap extractor, pickables you list (dragon eggs, Jotun puffs, Magecap, Fiddlehead, Volture eggs by default) and trees you list by their wood.
- Each group on its own switch: ores, dungeon entrances, roots and spawners
can be turned on and off separately, in the config, from the console
(
orefinder dungeons off) or with their own hotkeys. - Toggle key: F9 by default, configurable, with modifiers if you like. The state is saved to the config file.
Installation
Requires BepInEx 5.
- With a mod manager (r2modman, Thunderstore Mod Manager): install as usual.
- By hand: unzip the release and copy the
plugins/OreFinderfolder intoBepInEx/plugins, so the mod ends up atBepInEx/plugins/OreFinder/OreFinder.dll.
The config file BepInEx/config/muindor.OreFinder.cfg is created on first launch.
Configuration
Server
| Key | Default | Description |
|---|---|---|
ConfigPriority |
false |
Server only. When on, this server's settings replace those of every client that also has the mod. |
Install the mod on a dedicated server, or on the machine hosting the session,
and turn ConfigPriority on to keep a party in step: every client that also has
Ore Finder then looks for the same things and writes the same names on the map.
The server decides the whole of Detection, Targets, Hidden, Names and
Map, plus Enabled - so a shared map ends up with one set of pin names and
icons instead of one per player. Those settings are marked [synced] in the
generated .cfg.
The keys and the look of the highlight (Highlight, the toggle keys, IsDebug)
stay each player's own. While the server decides Enabled or a group switch,
the toggle keys and orefinder on|off|ores|dungeons|spawners|roots say so and
change nothing.
This never makes the mod required on either side:
- Players without it are unaffected. The mod is not part of the game's version check, so it never blocks a connection either way.
- A player with it can still join a server that does not have it, or one that
leaves
ConfigPriorityoff, and keeps their own settings. - The client's
.cfgis never written to. The server's values live in memory for as long as the connection lasts and are dropped when it ends. - Changing a setting on a running server sends it to the connected players right away.
General
| Key | Default | Description |
|---|---|---|
Enabled |
true |
Enable the finder. The toggle key flips this setting in game and saves it, unless the server decides it. |
ToggleKey |
F9 |
Key that turns the finder on and off in game. Modifiers are allowed, e.g. F9 + LeftControl. Ignored while typing in the chat or the console. |
OresToggleKey |
unset | Key that turns the ore search (FindOres) on and off on its own, leaving the other targets as they are. |
DungeonsToggleKey |
unset | Key that turns the dungeon entrance search (Dungeons) on and off on its own. |
SpawnersToggleKey |
unset | Key that turns the spawner search (Spawners) on and off on its own. |
IsDebug |
false |
Log every vein that is found, with its prefab and the item that made it count as ore. |
Detection
| Key | Default | Description |
|---|---|---|
Radius |
20 |
Search radius in metres around the player, 1 to 200. |
ScanInterval |
1 |
Seconds between two scans, 0.1 to 30. |
FindOres |
true |
Look for ores at all. Off = only the targets from the Targets section are found; Ores still says which ores count. `orefinder ores on |
Ores |
empty | Which ores to look for, comma-separated. Empty = every ore. Otherwise item names (CopperOre, TinOre, SilverOre, IronScrap, FlametalOre, FlametalOreNew) or object prefab names (rock4_copper, silvervein, MineRock_Obsidian). |
Highlight
| Key | Default | Description |
|---|---|---|
Duration |
10 |
Seconds a newly found vein stays highlighted, 1 to 120. |
ScreenMarker |
true |
Draw the arrow with the ore name and distance. |
Beam |
true |
Draw the vertical beam above the vein. |
Light |
true |
Light up the vein and the ground around it with a coloured, pulsing light. |
Glow |
true |
Tint the vein's own material with an emissive glow. Only works for materials whose shader has an emission colour. |
Message |
true |
Show a top-left message with the ore name and distance when a vein is found. |
Targets
| Key | Default | Description |
|---|---|---|
Dungeons |
true |
Find the entrances of crypts, caves and mines: any door with an Enter prompt (burial chambers, sunken crypts, troll caves, frost caves, infested mines, and whatever a game update adds). |
Roots |
true |
Find ancient roots, the sap extractor spots in the Mistlands. |
Spawners |
true |
Find monster spawners: greydwarf nests, evil bone piles, body piles and the like, plus the invisible spawn points that respawn their creature (surtling spawners at fire geysers, ...). Spawn points that fire only once are skipped. |
Pickables |
Pickable_DragonEgg, Pickable_Mushroom_JotunPuffs, Pickable_Mushroom_Magecap, Pickable_Fiddlehead, Pickable_VoltureEgg |
Pickables to find, by the object's prefab name or by the item it gives (DragonEgg, Thistle, Cloudberry), comma-separated. Other useful ones: Pickable_Thistle, CloudberryBush, Pickable_BogIronOre, Pickable_MountainCaveCrystal. Already picked ones are skipped until they regrow. Empty = none. |
Trees |
empty | Trees to find, by the wood they drop (YggdrasilWood, Blackwood, Frostwood, ElderBark, FineWood, ...), comma-separated. Empty = none. |
TargetRadius |
40 |
Search radius in metres for everything except ores, 1 to 200. Radius is for ores. |
Hidden
| Key | Default | Description |
|---|---|---|
WishboneNeeded |
InInventory |
Hidden ores are the ones the game marks for the Wishbone: silver veins and the scrap piles with a beacon. InInventory: found only while the Wishbone is anywhere in your inventory. Equipped: only while it is equipped, like the game's own finder. NotNeeded: always found. Hidden veins skipped for lack of the Wishbone are found later once you carry it. |
WishboneItem |
Wishbone |
Item that counts as the Wishbone, by prefab name or $item_ name. Change it for a modded finder item. |
Names
| Key | Default | Description |
|---|---|---|
CustomNames |
false |
Show your own names from Names instead of the game's names (Copper deposit, Silver vein, ...) in the screen marker, the message and the map pin. |
Names |
CopperOre=C, TinOre=T, SilverOre=S, IronScrap=I, FlametalOre=F, FlametalOreNew=F, GoldOre=B, Obsidian=O, Pickable_Mushroom_Magecap=Mc, Pickable_Fiddlehead=Fh, $item_ancientroot=YR |
Your names as key=name pairs separated by commas. The key is the ore item (CopperOre, GoldOre), the pickable's prefab or item (Pickable_DragonEgg, DragonEgg), the wood of a tree (YggdrasilWood), a dungeon's location key ($location_forestcrypt), a spawner's prefab (Spawner_GreydwarfNest) or the object prefab (rock4_copper, silvervein); the name is anything you like, spaces included. Targets without a pair get the initials of their name: Burial Chambers = BC, Sunken Crypt = SC, Dragon egg = DE, Magecap = Ma, Greydwarf spawner = GS. |
Map
| Key | Default | Description |
|---|---|---|
MapPin |
true |
Add a dot pin named after the ore to the map when a vein is found. The pin is saved with your map like one you placed yourself. |
MapPinSpacing |
10 |
Do not add a pin when any other pin (yours, the mod's, a death marker, ...) is within this many metres, 0 to 100. 0 = always add. Moving or momentary pins (players, shouts, pings, events) do not count. |
OrePin |
Dot |
Map pin icon for ores: Fire, House, Hammer, Dot or Portal, the five icons you can place yourself. |
DungeonPin |
House |
Map pin icon for dungeon entrances. |
SpawnerPin |
Hammer |
Map pin icon for spawners. |
OtherPin |
Dot |
Map pin icon for roots, pickables and trees. |
What counts as ore
With an empty Ores list, a mineable object is ore when one of the items it
drops has the word Ore or Scrap in its name: CopperOre, TinOre,
SilverOre, IronScrap, FlametalOre, FlametalOreNew, and the Deep North's
GoldOre (Petrified Tissue). Anything a game update adds with such a name is
picked up automatically. LeatherScraps and
ShieldCore do not qualify, and neither do Stone, Obsidian, BlackMarble
or Softtissue.
With a list, an object is ore when one of its drops or its own prefab name is
in the list. Names are case-insensitive and $item_ localisation keys are
accepted. The list replaces the rule: to get every ore plus obsidian, list all
of them:
Ores = CopperOre, TinOre, SilverOre, IronScrap, FlametalOre, FlametalOreNew, Obsidian
Console command
orefinder status # show the active settings, where they come from, and the counters
orefinder on # turn the finder on (same as the toggle key)
orefinder off # turn it off
orefinder reset # forget the veins already shown, so they are highlighted again
orefinder reload # re-read the config file
orefinder ores off # stop looking for ores, keep the other targets
orefinder dungeons on # look for dungeon entrances again
orefinder spawners # flip the spawner search
orefinder roots off
The group commands change FindOres, Dungeons, Spawners and Roots in
the config, like the hotkeys do, unless the server decides them. Pickables and
trees are lists; empty the list to turn them off.
How it works
Once per ScanInterval the mod walks the objects the game has loaded around
the player (ZNetScene's instance table) and keeps the ones within Radius.
Each object's prefab is classified once, through its drop table: MineRock5
(copper, silver, flametal), MineRock (tin, obsidian) and DropOnDestroyed
(scrap piles). An untouched copper or silver deposit is a plain Destructible
that turns into the mineable MineRock5 on the first hit, so the finder also
looks at what a destructible spawns when destroyed. Veins are remembered by
their network id and position: a partly mined deposit is still the same vein,
and so is the rock that replaces an intact deposit after the first hit.
Hidden ores are recognised the way the game does it: the object (or what it
turns into) carries a Beacon component, which is what the Wishbone's finder
effect listens for. The Wishbone check looks at the inventory once per scan.
The other targets are recognised by their components too, so nothing is
hardcoded to a list of prefabs: a root is a ResourceRoot, a spawner is a
SpawnArea (nests, piles) or a CreatureSpawner with a respawn time, a
pickable is a Pickable whose item is in the list (its picked state is read
from the object, so picked ones wait until they regrow), and a tree is a
TreeBase whose log chain (TreeLog and its sub-logs) drops a listed wood.
Dungeon entrances take a detour. A door is a Teleport trigger, but the game
does not spawn it as a network object: a location is spawned in two parts,
every ZNetView on its own and everything else as one plain object under the
location's LocationProxy (which is a network object). The doors are in the
second part, so they never appear in the instance table. The finder looks at
every proxy within TargetRadius + 50 m (a proxy stands at the location's
centre, the door can be some way out), takes the teleports under it that are
not inside the interior (the game keeps interiors above 3000 m; the exits are
there) and marks each door by its own position. The door is named after its
enter text (Burial Chambers, Sunken Crypt, ...) or, without one, after the
location.
The highlight does not touch the vein's game object: the light and beam are
separate objects, and the glow is a material property block that is cleared
when the highlight ends. Map pins go through Minimap.AddPin like your own
pins and are saved with the map. The screen markers are drawn with IMGUI, so no canvas
or font asset is needed. The only Harmony patch is Terminal.InitTerminal, for
the console command.
Compatibility
- Works alongside any mod: nothing of the game is patched except the console command registration.
- Modded ores are found when their ore item's prefab name contains the word
Ore or Scrap; otherwise add them to
Ores. - The toggle key is checked through the game's input layer (
ZInput), so it works with the same keys the game accepts.
License
MIT
CHANGELOG
Changelog
1.3.0 - 2026-09-16
- Optional server configuration. A server that also runs OreFinder and turns the new
Server.ConfigPriorityon decidesEnabledand the whole ofDetection,Targets,Hidden,NamesandMapfor the players who have the mod, so a party looks for the same things and a shared map ends up with one set of pin names and icons instead of one per player. The settings that travel are marked[synced]in the config file. - The toggle keys, the
Highlightsection andIsDebugstay each player's own and are never sent. While the server decidesEnabledor a group switch, the toggle keys andorefinder on|off|ores|dungeons|spawners|rootssay so and change nothing. - The mod stays optional on both sides: it is not part of the game's version check, players without it are unaffected, and it keeps working on servers that do not have it or that leave
ConfigPriorityoff. - The client's config file is never written to. The server's values live in memory for as long as the connection lasts and are dropped when it ends; a setting changed on a running server is sent to the connected players right away.
orefinder statusandorefinder reloadsay where the active settings come from.
1.2.0 - 2026-09-12
- Fixed: dungeon entrances were never found. The doors are not network objects: the game spawns them, with the rest of a location's non-networked parts, as one object under the location's proxy, so the scan of loaded network objects never saw them. The finder now looks under every location proxy nearby and marks each door by its own position. Location proxies are looked at from
TargetRadius+ 50 m, because a proxy stands at the location's centre and the door can be some way out. A door without an enter text is named after its location. - New: monster spawners.
Spawners(on by default) finds greydwarf nests, evil bone piles, body piles and the like (SpawnArea), plus the invisible spawn points that respawn their creature (CreatureSpawnerwith a respawn time: surtling spawners at fire geysers, the respawning points in ruins and camps). Spawn points that fire only once are skipped. They get a red highlight and a hammer map pin (SpawnerPin); the name is the creature's ("Greydwarf spawner"), initialsGSwith custom names. - New: each group on its own switch.
FindOresturns the ore search off while the other targets stay on;orefinder ores|dungeons|roots|spawners [on|off]flips a group from the console (no on/off = toggle);OresToggleKey,DungeonsToggleKeyandSpawnersToggleKey(unset by default) do the same with a key. Turning a group off removes its highlights at once. - Changed:
orefinder statuslists the groups that are on ("targets: ores, dungeon entrances, ...") and the ore list separately. - Changed: no map pin for a find inside a dungeon (the interior's coordinates point at nothing on the map); the arrow, light and beam still show.
1.1.1 - 2026-09-12
- Defaults checked against the game's ID list:
Pickablesnow lists the pickable objects by their exact prefab names (Pickable_DragonEgg,Pickable_Mushroom_JotunPuffs,Pickable_Mushroom_Magecap,Pickable_Fiddlehead,Pickable_VoltureEgg); item names still work too. The short names for Magecap and Fiddlehead are keyed the same way. - Deep North: the new ore item
GoldOre(Petrified Tissue, smelts into Bloodgold) is found by the ore rule; its short name isB.Frostwood(Timberwood) is a valid entry forTrees.
1.1.0 - 2026-09-12
- New targets besides ores, each with the same arrow, light, beam and map pin: dungeon entrances (any door with an Enter prompt: burial chambers, sunken crypts, troll caves, frost caves, infested mines, ...), ancient roots, and pickables from the
Pickableslist (dragon eggs, Jotun puffs, Magecap, Fiddlehead, Volture eggs by default). Trees can be listed by their wood inTrees(empty by default). Non-ore targets use their ownTargetRadius(40 m). - Map pin icons per group:
OrePin(dot),DungeonPin(house),OtherPin(dot), any of the five player pin icons. - Custom names: targets without a pair in
Namesget the initials of their name (Burial Chambers = BC, Dragon egg = DE).Namesnow also carriesMushroomMagecap=Mc, Fiddlehead=Fh, $item_ancientroot=YR.
1.0.3 - 2026-09-12
- New: hidden ores need the Wishbone. Veins the game marks for the Wishbone (silver veins, scrap piles with a beacon) are only found while the Wishbone is in your inventory;
WishboneNeededcan require it equipped instead, or drop the requirement. Veins skipped for lack of the Wishbone are found later once you carry it.
1.0.2 - 2026-09-12
- New: your own names for the ores.
CustomNames(off by default) switches the screen marker, the message and the map pin to the names fromNames, which comes pre-filled with one-letter names:CopperOre=C, TinOre=T, SilverOre=S, IronScrap=I, FlametalOre=F, FlametalOreNew=F, Obsidian=O.
1.0.1 - 2026-09-12
- Fixed: intact copper and silver deposits were only found after the first hit. An untouched deposit is a plain destructible that turns into the mineable rock when hit; the finder now looks through that as well. The rock that appears after the first hit is recognised as the same vein and not highlighted again.
- New: a map pin (dot with the ore name, saved with your map) for every found vein,
MapPinin the config. No pin is added when any other pin is withinMapPinSpacingmetres (10 by default).
1.0.0 - 2026-09-12
First release, built against the Valheim 1.0.12 assemblies.
- Scans a configurable radius (default 20 m) around the player every second and highlights each ore vein the first time it comes into range.
- Screen arrow with the ore name and distance: over the vein while it is in view, at the screen edge pointing towards it otherwise.
- The vein itself gets a coloured pulsing light, a vertical beam and an emissive tint for a configurable time (default 10 s).
- Ores are recognised by what they drop, so plain rocks are ignored; the
Oressetting narrows the search to a list of items or prefabs. - Toggle key (default F9), saved to the config; console command
orefinder status|on|off|reset|reload.