Mods / WebCartographer color exporter

Tags:
Utility
Author:
Th3Dilli
Side:
Client
Created:
Feb 18th 2023 at 3:20 PM
Last modified:
Apr 22nd at 9:50 AM
Downloads:
3103
Follow Unfollow 72
Latest release (for Vintage Story 1.22.0-rc.2 - 1.22.0, potentially outdated):
webcartographercolorexporter_0.10.1.zip  1-click install

This is the client side mod to export the color mappings for the WebCartographer tool.

 

To start exporting start up any world with the same modes as your world that you want to create a web map for has.
Run ".exportcolors" to generate the mappgins.

Since there is currently an issue you may need to use ".exportcolors true" to only export the `blockcolormapping.json` to your local ModConfig and not send it to the server which causes the issue (only when connected to the server that is running the Webcartographer mod).


The exported `blockcolormapping.json` will be next to your games Mods folder within the ModConfig folder.

Mod Version Mod IdentifierFor Game version Downloads Released Changelog Download 1-click mod install*
0.10.1 webcartographercolorexporter
1.22.0-rc.2 - 1.22.0
120 Mar 30th at 11:00 AM webcartographercolorexporter_0.10.1.zip 1-click install

- Fixed crash with new cabinet blocks

0.10.0 webcartographercolorexporter
1.22.0-pre.1 - 1.22.0-rc.2
23 Mar 17th at 1:28 PM webcartographercolorexporter_0.10.0.zip 1-click install

update to 1.22

0.8.1 webcartographercolorexporter
1.21.0-pre.1 - 1.21.6
217 Dec 28th 2025 at 1:07 PM webcartographercolorexporter_0.8.1.zip 1-click install

Fixed sometimes exported colors would be invalid

0.7.0 webcartographercolorexporter
1.20.0 - 1.20.3 1.20.5 - 1.20.7 1.20.8 - 1.20.10 1.20.11 - 1.21.0-pre.1
674 May 2nd 2025 at 12:41 PM webcartographercolorexporter_0.7.0.zip 1-click install

- add option to only export the mappings locally

0.6.0 webcartographercolorexporter 438 Dec 6th 2024 at 5:08 PM webcartographercolorexporter_0.6.0.zip 1-click install

update to 1.20

0.5.2 webcartographercolorexporter 378 Mar 27th 2024 at 7:52 PM webcartographercolorexporter_0.5.2.zip 1-click install

allow it to run in Singleplayer when using with webcartographer (0.5.2 or newer)

0.5.0 webcartographercolorexporter 233 Feb 27th 2024 at 8:32 PM webcartographercolorexporter_0.5.0.zip 1-click install

only update version to match and have a stable one

0.5.0-rc.1 webcartographercolorexporter 240 Jan 26th 2024 at 10:12 PM webcartographercolorexporter_0.5.0-rc.1.zip 1-click install

send exported colors automatically to the server when the webcartographer mod with verison 0.5.0-rc.1 is installed on server, also starts export on server

0.2.0 webcartographercolorexporter
1.18.0 - 1.18.1
431 Apr 29th 2023 at 10:23 AM WebCartographerColorExporter_0.2.0.zip 1-click install

update api to 1.18

0.1.0 webcartographercolorexporter 349 Feb 26th 2023 at 9:12 AM WebCartographerColorExporter_0.1.0.zip 1-click install

intial release


18 Comments (oldest first | newest first) (threaded | flat)

Celanor, Mar 27th at 6:20 AM

