Mods / Vintage Canvas
- Tags:
- Author:
- TonyMurchison
- Side:
- Both
- Created:
- Jun 6th at 10:03 AM
- Last modified:
- Jul 4th at 12:38 PM
- Downloads:
- 6635
-
Recommended download (for Vintage Story 1.22.0 - 1.22.3):
vintagecanvas_1.1.2.zip 1-click install
Vintage Canvas
Vintage Canvas is an immersive in-world painting mod. Designed to provide a gameplay experience similar to vanilla chiselling, it simulates the crafting and use of traditional oil paints on canvas.
The mod adds a collection of painting tools, with the possibilities ranging from simple charcoal sketches all the way to large canvasses with custom mixed paints, frames, and more!
To ask questions, request features, or show off your paintings, come join us over at the Discord!
Features
Vintage Canvas introduces the following blocks and items:
Easels
The core of the painting process, easels can contain canvases of their corresponding size (normal or large). While a canvas is on the easel, it can be edited with one of the painting tools. Right-clicking with an empty hand retrieves the canvas.
Canvases
Canvases are made from linen and sticks, and can be combined into their larger variants. Each size of canvas is available in landscape, portrait, and square variants.
Right-clicking a placed canvas with a board of wood cycles through different frame designs for the canvas.
Paints
Pigments can be ground in a quern from various materials, and then combined with plant oils in specialised paint jars to create the mod's default paints.
Early-game pigments can be obtained from common materials like clay, ferns, bone, and woad. Paints made from these pigments are somewhat muted, earthy tones. Late-game mineral resources like malachite can be ground into brighter, richer pigments.
Brushes
Available in several sizes, brushes apply whatever paint they have been dipped in onto the easel canvas. Alternatively, while the brush is clean, the brush blends existing colours to create smooth transitions.
Some items can be applied to the canvas directly, functioning like a small paintbrush with a preset colour and opacity. Currently, these include charcoal, chalk, and limestone.
Turpentine
Turpentine is a paint thinner derived from pine resin. While holding a brush, you can right-click a paint jar with turpentine to gradually reduce the opacity of your brush. The more you click, the more translucent your paint strokes will be.
Alternatively, shift + right-clicking the jar will completely clear your current brush, allowing you to use it as a blender.
Palettes
The palette is a utility block that lets you mix paints together. While placed in the world, clicking one of the palette's paint slots with a paint jar adds that paint to the slot. As you add more paint portions to the slot, the colour adjusts to be the average off all added portions. To clear a slot of paint, click it with a jar of turpentine.
To quickly switch between paints, hold the palette in your off-hand while painting. You can then use the tool mode selection key (default: F) to instantly swap.
Roadmap
These features are intended - if technically viable - to be implemented in the future.
- Optional paint consumption during use, to be toggled by config
- Support for painting using left-click in addition to right-click
- Potential support for drawing tablet pressure sensitivity
- Resolution of lingering visual issues in multiplayer
- Exporting paintings
- Frescos - painting art directly onto world blocks
- Including support for chiselled blocks to enable custom signage, painted sculptures, and more
- An artist class that removes off-hand hunger penalties for hammers and palettes
I will not be adding the ability to import images into Vintage Canvas. This would undermine a lot of the achievement in making your own in-world paintings, since it circumvents both the process and the materials required. Consider using the excellent Joy of Painting instead!
Thank you to both Miranda and Affonso for their help in providing code examples, testing, and feature feedback for Vintage Canvas.
| Mod Version | Mod Identifier | For Game version | Downloads | Released | Changelog | Download | 1-click mod install* |
|---|---|---|---|---|---|---|---|
| 1.1.2 | vintagecanvas | 1172 | Jul 4th at 12:38 PM | vintagecanvas_1.1.2.zip | 1-click install | ||
|
Features:
| |||||||
| 1.1.1 | vintagecanvas | 1583 | Jun 24th at 7:23 PM | vintagecanvas_1.1.1.zip | 1-click install | ||
|
Features
Bugfixes
| |||||||
| 1.1.0 | vintagecanvas | 981 | Jun 21st at 7:00 PM | vintagecanvas_1.1.0.zip | 1-click install | ||
|
Features
| |||||||
| 1.0.6 | vintagecanvas | 289 | Jun 20th at 8:36 PM | vintagecanvas_1.0.6.zip | 1-click install | ||
|
Features:
Bugfixes:
| |||||||
| 1.0.5 | vintagecanvas | 867 | Jun 16th at 1:19 PM | vintagecanvas_1.0.5.zip | 1-click install | ||
| |||||||
| 1.0.4 | vintagecanvas | 602 | Jun 15th at 8:46 PM | vintagecanvas_1.0.4.zip | 1-click install | ||
|
Multiplayer update
Known remaining issues:
I bought a second copy of the game to test the mod in multiplayer. Let me know if different issues appear in server-based multiplayer games! | |||||||
| 1.0.3 | vintagecanvas | 541 | Jun 13th at 8:35 AM | vintagecanvas_1.0.3.zip | 1-click install | ||
| |||||||
| 1.0.2 | vintagecanvas | 267 | Jun 11th at 5:01 PM | vintagecanvas_1.0.2.zip | 1-click install | ||
| |||||||
| 1.0.1 | vintagecanvas | 169 | Jun 9th at 8:20 PM | vintagecanvas_1.0.1.zip | 1-click install | ||
| |||||||
| 1.0.0 | vintagecanvas | 164 | Jun 6th at 10:04 AM | vintagecanvas_1.0.0.zip | 1-click install | ||
|
Initial release | |||||||







