Mods / VSProspectorInfo

Category: #QoL #Utility
Author: Capsup
Side: Client
Created: Feb 16th
Last modified: 6 days ago
Downloads: 2302

This mod takes the results from your prospecting pick attempts and stores the results automatically, on the appropriate chunk in the world map. This makes it a lot easier to dig for local peaks of ores, generally just prospecting whenever you're out spelunking and gives you visual aid as to where you have prospected before.

The mod is purely client-side, and will not require the server to have it installed, but neither will any data be shared with others. Don't install on a server.


  • Parse, save and load prospecting pick data, per chunk
  • Toggleable visual aid on the world map, of which chunks you have data for


  1. Download the zip package for the latest release here on the modhub
  2. Drop the zip directly into %appdata%\VintageStoryData\Mods (or where ever your VS data is installed to)
  3. Don't extract it
  4. Make sure you do not have the old vsprospectorinfo (or prospectorinfo) installed


  • .pi - main command for the mod and the default sub-command is to 'showoverlay', which will toggle the rendering of the texture on the map
  • .pi showoverlay [true,false] - Sending no arguments will simply toggle the value of the RenderTexturesOnMap config option. Sending either true or false, will set the config option to the appropriate value
  • .pi setcolor [0-255] [0-255] [0-255] [0-255] - Set's the value of the TextureColor field in the config & rebuilds the texture.
  • .pi setbordercolor [0-255] [0-255] [0-255] [0-255] - Set's the value of the BorderColor field in the config & rebuilds the texture.
  • .pi setborderthickness [number] - Set the BorderThickness value in the config & rebuilds the texture.
  • .pi toggleborder [true,false] - Set's the `RenderBorder` value in the config & rebuilds the texture.


  • TextureColor [0-255] [0-255] [0-255] [0-255] - The default color to use for the texture. Default: 7 52 91 50
  • BorderColor [0-255] [0-255] [0-255] [0-255] - The default color to use for the border texture. Default: 0 0 0 200
  • BorderThickness [number] - The thickness, in pixels, of the border color. Default: 1
  • RenderBorder [true,false] - Whether or not to render the border at all. Default: true
  • AutoToggle [true,false] - Whether or not to toggle the texture on map automatically, based on the player equipping/unequipping a prospecting pick. Default: true


Whenever you finish prospecting a chunk, the data is saved into the ModData folder and added to the chunk info of the world map. This is just a 1:1 parsing of the chat message that the prospecting pick sends. 

The mod renders a transparent square of all chunks that have been prospected. If a chunk is re-prospected, the message is simply overwritten. The rendering of these squares can be toggled with the .pi command.


  • This mod is a fork of P3t3rix's original mod, ProspectorInfo, from here, so all credit to him for the original idea of the mod and the original code.


  • Want more awesome Vintage Story content? Help me spend more time developing mods than enterprise software, by becoming a patron or donating straight to paypal!


So how do I prospect?

All you gotta do for prospecting is find the ‘local peak’ of whatever ore you’re trying to find. Run around the world and start prospecting each chunk until you get like a reading of Medium or above, then you can begin finding the local peak. Propick once, if nothing, skip like 5 chunks.

Use `.debug wireframe chunk` to visualize chunk borders, so you always stand in the middle of a chunk to do it, so the distance between your propick attempts are consistent. Remember that only the first block destroyed matters, the two other do literally nothing besides making it a non-trivial task to propick.

It shouldn't take very long to find the local peak if you propick once in a chunk, then go 1 chunk in each cardinal direction from the same chunk and propick again. Then keep going like that, until you find the local peak. 
As long as you do it once per chunk (and save data with mod or bookmark), you will very quickly see the pattern of the ore map. Then you just have to continuously walk in the direction in which the concentration of ore increases, to quickly home in on the local peak.
If you 'overshoot' by skipping like 2 or 3 chunks at a time, and then the percentage starts going down, then you already know that one coordinate of the local peak is between where your concentration started to drop and where you propick'ed the last time where you saw it increase.

