Mods / OpenBookAnimation

Tags:
QoL
Author:
SiiMeR
Side:
Both
Created:
Feb 16th at 10:16 PM
Last modified:
Feb 16th at 10:23 PM
Downloads:
1519
Latest release (for Vintage Story 1.21.0 - 1.21.6, outdated):
openbookanimation_1.0.0.zip  1-click install

This mod makes your character look down a bit while reading or editing a parchment or a book. 

If you have a book in hand, it will be transformed to the open variant of the clutter book, making it look like you are reading it. 

 

The animation state is synced to other players as well. 

 

Mod Version Mod IdentifierFor Game version Downloads Released Changelog Download 1-click mod install*
1.0.0 openbookanimation
1.21.0 - 1.21.6
1519 Feb 16th at 10:23 PM openbookanimation_1.0.0.zip 1-click install

* First release


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

iotid, Apr 24th at 5:32 AM (modified Apr 24th at 5:33 AM)

Caught a client crash via trying open book animation 1.0.0 in 1.22.0 multiplayer, though we read several books before crossing one that CTD everyone in visual range of the player who read it. Can drop you the log in discord, or message it via whatever other means, if you want it.

Lumvik, May 13th at 2:09 PM
@SiiMeR: You can leave it here as well
Crash Report

Running on 64 bit Windows 10.0.19045.0 with 16291 MB RAM
Game Version: v1.22.2 (Stable)
13.05.2026 14:40:36: Critical error occurred in the following mod: openbookanimation@1.0.0
Loaded Mods: walkingstick@3.0.4, ancientarmory@1.2.3, blackguardadditions@1.1.9, brickmold@1.3.1, chiblocksel@1.8.3, chiseltools@1.17.1, dyedhardenedclay@1.0.2, vichnybackpack@3.2.4, eternalschests@0.0.2, esp@4.0.5, expandedmolds@1.2.0, fagreenwich@1.4.5, faviking@1.1.6, forlornadditions@1.0.4, millwright@1.3.3, pipeleaf@2.5.1, ruggedrugs@0.0.4, scrollrackable@1.5.0, servantattire@1.0.0, shelfobsessed@2.1.4, spinningwheel@1.2.1, spivohrai@0.1.4, spyglass@0.6.0, tankardsandgoblets@1.4.2, tradie@2.0.1, translocatorengineeringredux@1.6.6, trashbinned@0.4.2, vanillavarnished@1.0.4, game@1.22.2, arthursjournal@2.0.1, apelanterns@1.4.0-pre.1, betterjonasdevicesfixedagain@2.1.6, billposting@2.0.0, butchering@1.13.2, carryon@1.14.1-pre.1, cartwrightscaravan@1.9.0, crbutterfly@1.1.1, displaycasewall@1.0.3, elkvariants@3.6.2, emotes@2.2.0, envelopes@3.8.3, foodshelves@3.0.2, footprints@1.2.1, gourmand@1.8.8, madcrowglider@1.22.0-rc.6, metalpots@1.7.3, meteoricsteel@1.0.13, mobsradar@3.0.0, moreanimals@1.6.6, ndlchiselpick@4.1.0, novelty@1.2.4, oldmap@1.0.1, onebedsleeping@3.0.1, openbookanimation@1.0.0, panningmachine@1.0.9, regalia@1.6.0, rivers@5.0.0, rpvoicechat@2.5.3, slowtox@5.0.0, soundofconfession@1.1.0, statushudcont@4.3.1, steadygreenhouses@1.1.1, substratereflush@1.0.1, treeshaker@1.1.0-rc.1, ufm@1.19.6, vanity@2.4.7, vinconomy@5.3.0, vsairshipmod@1.1.3, creative@1.22.2, vsroofing@1.5.5, survival@1.22.2, wildgrasscontinued@1.3.11, windchimes@1.5.0, bookbinders@1.4.0, shearlib@1.3.0, tailorsdelight@2.2.0, wool@1.9.1
System.MissingFieldException: Field not found: 'Vintagestory.API.Common.Entities.Entity.Pos'.
at MonoMod.Core.Interop.CoreCLR.V60.InvokeCompileMethod(IntPtr functionPtr, IntPtr thisPtr, IntPtr corJitInfo, CORINFO_METHOD_INFO* methodInfo, UInt32 flags, Byte** nativeEntry, UInt32* nativeSizeOfCode)
at MonoMod.Core.Platforms.Runtimes.Core60Runtime.JitHookDelegateHolder.CompileMethodHook(IntPtr jit, IntPtr corJitInfo, CORINFO_METHOD_INFO* methodInfo, UInt32 flags, Byte** nativeEntry, UInt32* nativeSizeOfCode)
at OpenBookAnimation.OpenBookAnimationModSystem.SetReadingState(EntityAgent entity, Boolean isReading) in C:\VSMods\OpenBookAnimation\OpenBookAnimation\OpenBookAnimationModSystem.cs:line 99
at OpenBookAnimation.OpenBookAnimationModSystem.SetReadingState(EntityAgent entity, Boolean isReading) in C:\VSMods\OpenBookAnimation\OpenBookAnimation\OpenBookAnimationModSystem.cs:line 99
at OpenBookAnimation.OpenBookAnimationModSystem.SetReading(EntityAgent entity, Boolean isReading) in C:\VSMods\OpenBookAnimation\OpenBookAnimation\OpenBookAnimationModSystem.cs:line 94
at OpenBookAnimation.ItemBookInteractPatch.Postfix(EntityAgent byEntity, EnumHandHandling& handling) in C:\VSMods\OpenBookAnimation\OpenBookAnimation\HarmonyPatches.cs:line 23
at Vintagestory.API.Common.CollectibleObject.OnHeldUseStart(ItemSlot slot, EntityAgent byEntity, BlockSelection blockSel, EntitySelection entitySel, EnumHandInteract useType, Boolean firstEvent, EnumHandHandling& handling) in VintagestoryApi\Common\Collectible\Collectible.cs:line 1466
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.TryBeginUseActiveSlotItem(BlockSelection blockSel, EntitySelection entitySel, EnumHandInteract useType, EnumHandHandling& handling) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 856
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.TryBeginUseActiveSlotItem(BlockSelection blockSel, EntitySelection entitySel) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 832
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.HandleMouseInteractionsBlockSelected(Single dt) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 550
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnFinalizeFrame(Single dt) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 87
at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\Util\ClientEventManager.cs:line 257
at Vintagestory.Client.NoObf.ClientMain.RenderToDefaultFramebuffer(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 1062
at Vintagestory.Client.GuiScreenRunningGame.RenderToDefaultFramebuffer(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 251
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 783
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 3
==================================
{ TimeGenerated = 12.05.2026 18:45:48, Site = , Source = Application Error, Message = Назва аварійного застосунку: Vintagestory.exe, версія: 1.22.2.0, позначка часу: 0x693c0000
Назва аварійного модуля: openal32.dll, версія: 1.23.0.0, позначка часу: 0x63dd31ad
Код винятку: 0x40000015
Зсув помилки: 0x00000000000df046
Код аварійного процесу: 0x38e38
Час запуску аварійного застосунку: 0x01dce21212e1155f
Шлях до аварійного застосунку: C:\Users\pikul\AppData\Roaming\Vintagestory\Vintagestory.exe
Шлях до аварійного модуля: C:\Users\pikul\AppData\Roaming\Vintagestory\Lib\openal32.dll
Код звіту: 66485ec0-970e-40d9-98e1-0bbf1c45001b
Повне ім'я аварійного пакету:
Код аварійного застосунку, що стосується пакету: }
--------------
{ TimeGenerated = 12.05.2026 18:45:34, Site = , Source = Application Error, Message = Назва аварійного застосунку: Vintagestory.exe, версія: 1.22.2.0, позначка часу: 0x693c0000
Назва аварійного модуля: KERNELBASE.dll, версія: 10.0.19041.6280, позначка часу: 0x56511854
Код винятку: 0xe0434352
Зсув помилки: 0x0000000000025369
Код аварійного процесу: 0x38e38
Час запуску аварійного застосунку: 0x01dce21212e1155f
Шлях до аварійного застосунку: C:\Users\pikul\AppData\Roaming\Vintagestory\Vintagestory.exe
Шлях до аварійного модуля: C:\Windows\System32\KERNELBASE.dll
Код звіту: 9aec2650-a99c-4778-9084-aeb0400e5702
Повне ім'я аварійного пакету:
Код аварійного застосунку, що стосується пакету: }
--------------
{ TimeGenerated = 11.05.2026 21:05:11, Site = , Source = Application Error, Message = Назва аварійного застосунку: Vintagestory.exe, версія: 1.22.2.0, позначка часу: 0x693c0000
Назва аварійного модуля: openal32.dll, версія: 1.23.0.0, позначка часу: 0x63dd31ad
Код винятку: 0x40000015
Зсув помилки: 0x00000000000df046
Код аварійного процесу: 0x3790c
Час запуску аварійного застосунку: 0x01dce16e451ae70a
Шлях до аварійного застосунку: C:\Users\pikul\AppData\Roaming\Vintagestory\Vintagestory.exe
Шлях до аварійного модуля: C:\Users\pikul\AppData\Roaming\Vintagestory\Lib\openal32.dll
Код звіту: efbfcbe5-190a-497b-9e59-f8b643e0c3f9
Повне ім'я аварійного пакету:
Код аварійного застосунку, що стосується пакету: }

Lumvik, May 13th at 2:10 PM
@SiiMeR: You can leave it here as well
Crash Report

Running on 64 bit Windows 10.0.19045.0 with 16291 MB RAM
Game Version: v1.22.2 (Stable)
13.05.2026 14:40:36: Critical error occurred in the following mod: openbookanimation@1.0.0
Loaded Mods: walkingstick@3.0.4, ancientarmory@1.2.3, blackguardadditions@1.1.9, brickmold@1.3.1, chiblocksel@1.8.3, chiseltools@1.17.1, dyedhardenedclay@1.0.2, vichnybackpack@3.2.4, eternalschests@0.0.2, esp@4.0.5, expandedmolds@1.2.0, fagreenwich@1.4.5, faviking@1.1.6, forlornadditions@1.0.4, millwright@1.3.3, pipeleaf@2.5.1, ruggedrugs@0.0.4, scrollrackable@1.5.0, servantattire@1.0.0, shelfobsessed@2.1.4, spinningwheel@1.2.1, spivohrai@0.1.4, spyglass@0.6.0, tankardsandgoblets@1.4.2, tradie@2.0.1, translocatorengineeringredux@1.6.6, trashbinned@0.4.2, vanillavarnished@1.0.4, game@1.22.2, arthursjournal@2.0.1, apelanterns@1.4.0-pre.1, betterjonasdevicesfixedagain@2.1.6, billposting@2.0.0, butchering@1.13.2, carryon@1.14.1-pre.1, cartwrightscaravan@1.9.0, crbutterfly@1.1.1, displaycasewall@1.0.3, elkvariants@3.6.2, emotes@2.2.0, envelopes@3.8.3, foodshelves@3.0.2, footprints@1.2.1, gourmand@1.8.8, madcrowglider@1.22.0-rc.6, metalpots@1.7.3, meteoricsteel@1.0.13, mobsradar@3.0.0, moreanimals@1.6.6, ndlchiselpick@4.1.0, novelty@1.2.4, oldmap@1.0.1, onebedsleeping@3.0.1, openbookanimation@1.0.0, panningmachine@1.0.9, regalia@1.6.0, rivers@5.0.0, rpvoicechat@2.5.3, slowtox@5.0.0, soundofconfession@1.1.0, statushudcont@4.3.1, steadygreenhouses@1.1.1, substratereflush@1.0.1, treeshaker@1.1.0-rc.1, ufm@1.19.6, vanity@2.4.7, vinconomy@5.3.0, vsairshipmod@1.1.3, creative@1.22.2, vsroofing@1.5.5, survival@1.22.2, wildgrasscontinued@1.3.11, windchimes@1.5.0, bookbinders@1.4.0, shearlib@1.3.0, tailorsdelight@2.2.0, wool@1.9.1
System.MissingFieldException: Field not found: 'Vintagestory.API.Common.Entities.Entity.Pos'.
at MonoMod.Core.Interop.CoreCLR.V60.InvokeCompileMethod(IntPtr functionPtr, IntPtr thisPtr, IntPtr corJitInfo, CORINFO_METHOD_INFO* methodInfo, UInt32 flags, Byte** nativeEntry, UInt32* nativeSizeOfCode)
at MonoMod.Core.Platforms.Runtimes.Core60Runtime.JitHookDelegateHolder.CompileMethodHook(IntPtr jit, IntPtr corJitInfo, CORINFO_METHOD_INFO* methodInfo, UInt32 flags, Byte** nativeEntry, UInt32* nativeSizeOfCode)
at OpenBookAnimation.OpenBookAnimationModSystem.SetReadingState(EntityAgent entity, Boolean isReading) in C:\VSMods\OpenBookAnimation\OpenBookAnimation\OpenBookAnimationModSystem.cs:line 99
at OpenBookAnimation.OpenBookAnimationModSystem.SetReadingState(EntityAgent entity, Boolean isReading) in C:\VSMods\OpenBookAnimation\OpenBookAnimation\OpenBookAnimationModSystem.cs:line 99
at OpenBookAnimation.OpenBookAnimationModSystem.SetReading(EntityAgent entity, Boolean isReading) in C:\VSMods\OpenBookAnimation\OpenBookAnimation\OpenBookAnimationModSystem.cs:line 94
at OpenBookAnimation.ItemBookInteractPatch.Postfix(EntityAgent byEntity, EnumHandHandling& handling) in C:\VSMods\OpenBookAnimation\OpenBookAnimation\HarmonyPatches.cs:line 23
at Vintagestory.API.Common.CollectibleObject.OnHeldUseStart(ItemSlot slot, EntityAgent byEntity, BlockSelection blockSel, EntitySelection entitySel, EnumHandInteract useType, Boolean firstEvent, EnumHandHandling& handling) in VintagestoryApi\Common\Collectible\Collectible.cs:line 1466
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.TryBeginUseActiveSlotItem(BlockSelection blockSel, EntitySelection entitySel, EnumHandInteract useType, EnumHandHandling& handling) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 856
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.TryBeginUseActiveSlotItem(BlockSelection blockSel, EntitySelection entitySel) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 832
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.HandleMouseInteractionsBlockSelected(Single dt) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 550
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnFinalizeFrame(Single dt) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 87
at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\Util\ClientEventManager.cs:line 257
at Vintagestory.Client.NoObf.ClientMain.RenderToDefaultFramebuffer(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 1062
at Vintagestory.Client.GuiScreenRunningGame.RenderToDefaultFramebuffer(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 251
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 783
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 3
==================================
{ TimeGenerated = 12.05.2026 18:45:48, Site = , Source = Application Error, Message = Назва аварійного застосунку: Vintagestory.exe, версія: 1.22.2.0, позначка часу: 0x693c0000
Назва аварійного модуля: openal32.dll, версія: 1.23.0.0, позначка часу: 0x63dd31ad
Код винятку: 0x40000015
Зсув помилки: 0x00000000000df046
Код аварійного процесу: 0x38e38
Час запуску аварійного застосунку: 0x01dce21212e1155f
Шлях до аварійного застосунку: C:\Users\pikul\AppData\Roaming\Vintagestory\Vintagestory.exe
Шлях до аварійного модуля: C:\Users\pikul\AppData\Roaming\Vintagestory\Lib\openal32.dll
Код звіту: 66485ec0-970e-40d9-98e1-0bbf1c45001b
Повне ім'я аварійного пакету:
Код аварійного застосунку, що стосується пакету: }
--------------
{ TimeGenerated = 12.05.2026 18:45:34, Site = , Source = Application Error, Message = Назва аварійного застосунку: Vintagestory.exe, версія: 1.22.2.0, позначка часу: 0x693c0000
Назва аварійного модуля: KERNELBASE.dll, версія: 10.0.19041.6280, позначка часу: 0x56511854
Код винятку: 0xe0434352
Зсув помилки: 0x0000000000025369
Код аварійного процесу: 0x38e38
Час запуску аварійного застосунку: 0x01dce21212e1155f
Шлях до аварійного застосунку: C:\Users\pikul\AppData\Roaming\Vintagestory\Vintagestory.exe
Шлях до аварійного модуля: C:\Windows\System32\KERNELBASE.dll
Код звіту: 9aec2650-a99c-4778-9084-aeb0400e5702
Повне ім'я аварійного пакету:
Код аварійного застосунку, що стосується пакету: }
--------------
{ TimeGenerated = 11.05.2026 21:05:11, Site = , Source = Application Error, Message = Назва аварійного застосунку: Vintagestory.exe, версія: 1.22.2.0, позначка часу: 0x693c0000
Назва аварійного модуля: openal32.dll, версія: 1.23.0.0, позначка часу: 0x63dd31ad
Код винятку: 0x40000015
Зсув помилки: 0x00000000000df046
Код аварійного процесу: 0x3790c
Час запуску аварійного застосунку: 0x01dce16e451ae70a
Шлях до аварійного застосунку: C:\Users\pikul\AppData\Roaming\Vintagestory\Vintagestory.exe
Шлях до аварійного модуля: C:\Users\pikul\AppData\Roaming\Vintagestory\Lib\openal32.dll
Код звіту: efbfcbe5-190a-497b-9e59-f8b643e0c3f9
Повне ім'я аварійного пакету:
Код аварійного застосунку, що стосується пакету: }

FR1GZ, Apr 23rd at 2:23 AM

this would be amazing if there's a version for when you open the map in some way!

SiiMeR , Feb 23rd at 2:27 PM

XP books just give you xp, there isnt anything being read afaik

Fiasyn, Feb 23rd at 2:01 PM

does this work with XP books?

Streetwind, Feb 17th at 9:49 PM

Great to know, thanks :)

SiiMeR , Feb 17th at 9:16 PM

It most likely will work because the animation used is a vanilla animation. No actual new animations in this mod, just the reading state Streetwind

Streetwind, Feb 17th at 7:49 PM

Out of curiosity, does an extra animation like this still work correctly 'out of the box' when a custom player model is loaded using Player Model Lib? Or would the animation have to be tuned for each specific third party model individually?

SilentCedric, Feb 16th at 10:46 PM

Surprised this isn't in the base game yet.