Mods / Expressions

Tags:
Cosmetics QoL Tweak
Authors:
Chiruda, SiiMeR
Side:
Both
Created:
Oct 30th 2025 at 8:38 PM
Last modified:
13 hours ago
Downloads:
4080
Follow Unfollow 132
Recommended download (for Vintage Story 1.21.0-pre.1 - 1.21.7):
expressions_1.4.0.zip  1-click install

If you like what I do, consider buying me a hot chocolate on Ko-fi! I am a student, and it helps a lot~

GITHUB REPOSITORY: https://github.com/SiiMeR/vs-expressions

Expressions

Enables you to select your eye, eyebrows and mouth expressions individually of each other, letting you customise your expression to fit exactly what you want.

You can edit your expression at any time using the editor with the chat command .exsel, which will allow you to view and tweak your changes in real time (without requiring a charsel).

Expressions can also be edited with the chat command /expressions [category] [name], for example /expressions eyebrows caring.
Because of this chat command, it is possible to make a macro to quickly change between your custom preset expressions.

This mod will gradually have more custom expression options as it updates.

 

Custom Expressions:

  • Eyelashes (Eyes)
  • Judgemental (Eyes)

 

Devlog:

  • 30/10/2025 - v.1.0.0 - Initial release + eyelashes
  • 30/10/2025 - v.1.1.0 - Bugfixes
  • 23/11/2025 - v.1.2.0 - Now compatible with playermodellib, and expressions properly save and display between sessions
  • 20/04/2026 - v. 1.4.0 - Added Racial Equality support and a new Judgemental eyes look

 

Future Ideas:

  • A fourth "decal" selector with cosmetic options like scars, freckles, beauty marks, etc.
  • The option to create custom "face-paints" with an ingame editor, to paint whatever you want onto your face texture
  • More custom 3D options for all expressions

Mod Version Mod IdentifierFor Game version Downloads Released Changelog Download 1-click mod install*
1.4.0 expressions
1.21.0-pre.1 - 1.21.7
26 13 hours ago expressions_1.4.0.zip 1-click install
  • Add Racial Equality support
  • Add Judgemental eyes look
1.2.0 expressions 3346 Nov 22nd 2025 at 6:35 PM expressions_1.2.0.zip 1-click install
  • Fixed other players not seeing your choice
  • Fixed expression resetting upon relog
  • New: PlayerModelLib compatibility
1.1.0 expressions
1.21.0 - 1.21.5
661 Oct 30th 2025 at 10:31 PM expressions_1.1.0.zip 1-click install

Small bugfixes - previously, accepting an expression would overwrite your clothes.

Additionally you now are no longer faceless when joining for the first time.

1.0.0 expressions
1.21.0 - 1.21.5
47 Oct 30th 2025 at 8:39 PM expressions_v1.0.0.zip 1-click install

Initial release


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

SiiMeR, Jan 27th at 7:28 PM

Not sure what's the issue and I don't have time to look into it

P1nkOblivion, Jan 26th at 6:22 PM

Hoping for a fix with this error