Once you found the local peak, dig straight down in the corners of the chunk + the middle, until you find the veins of ore. Optionally, use the secondary propick mode on the way down to help you find veins. 

You never want to be digging horizontally, only vertically. To find every single vein in a chunk will, at most, require 6 tunnels from the top to bottom, if you use secondary-mode propick at every 6th block going straight down in your tunnels.

Version For Game version Downloads Release date Changelog Download
v4.1.0 346 6 days ago Show
v4.0.2 1011 May 10th Show
v4.0.1 321 Apr 28th Show
v4.0.0 116 Apr 27th Show
v3.1.0 508 Feb 16th Show


Aledark, 10 hours ago

Found this on the developer mode when debugging:

4.7.2021 14:47:35 [Warning] Texture with texture id 513 is leaking memory, missing call to Dispose. Allocated at at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
at System.Environment.get_StackTrace()
at Vintagestory.API.Client.LoadedTexture..ctor(ICoreClientAPI capi, Int32 textureId, Int32 width, Int32 height)
at ProspectorInfo.Map.ProspectorOverlayLayer.GenerateOverlayTexture() in C:\source\civcraft\vsmods\mods\vsprospectorinfo\src\Map\ProspectorOverlayLayer.cs:line 210
at ProspectorInfo.Map.ProspectorOverlayLayer..ctor(ICoreAPI api, IWorldMapManager mapSink) in C:\source\civcraft\vsmods\mods\vsprospectorinfo\src\Map\ProspectorOverlayLayer.cs:line 59
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at System.Activator.CreateInstance(Type type, Object[] args)
at Vintagestory.GameContent.WorldMapManager.OnLoaded()
at Vintagestory.API.Common.Action.Invoke()
at Vintagestory.Client.NoObf.ClientMain.OnServerBlocksItemsReceivedStep5(Action onCompleted)
at Vintagestory.Client.NoObf.ClientMain.ExecuteMainThreadTasks(Single deltaTime)
at _kWAroornC4OFzHEC3up4Bpv3bZr._56ZyhqUQRdVXcP01CGFRYWAAMlh(Single )
at _eJCiYuww7mZPzQbnKfiEtnI4MDD._EthRnPRd1tbvpv8nkAwvMnUFZzD(Single )
at _eJCiYuww7mZPzQbnKfiEtnI4MDD._B2re7Q8SHFC6kaTk8kmsYrPVaKB(Single )
at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(Object sender, FrameEventArgs e)
at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
at OpenTK.GameWindow.RaiseRenderFrame(Double elapsed, Double& timestamp)
at OpenTK.GameWindow.DispatchRenderFrame()
at OpenTK.GameWindow.Run(Double updates_per_second, Double frames_per_second)
at _DlY2IRaBbEwZdipnKtrb40WUzTZ._kVFD8SxIojOmGrxNtThdBHagQeh(_7hnpozI2lFsAA8Wa5CIiUgRAbXjA , String[] )
at _gCIDaxCwdS0mkZub2rV5ATdV3hOA._kVFD8SxIojOmGrxNtThdBHagQeh(ThreadStart )
at _DlY2IRaBbEwZdipnKtrb40WUzTZ._FYLYn4vIRGO1ai2ad7yF4iFZOlq(String[] ).

WQP, 4 days ago

Handy mod for an often frustrating process!

Drakker, May 22nd

Glad to see that ProspectorInfo lives on! Thanks for keeping it alive and improving it!

Ravingmad, May 15th

This is such a great mod. Thanks for it and for the clear "how do I prospect" instructions. I was having the hardest time finding iron in my world -- installed this mod and used your instructions for finding a "local peak" and then digging shafts, and found a huge hematite vein within an hour. 

Also so useful for remembering where I had readings on thing I might want to return to later.

Craluminum, Apr 27th

Now it looks exactly as it should be. Nice work

ChelseaKnight, Apr 21st

I second this, would love to have a visual grid to separate each chunks

Craluminum, Mar 1st

It would be convenient if there were borders on the render when ".debug wireframe chunk" is on

Capsup, Feb 16th
delete edit