(I'm trying to set WebCartographer up on a dedicated server, and my client (1.22.0-rc.5) is crashing when I run .exportcolors true (under the assumption I need to do this so I can run /webc export to update the worldmap after pregenning a lot of chunks).

I encountered this even after entering creative mode and disabling overload protection.

 

I've not changed any settings for this mod, and for WebCartographer all I've done is enable the webserver. The export at startup works and I can see the initial worldgen, but can't update the map due to this. Running /webc export without trying to export colors results in being disconnected, and the server has to be restarted before I can reconnect (it claims invalid password).

 

The server runs on Ubuntu 22.04, and client is on Windows 10.

 

Crash Report
Running on 64 bit Windows 10.0.19045.0 with 130616 MB RAM
Game Version: v1.22.0-rc.5 (Unstable)
3/26/2026 11:11:44 PM: Critical error occurred in the following mod: webcartographercolorexporter@0.10.0
Loaded Mods: prospecttogether@2.1.1, game@1.22.0-rc.5, creative@1.22.0-rc.5, survival@1.22.0-rc.5, webcartographercolorexporter@0.10.0
System.NullReferenceException: Object reference not set to an instance of an object.
at Vintagestory.GameContent.BlockBehaviorDisplay.GetColorWithoutTint(ICoreClientAPI capi, BlockPos pos, EnumHandling& handled) in VSSurvivalMod\BlockBehavior\BlockBehaviorDisplay.cs:line 348
at Vintagestory.API.Common.BlockGeneric.GetColorWithoutTint(ICoreClientAPI capi, BlockPos pos) in VintagestoryApi\Common\Collectible\Block\BlockGeneric.cs:line 234
at Vintagestory.API.Common.Block.GetColor(ICoreClientAPI capi, BlockPos pos) in VintagestoryApi\Common\Collectible\Block\Block.cs:line 2601
at WebCartographerColorExporter.WebCartographerColorExtractor.OnColorExport(TextCommandCallingArgs args) in /home/dilli/drive_linux/git_repos/vintagestory/mods/WebCartographer/WebCartographerColorExporter/WebCartographerColorExtractor.cs:line 77
at Vintagestory.Common.ChatCommandImpl.CallHandler(TextCommandCallingArgs callargs, Action`1 onCommandComplete, Dictionary`2 asyncParseResults) in VintagestoryLib\Common\API\Command\ChatCommandImpl.cs:line 313
at Vintagestory.Common.ChatCommandImpl.Execute(TextCommandCallingArgs callargs, Action`1 onCommandComplete) in VintagestoryLib\Common\API\Command\ChatCommandImpl.cs:line 238
at Vintagestory.Common.ChatCommandApi.Execute(String commandName, TextCommandCallingArgs args, Action`1 onCommandComplete) in VintagestoryLib\Common\API\Command\ChatCommandApi.cs:line 101
at Vintagestory.Common.ChatCommandApi.Execute(String commandName, IClientPlayer player, Int32 groupId, String args, Action`1 onCommandComplete) in VintagestoryLib\Common\API\Command\ChatCommandApi.cs:line 187
at Vintagestory.Client.NoObf.HudDialogChat.HandleClientCommand(String message, Int32 groupid) in VintagestoryLib\Client\Systems\Gui\Huds\HudDialogChat.cs:line 859
at Vintagestory.Client.NoObf.HudDialogChat.HandleClientMessage(Int32 groupid, String message) in VintagestoryLib\Client\Systems\Gui\Huds\HudDialogChat.cs:line 872
at Vintagestory.Client.NoObf.HudDialogChat.OnNewClientToServerChatLine(Int32 groupId, String message, EnumChatType chattype, String data) in VintagestoryLib\Client\Systems\Gui\Huds\HudDialogChat.cs:line 812
at Vintagestory.Client.NoObf.ClientEventManager.TriggerNewClientChatLine(Int32 groupid, String message, EnumChatType chattype, String data) in VintagestoryLib\Client\Util\ClientEventManager.cs:line 391
at Vintagestory.Client.NoObf.HudDialogChat.OnKeyDown(KeyEvent args) in VintagestoryLib\Client\Systems\Gui\Huds\HudDialogChat.cs:line 579
at Vintagestory.Client.NoObf.GuiManager.OnKeyDown(KeyEvent args) in VintagestoryLib\Client\Systems\Gui\GuiManager.cs:line 368
at Vintagestory.Client.NoObf.ClientMain.OnKeyDown(KeyEvent args) in VintagestoryLib\Client\ClientMain.cs:line 1861
at Vintagestory.Client.GuiScreenRunningGame.OnKeyDown(KeyEvent args) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 322
at Vintagestory.Client.ScreenManager.OnKeyDown(KeyEvent e) in VintagestoryLib\Client\ScreenManager.cs:line 902
at Vintagestory.Client.NoObf.ClientPlatformWindows.game_KeyDown(KeyboardKeyEventArgs e) in VintagestoryLib\Client\ClientPlatform\Input.cs:line 253
at OpenTK.Windowing.Desktop.NativeWindow.KeyCallback(Window* window, Keys key, Int32 scancode, InputAction action, KeyModifiers mods)
--- End of stack trace from previous location ---
at OpenTK.Windowing.Desktop.NativeWindow.RethrowCallbackExceptionsIfNeeded()
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 354
at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 131
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 95
Menelos, Jul 15th 2025 at 5:08 AM

PicSoul I tried your trick and I did not get kicked but the file was not transfered unfortunately.

Menelos, Jun 6th 2025 at 2:08 AM

Th3Dilli thanks a lot :-)

Th3Dilli , May 3rd 2025 at 7:46 AM

PicSoul

are you certain this is the case? I do not see how that would help since first the Server over load protection only affects worldedit to not overload the server with to large edits unless you disable it, It should not change anything related to the colorexport.

 

Menelos

this is now addressed with .exportcolors true, to only export locally

PicSoul, May 3rd 2025 at 1:41 AM

For those having issues running the .exportcolors commands on a server, try having an admin on the server go into creative mode, then hit the ~ key and on the right click "server overload protection", this will turn off the DDoS protection (temporarily) and should let you run the .exportcolors command to generate the mappings.

Menelos, May 1st 2025 at 3:30 AM

Th3Dilli That's rather inconvenient. Is it due to added blocks from mods that conflates the file size? Could it be possible to add an option to save the file locally as it does in singleplayer? and I'll move the file over to the server manually, that would makes things easier.

Th3Dilli , Apr 22nd 2025 at 8:52 PM

Morggin Menelos
there is currently in the game that causes issues sending large packets like the color mappings to the server, for now you have to export the colors on a local test world using the same mods and then manually upload those to the server

 

 

Morggin, Apr 7th 2025 at 10:30 PM

I get a client crash when trying to run ".exportcolors" and the server locks up.  When server starts it shows the following errors. Server version is 1.20.7 running on Linux.


7.4.2025 15:21:03 [Error] [webcartographer] Could not find color for 55239 : rustboundmagic:elementalcrystals-rust-small-unstable-up @ 4096083, 111, 4096057. If you are using mode: 0,1,2,3 try see if a color reexport (.exportcolors using the color exporter mod) helps else report it as a bug
7.4.2025 15:21:03 [Error] [webcartographer] Could not find color for 55239 : rustboundmagic:elementalcrystals-rust-small-unstable-up @ 4096131, 112, 4096082. If you are using mode: 0,1,2,3 try see if a color reexport (.exportcolors using the color exporter mod) helps else report it as a bug
7.4.2025 15:21:04 [Notification] [webcartographer] chunk: 100 / 941
7.4.2025 15:21:05 [Notification] [webcartographer] chunk: 200 / 941
7.4.2025 15:21:06 [Notification] [webcartographer] chunk: 300 / 941
7.4.2025 15:21:06 [Notification] [webcartographer] chunk: 400 / 941
7.4.2025 15:21:07 [Notification] [webcartographer] chunk: 500 / 941
7.4.2025 15:21:08 [Notification] [webcartographer] chunk: 600 / 941
7.4.2025 15:21:08 [Notification] [webcartographer] chunk: 700 / 941
7.4.2025 15:21:09 [Notification] [webcartographer] chunk: 800 / 941
7.4.2025 15:21:09 [Error] [webcartographer] Could not find color for 55239 : rustboundmagic:elementalcrystals-rust-small-unstable-up @ 4089565, 129, 4113521. If you are using mode: 0,1,2,3 try see if a color reexport (.exportcolors using the color exporter mod) helps else report it as a bug


here is my WebCartographerConfig.json

{
"Mode": 1,
"OutputDirectory": "/home/niukonska/data_niukonska/webmap",
"ExtractWorldMap": true,
"FixWhiteLines": false,
"ExtractStructures": true,
"AbsolutePositions": false,
"ExportHeightmap": true,
"ExportSigns": true,
"ExportUntaggedSigns": true,
"TileSize": 256,
"BaseZoomLevel": 9,
"CreateZoomLevels": true,
"MaxDegreeOfParallelism": -1,
"ExportOnStart": true,
"ExportChunkVersionMap": false,
"SaveMode": false,
"StopOnDone": false
}

Menelos, Apr 7th 2025 at 8:13 AM

While experimenting I sometimes got kicked by the server for ping timeout and that was very strange since I'm on the same LAN and the server and neither the server nor the network is loaded.

I was not able to reproduce the problem until I tried again to use .exportcolors. It happens that if I use this command the game continues to work but after ~2min I always gets kicked. If I do not use the command on the contrary I do not experience this problem. It looks like .exportcolors is trying to send the data and fails for some reason and the server interprets some timeout as the whole client being slow and kick it.

Menelos, Apr 7th 2025 at 7:10 AM

I made more tests.

When I connect to my server it takes a few seconds for the world around me to render and the handbook is empty, then all is fine from then on.

If I wait for all to be settled then I do not experience the crash. Nevertheless .exportcolors sais "Send data to server" but the server says nothing and the file is not updated.
I wipe my world and restarted from scratch and I can experience the same problem. The color file is not created and /wec export crashes the server (I reported this on the other mod).

I used a backup of the color file to try again the .exportcolors. It seems that after issuing this command /webc export does nothing (or is blocked somehow) and even the client side "Export started" message is not printed. I had to stop my client and again to be able to get it to work. Then, using the old color file (copied from my backup), I can see messages from webcartographer in the server logs and the map is properly generated.

If you need me to do more tests, just tell me.

Here is my config:

{
"Mode": 3,
"OutputDirectory": "/home/_vintagestory/data/webmap",
"ExtractWorldMap": true,
"FixWhiteLines": false,
"ExtractStructures": true,
"AbsolutePositions": false,
"ExportHeightmap": false,
"ExportSigns": true,
"ExportUntaggedSigns": true,
"ExportCustomTaggedSigns": true,
"TileSize": 256,
"BaseZoomLevel": 9,
"CreateZoomLevels": true,
"MaxDegreeOfParallelism": -1,
"ExportOnStart": false,
"ExportChunkVersionMap": false,
"SaveMode": false,
"StopOnDone": false
}

Menelos, Apr 4th 2025 at 5:35 AM

Quack Th3Dilli,

I have been using your webcartographer mods since the early 1.20 series and it worked well so far. Thanks a lot for the hard work, that's a very cute map.

I don't think I updated the map after 1.20.5 because I was just making some tests but yesterday I wanted to regenerate the map and used .exportcolors and got a similar client-only crash as Morggin experienced. On my side though I do not have any message on the server except the sudden disconnection, and nothing worth on the client side either. Now if I use /webc export then the export works flawlessly, so there is something wrong going on with the color exporter and newer VS versions, could you have a look please?

Th3Dilli , Mar 30th 2025 at 10:44 PM

there is a setting called savemode which kicks and locks your server for the export when turned on

if you go to that location in the game does that block show correctly?

Morggin

Morggin, Mar 25th 2025 at 2:54 AM

When i attempt to run .exportcolors the server just kicks me. My server is 1.20.6


24.3.2025 19:50:19 [Server Error] [webcartographer] Could not find color for 55239 : rustboundmagic:elementalcrystals-rust-small-unstable-up @ 4089525, 111, 4113916. If you are using mode: 0,1,2,3 try see if a color reexport (.exportcolors using the color exporter mod) helps else report it as a bug.

Kalvi, Mar 1st 2025 at 8:54 PM

.exportcolors - don't work

LaDestitute, Feb 27th 2025 at 1:29 AM

Do you know how to use this? This is meant to be used with the main WebCartographer mod, its specifically used to extract the colors from the color map world config option.

xxpowerofsoundxx, Nov 30th 2023 at 2:44 PM

Is there some simple way to just export a map? Like... I have the map db file. This gives me the colors? is there not a simple way to just make those 2 things become a map :/?

 

Chumber, Apr 29th 2023 at 5:48 PM

You're a legend mate

Chumber, Apr 27th 2023 at 5:05 PM

Any chance of this getting updated for 1.18? Looks like an API change broke something, crashes on command input now.

 

4/27/2023 8:56:03 AM: Critical error occurred
Loaded Mods: nooffhandhunger@1.0.0, primitivesurvival@3.1.8, ropebucket@1.0.0, spyglass@0.4.5, game@1.18.1, animalcages@2.1.4, carryon@1.0.0, commonlib@2.0.4, farmlanddropssoil@1.4.0, hudclock@2.9.1, creative@1.18.1, survival@1.18.1, webcartographercolorexporter@0.1.0, playercorpse@1.7.1, ropetongs@1.0.1
System.MissingFieldException: Field not found: 'Vintagestory.API.Common.Entities.Entity.Pos'.
at WebCartographerColorExporter.WebCartographerColorExtractor.OnColorExport(Int32 groupid, CmdArgs args)
at Vintagestory.Common.ChatCommandApi.<>c__DisplayClass24_0.<RegisterCommand>b__0(TextCommandCallingArgs args) in VintagestoryLib\Common\API\Command\ChatCommandApi.cs:line 264
at Vintagestory.Common.ChatCommandImpl.callHandler(TextCommandCallingArgs callargs, Action`1 onCommandComplete, Dictionary`2 asyncParseResults) in VintagestoryLib\Common\API\Command\ChatCommandImpl.cs:line 282
at Vintagestory.Client.NoObf.HudDialogChat.HandleClientCommand(String message, Int32 groupid) in VintagestoryLib\Client\Systems\Gui\Huds\HudDialogChat.cs:line 796
at Vintagestory.Client.NoObf.HudDialogChat.OnNewClientToServerChatLine(Int32 groupId, String message, EnumChatType chattype, String data) in VintagestoryLib\Client\Systems\Gui\Huds\HudDialogChat.cs:line 748
at Vintagestory.Client.NoObf.ClientEventManager.TriggerNewClientChatLine(Int32 groupid, String message, EnumChatType chattype, String data) in VintagestoryLib\Client\Util\ClientEventManager.cs:line 335
at Vintagestory.Client.NoObf.HudDialogChat.OnKeyDown(KeyEvent args) in VintagestoryLib\Client\Systems\Gui\Huds\HudDialogChat.cs:line 563
at Vintagestory.Client.NoObf.GuiManager.OnKeyDown(KeyEvent args) in VintagestoryLib\Client\Systems\Gui\GuiManager.cs:line 361
at Vintagestory.Client.NoObf.ClientMain.OnKeyDown(KeyEvent args) in VintagestoryLib\Client\ClientMain.cs:line 1736
at Vintagestory.Client.NoObf.ClientPlatformWindows.game_KeyDown(Object sender, KeyboardKeyEventArgs e) in VintagestoryLib\Client\ClientPlatform\Input.cs:line 250
at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
at OpenTK.Platform.NativeWindowBase.OnKeyDown(Key key, Boolean repeat) in C:\Users\Nexrem\Desktop\transfer\opentk\src\OpenTK\Platform\NativeWindowBase.cs:line 130
at OpenTK.Platform.Windows.WinGLNative.HandleKeyboard(IntPtr handle, WindowMessage message, IntPtr wParam, IntPtr lParam) in C:\Users\Nexrem\Desktop\transfer\opentk\src\OpenTK\Platform\Windows\WinGLNative.cs:line 646
at OpenTK.Platform.Windows.WinGLNative.WindowProcedure(IntPtr handle, WindowMessage message, IntPtr wParam, IntPtr lParam) in C:\Users\Nexrem\Desktop\transfer\opentk\src\OpenTK\Platform\Windows\WinGLNative.cs:line 828
at OpenTK.Platform.Windows.Functions.DispatchMessage(MSG& msg)
at OpenTK.Platform.Windows.WinGLNative.ProcessEvents() in C:\Users\Nexrem\Desktop\transfer\opentk\src\OpenTK\Platform\Windows\WinGLNative.cs:line 1551
at OpenTK.GameWindow.Run(Double updates_per_second, Double frames_per_second) in C:\Users\Nexrem\Desktop\transfer\opentk\src\OpenTK\GameWindow.cs:line 369
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs)
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 93