Definitely giving this mod a shot in singleplayer and someday in multiplayer, also sick to see Frescos on the roadmap too!
Shipwright: Vessels of Distant Shores (https://mods.vintagestory.at/shipwright) conflicts - the recipe for the "Drakkar Emblem Canvas" overwrites the recipe for the Small Square Canvas.
Additionally, Expanded Matter conflicts with the recipe for the Lead White pigment, though this has already been noted. Haven't noticed any other conflicts yet, myself, but I've basically only just started with this mod.
Can paintings be copied? I.e. if i want a duplicate?
Yes, but currently only in Creative. A tool for making screen print copies may eventually make it to survival.
Hey, I can't seem to find the recipe for lead white pigment in the handbook? How can you make it?
The recipe should be grinding up crushed galena. Any chance some other mod is overriding grinding recipes? It's showing up in the hand book on my end.
Ahhhh, then that would make sense - expanded matter (which is needed for bricklayers) seems to override that recipe 🥲
Hi! Something in VintageCanvas is preventing use of the Easel block in Esoterica (https://mods.vintagestory.at/show/mod/35893). I assume there is an interaction overriding something there.
Interesting! I've taken a look at it and verified the problem, though I genuinely don't know how or why that happens, and Esoterica doesn't appear to have a public github. I'll try to clean up anything that might be related, but I can't even tell for certain if the issue is caused on the end of Vintage Canvas.
Another small issue found:
When using this mod, it seems to prevent grinding any crushed material. Iron oxide, lapislazuli, alum, such stuff.
Thanks for the report! I included a fix in the most recent update.
I happened to encounter an error with putting dye in a paint jar that corrupts the world. Hope this can help with debuging :]
(I was using a bucket with base game dye and no other mods)
Running on 64 bit Windows 10.0.26200.0 with 32549 MB RAM
Game Version: v1.22.3 (Stable)
6/19/2026 2:30:38 AM: Critical error occurred
Loaded Mods: game@1.22.3, vintagecanvas@1.0.5, creative@1.22.3, survival@1.22.3
System.NullReferenceException: Object reference not set to an instance of an object.
at Vintagestory.GameContent.BlockLiquidContainerTopOpened.GenMesh(ICoreClientAPI capi, ItemStack contentStack, BlockPos forBlockPos) in VSSurvivalMod\Systems\Liquid\BlockLiquidContainerTopOpened.cs:line 140
at Vintagestory.GameContent.BlockLiquidContainerTopOpened.OnBeforeRender(ICoreClientAPI capi, ItemStack itemstack, EnumItemRenderTarget target, ItemRenderInfo& renderinfo) in VSSurvivalMod\Systems\Liquid\BlockLiquidContainerTopOpened.cs:line 71
at Vintagestory.Client.NoObf.InventoryItemRenderer.GetItemStackRenderInfo(ClientMain game, ItemSlot inSlot, EnumItemRenderTarget target, Single dt) in VintagestoryLib\Client\Render\InventoryItemRenderer.cs:line 426
at Vintagestory.GameContent.EntityPlayerShapeRenderer.RenderHeldItem(Single dt, Boolean isShadowPass, Boolean right) in VSEssentials\EntityRenderer\EntityPlayerShapeRenderer.cs:line 364
at Vintagestory.GameContent.EntityPlayerShapeRenderer.DoRender3DOpaque(Single dt, Boolean isShadowPass) in VSEssentials\EntityRenderer\EntityPlayerShapeRenderer.cs:line 277
at Vintagestory.Client.NoObf.SystemRenderEntities.OnRenderFrameShadows(Single dt) in VintagestoryLib\Client\Systems\Render\RenderEntities.cs:line 174
at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\Util\ClientEventManager.cs:line 243
at Vintagestory.Client.NoObf.ClientMain.MainRenderLoop(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 919
at Vintagestory.Client.GuiScreenRunningGame.RenderToPrimary(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 173
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 742
at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 686
at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(FrameEventArgs e) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 112
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
Event Log entries for Vintagestory.exe, the latest 1
==================================
{ TimeGenerated = 6/19/2026 1:22:26 AM, Site = , Source = Application Error, Message = Faulting application name: Vintagestory.exe, version: 1.22.3.0, time stamp: 0x691d0000
Faulting module name: openal32.dll, version: 1.23.0.0, time stamp: 0x63dd31ad
Exception code: 0x40000015
Fault offset: 0x00000000000df046
Faulting process id: 0xd94
Faulting application start time: 0x1dcffab7f313749
Faulting application path: C:\Users\tidus\AppData\Roaming\Vintagestory\Vintagestory.exe
Faulting module path: C:\Users\tidus\AppData\Roaming\Vintagestory\Lib\openal32.dll
Report Id: 221c57cc-0152-4463-9dab-0e9a065cf0de
Faulting package full name:
Faulting package-relative application ID: }
[This is my first time linking a crash report so I don't know if I did it right]
Thank you for the report! The bug has been fixed (to be included in an update later today). It should also un-corrupt your world.
Just out of curiosity, was there a particular reason you tried to add dye to the paint jars?
I was unable to make the relevant paint due to using an old version of the mod which hadn't added the vermillion and ultramarine pigments so I attempted to use red dye to substitute and experiment
Thank you for fixing it quickly (:
Is it possible to remove colors from a palette?
Yes! You click the slot with your turpentine jar.
Hi! I cant add pigments to any paint pots with oil, was wondering if there is a certain hotkey or if im doing stuff wrong :(
You should be able to place the jar of oil on the ground, and right-click it with your pigment.
Wow, it looks sooooooo nice ! I was wondering how you implemented pigments mixing ?
Thank you! There's a limited number of base pigments and corresponding paints in the mod. The mod can interpolate between those colours either on the canvas (with an opacity modifier based on how much turpentine you used) or on the palette (where the strength of additional paint is relative to the amount of paint you already added to the slot).
This is such a cool mod. I love the implementation of mixing colors and turpentine to make it feel more like real painting. I want to build an artist's studio in my world now! Thank you for making this. :)
+1 Oooh yeah! The mixing is such a great feature. And the thinning.
I can't wait to try it in an actual playthrough. I'll share my paintings with you guys when I do.
in fact, this is a Public Request, everyone share what you painted with us.
Seconding this! I'd love to see what people make.
absolutely wonderful mod. thank you for your hard work! (and buying a second copy wow, that's commitment!!)
Brilliant mod. Yet another reason to forfeit real life and live inside the game already.
Having the ability to import/export images would be very cool.
Hang a picture on the wall and the other player can't see it. I gave it to him, and he hung it, and I stopped seeing this picture. In the hands, the picture is visible to everyone. Latest Mod & Game Version
This bug is known, and I'm currently working on it. In the meantime, if you're really eager to show off your work, placed paintings should synchronise to any player leaving and rejoining the server.
One major thing - this (by default) can't be used with drawing tablets because the stylus input registers as a left-click by default, so you punch the canvas rather than paint on it. My suggestion is to add a simple toggle button to swap the input buttons so it can be used with a tablet.
Good suggestion! I'm currently simply planning to have brushes and charcoal behave identically on easel left and right click. To be included in the next update after addressing multiplayer issues.
Love this mod! Have been wanting this in Vintage Story for a long time, glad to see it finally brought to fruition! 💚
Oh wow!! I love that this includes dilution, and that the rendering style itself seems to really fit in with the style of vintage story.
Has anyone tried this with a drawing tablet? This would be so exciting to have, but I'm left handed and use a mouse right handed-- so that would make things a bit easier for me, I think.
I really can't wait to use this while getting drunk and pixel-painting along to Bob Ross's Joy of Painting. I can revive my old hobby in earnest, if you can call it that.
Hello! I was wondering how the multiplayer performance is? Any information would be helpful, thanks! :)
Hey there! I've had some reports of crashes on certain multiplayer instances, so while performace is apparently fine, stability may be an issue. I'll be addressing the problem as soon as I have a multiplayer testing setup.
Awesome mod! I just installed this to my server and it looks pretty close to finished already. One small thing I was missing is to acually see the amount of paint go down as I'm working.
As for now the paint jar is infinate. Is it a planned feature to make the brush interactions use a small amount of the liquid each time? That would give a finishing touch to this nice and immersive approach on painting.
Unfortunately players still crash, like described earlier by couki. Hope you can fix this soon!
seems that a lot of people are trying to dethrone vspaint, which is honestly really cool since painting is a thing that works beautifully for servers
This is amazing
Holy cow, nice work!
Thank you very much!
Could you add ground/wall signs for these? E.g. like a sign for shop etc.
I want to avoid adding dozens of different individually paintable objects, but one plan for the long-term is to add fresco painting to simple and chiselled blocks. That way you can just carve and paint any block you require.
What about an addon for signs then? Like Vintage Canvas Signs or something
Hi, loving this mod so far but I'm experiencing a crash in multiplayer when a nearby user breaks and re-places a canvas. Here is the log, this happens to users with and without OptiTime.
Hey there! I'll try to fix that as soon as I can. Just for clarification, does the crash only happen to other nearby players, or also to the player who's placing the canvas?
I believe it's only to nearby players. My friend didn't crash
I've patched the most likely culprit - I suspect that some of your players may have been on different versions of the mod at the same time. Version 1.0.2 is compatible with image save data from either version, so anyone running that version should no longer crash. Let me know if the problem still persists!
Woo-hoo! Glad to see this out, hope I helped somewhat :)
haha, consider VSpaint retired, holy moly, this is an amazing mod. Just...amazing! Bravo!
Thank you so much, that means a lot coming from you!
I am humbled and uplifted
Best painting mod for VS ever
**Heartbreak** (no, legit, this is a great mod)
This will become a vanilla feature someday, calling it now
TonyMurchison Hi! I've translated this awesome mod
So excited to use this in my world! Looks amazing
Oh, man, this looks really cool!
Wish you good luck in making this work; it'd certainly be a really awesome addition to have for decoration and just spending time in VS's cosy atmosphere.