Crash Report
13:22:01  [Error] Mod exception during event OnPlayerNowPlaying. Will skip to next event
13:22:01 [Error] Exception: The given key 'eyebrow' was not present in the dictionary.
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at Expressions.ExpressionsModSystem.UpdateExpression(IServerPlayer fromPlayer, String facepart, String value) in C:\Users\siimr\Desktop\VSMods\vs-expressions\Expressions\ExpressionsModSystem.cs:line 190
at Expressions.ExpressionsModSystem.<StartServerSide>b__6_0(IServerPlayer player) in C:\Users\siimr\Desktop\VSMods\vs-expressions\Expressions\ExpressionsModSystem.cs:line 94
at Vintagestory.Server.ServerEventManager.<>c__DisplayClass126_0.<TriggerPlayerNowPlaying>b__0(PlayerDelegate dele) in VintagestoryLib\Server\ServerEventManager.cs:line 602
at Vintagestory.Server.ServerEventManager.Trigger[T](Delegate[] delegates, String eventName, Action`1 onDele, Action onException) in VintagestoryLib\Server\ServerEventManager.cs:line 723
Vari_Ares, Jan 25th at 9:28 AM

Should be Vanilla Bruh...

Kida_Mei, Dec 27th 2025 at 1:50 AM (modified Dec 27th 2025 at 9:39 PM)

I keep running into a crash-to-desktop whenever I attempt to use the mod on our server. It very well could be a mod conflict, but I'm not familiar with code enough to know exactly what's going on lol.

*EDIT: Upon further testing, my players on my server who picked the default seraph model can use the expressions fine, but those of us who use extra races through player model lib have this crash!

Crash Report
Running on 64 bit Windows 10.0.26200.0 with 16131 MB RAM
Game Version: v1.21.6 (Stable)
12/26/2025 6:46:53 PM: Critical error occurred in the following mod: expressions@1.2.0
Loaded Mods: americanfrontiersman@1.8.5, amulight@0.0.2, angelbelt@1.6.0, bedrespawn@1.1.0, BiggerStacks@1.1.0, blackguardadditions@1.1.8, bloomeryfulldrops@1.0.0, catchlivestock@0.2.0, chandeliercraft@2.0.2, charlottesclothes@1.2.1, cbr@2.0.1, chiseltools@1.15.6, cuteclothingfixed@2.0.0, decor@1.3.1, hqzlights@1.1.2, foodcrate@2.2.1, forestsymphony@1.0.6, fadynasties@1.2.5, fagothic@1.3.1, fagreenwich@1.4.2, fahussar@1.1.3, falandsknecht@1.2.2, fatemplar@1.4.3, faviking@1.1.0, forlornadditions@1.0.3, glassview@1.2.0, hangingoillamps@1.0.5, japanesearchitecture@0.9.4, juicyores@1.0.1, lettherebelight@0.0.5, millwright@1.3.1, mushroomhat@1.0.7, nightlight@1.3.6, ohaa@1.0.0, playermodellib@1.7.4, primitivesurvival@4.0.2, scrollrackable@1.4.0, fseasonedfirewood@1.2.5, somedisassemblyrequired@1.7.8, specificclutter@1.0.0, stoneharvesting@1.2.1, temporal_gears_stack@1.0.0, usefultraders@2.3.1, game@1.21.6, wallpaperblocks@2.0.1, wildfarmingrevival@1.4.2, aculinaryartillery@2.0.0-dev.11, admirableattire@1.1.0, alchemy@1.8.0-rc.7, allclasses@2.0.9, animalears@1.0.0, anthrowolfrace@0.1.2, antlershorns@1.3.6, apebeams@1.1.1, apeflowerpots@1.3.1, apelanterns@1.3.5, wrenchroof@1.3.0, arrowbarrels@1.4.0, egocaribautomapmarkers@4.0.3, beararmorrepair@1.0.3, beastsofmen@0.1.1, betterruins@0.5.5, blocksoverlay@4.7.1, boattags@1.0.1, butterflycases@1.0.2, canadianwinterclothes@1.2.0, carryon@1.12.1, cartwrightscaravan@1.8.0, censership@1.0.5, colorfulcandles@1.3.0, commonlib@2.8.0, dressedtokillredux@1.0.0, expandedskinsfix@1.1.0, expressions@1.2.0, extrainfo@1.10.1, foodshelves@2.3.3, freedomunits@1.1.5, gimap@1.5.0, goblinears@2.3.3, handbookbookmarkbutton@0.1.2, hangingbaskets@1.1.0, hudclockpatch@1.1.2, justanarrowheadmold@1.0.1, JustTrapdoors@1.0.2, kevinsfurniture@1.7.5, lenstweaks@1.0.7, lupinerace@0.1.3, maketeaforked@0.7.1, mannequinstand@1.0.7, medievalexpansionpatch@1.3.4, metalsupports@1.0.4, meteoricsteel@1.0.6, mythiclegends@1.0.2, optitime@1.3.11, packrat@0.9.6, playerlist@2.3.4, purposefulstorage@1.5.1, realsmoke@1.1.10, redspecstrashslot@1.0.0, rivers@4.7.3, roomtools@1.4.0, rubberbandaid@1.0.1, rustboundmagic@3.1.12, scrollcharactercreation@1.0.3, slapalabelonit@1.0.0, somethinginthewater@1.2.7, cookie12000stickbeam@1.2.2, temporalstormtimer@1.1.1, thecritterpack@1.3.4, timepassed@1.0.0, toolsmith@1.2.14, trailmodupdated@1.3.5, translocatorrelocator@1.0.3, trashmod@1.0.8, vanillaarmory@1.9.1, vanity@2.4.6, creative@1.21.6, vsinstrumentsbase@2.0.6, survival@1.21.6, vstweaks@0.6.3, windchimes@1.4.1, xmastimecont@0.4.0, xvshaders@0.1.1, beamtools@1.0.2, expandedfoods@2.0.0-dev.6, em@3.4.1, floatinglandmasses@1.0.7, sleekdoorglass@1.0.0, hangingbasketsunofficialpatch@1.0.0, helvehammerext@1.8.0, realsmokeforbraziers@1.1.1, realsmokeforchiseltools@1.1.1, shearlib@1.2.0, vsinstruments_quackpack@1.0.2, xinvtweaks@1.8.1, sandwich@1.2.9, tailorsdelight@2.1.2, wool@1.8.2, dressmakers@1.7.5
System.InvalidOperationException: Sequence contains no matching element
at System.Linq.ThrowHelper.ThrowNoMatchException()
at System.Linq.Enumerable.First[TSource](IEnumerable`1 source, Func`2 predicate)
at Expressions.GuiDialogExpressionSelector.OnGuiClosed() in C:\Users\siimr\Desktop\VSMods\vs-expressions\Expressions\GuiDialogExpressionSelector.cs:line 220
at Vintagestory.API.Client.GuiDialog.TryClose() in VintagestoryApi\Client\UI\Dialog\GuiDialog.cs:line 317
at Expressions.GuiDialogExpressionSelector.OnNext() in C:\Users\siimr\Desktop\VSMods\vs-expressions\Expressions\GuiDialogExpressionSelector.cs:line 199
at Vintagestory.API.Client.GuiElementTextButton.OnMouseUpOnElement(ICoreClientAPI api, MouseEvent args) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Controls\GuiElementTextButton.cs:line 320
at Vintagestory.API.Client.GuiComposer.OnMouseUp(MouseEvent mouse) in VintagestoryApi\Client\UI\GuiComposer.cs:line 446
at Vintagestory.API.Client.GuiDialog.OnMouseUp(MouseEvent args) in VintagestoryApi\Client\UI\Dialog\GuiDialog.cs:line 593
at Expressions.GuiDialogExpressionSelector.OnMouseUp(MouseEvent args) in C:\Users\siimr\Desktop\VSMods\vs-expressions\Expressions\GuiDialogExpressionSelector.cs:line 278
at Vintagestory.Client.NoObf.GuiManager.OnMouseUp(MouseEvent args) in VintagestoryLib\Client\Systems\Gui\GuiManager.cs:line 423
at Vintagestory.Client.NoObf.ClientMain.UpdateMouseButtonState(EnumMouseButton button, Boolean down) in VintagestoryLib\Client\ClientMain.cs:line 1991
at Vintagestory.Client.HotkeyManager.TriggerHotKey(KeyEvent keyEventargs, IWorldAccessor world, IPlayer player, Boolean allowCharacterControls, Boolean isGlobal, Boolean fallBack, Boolean keyup) in VintagestoryLib\Client\HotkeyManager.cs:line 424
at Vintagestory.Client.NoObf.ClientPlatformWindows.Mouse_ButtonUp(MouseButtonEventArgs e) in VintagestoryLib\Client\ClientPlatform\Input.cs:line 210
at OpenTK.Windowing.Desktop.NativeWindow.MouseButtonCallback(Window* window, MouseButton button, 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 347
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
Mothica, Nov 30th 2025 at 1:04 PM

if you could add it to the famle seraph mod that would be epic 

SkyKi, Nov 22nd 2025 at 8:06 PM

SiiMeR Thank you very much 😀

Michaloid , Nov 22nd 2025 at 7:22 PM

This is so cool! I think it should be vanilla tbh.

SiiMeR, Nov 22nd 2025 at 6:36 PM

Should now mostly work with PML SkyKi

Sunconure11, Nov 19th 2025 at 8:16 PM

Chiruda

Can confirm the same issue.

Chiruda , Nov 17th 2025 at 9:28 PM

SkyKi Thank you, we are aware! Trying to figure out how to fix it but really are stuck, and don't have enough time. It's on the bugfix list!

SkyKi, Nov 15th 2025 at 8:09 PM

This Mod is incompatible with Player Model Lib

Brows, Eyes, Lips are completely White.

Sodon, Nov 1st 2025 at 5:59 PM

This is a genius big brain idea!

Chiruda , Oct 31st 2025 at 8:47 PM

junawood That's the plan! New expressions will come out in future versions.

junawood, Oct 31st 2025 at 7:11 PM

Awesome idea! Could you add some eyes that better fit expressions like caring, kind, mellow, grin, and so on? Less... "I'm gonna stab you in the back as soon as you turn around."? That would be great! The new 1.21 faces all look something between depressed and angry. :/

Chiruda , Oct 31st 2025 at 3:55 AM

Verlia Great ideas with the piercings! I will definitely keep that in mind!

EthelVril, Oct 31st 2025 at 3:09 AM

Would b awesome if this had compat with racial equality mod

Verlia, Oct 30th 2025 at 11:00 PM

Nice! This is really cool. Maybe for addition to the future ideas could have piercings (metal or bone for tribal-like).