Mods / Sonito's Pin it

Tags: #QoL #Simplification #Utility
Author: Sonito
Side: Client
Created: Sep 19th at 11:18 AM
Last modified: Sep 21st at 1:48 PM
Downloads: 1589
Follow Unfollow 150

Latest release (for Vintage Story 1.21.0, potentially outdated):
sonitorecipepin_1.0.1.zip  1-click install


 

What it dooo : 

Adds the ability to pin recipes to your screen via the handbook 

Open a grid recipe , click on the button at the top right of the ingredients , this will open a little window with the recipe on it ,
this window doesn't distrub your gameplay , you can close it at any time or even collapse/expand it 

 

Why it was made  :

I tried crafting something that had like 6 items i need to keep track of placement of quanities , Helll nah i'm not doing that , 
I prefer to make a mod which was arguably the hardest mod I had to code than to spend 2IQ of my brain trying to remember a craft
I'm not looking forward to upgrade it if there's changes to the api , good god 


Personal Notes: 

Enjoy ! 

This is compatible (Tested) with Improved Handbook Recipes 
This is compatible (Tested) with showcraftable

I made a kofi tehe : https://ko-fi.com/sunday_ 

 

 

 

 

 

 

 

 

 

 

Mod Version For Game version Downloads Released Changelog Download 1-click mod install*
1.0.1 1174 Sep 21st at 1:36 PM sonitorecipepin_1.0.1.zip 1-click install

- Added Lang files (fr,eng,es,it,pl,ko,ch....etc)
- Add a behavior where The Pin button moves to the right  if the mod "Show Craftable" is installed
- Added optimization to the Recipe construction

 

 

 

 


23 Comments (oldest first | newest first)

💬 Chillpants, Oct 8th at 8:21 PM

Is it possible to add buttons to alternate recipes? Some mods (and maybe vanilla items, but I doubt it) have alternate recipes that use different ingredients for the same item and show as a second crafting menu on the guide, but only the first crafting UI on the guide page gets a button to pin it.

💬 Corvie, Oct 7th at 7:19 PM

Sonito I'm sorry this took so long, but here's the log: Let me know if I can provide anything else.

 

Crash Report
Game Version: v1.21.0 (Stable)
10/6/2025 11:03:36 AM: Critical error occurred
Loaded Mods: bettercrates@1.9.0, bettersticks@1.2.0, firestarters@1.4.5, forestsymphony@1.0.6, juicyores@1.0.1, primitivesurvival@3.9.7, prospecttogether@2.1.0, rotlotloot@1.2.0, scrapsrevived@2.1.1, shelfobsessed@1.7.1, shuttheinsectsup@1.0.0, soapandlye@1.1.1, sonitorecipepin@1.0.1, stoneharvesting@1.1.1, storagecontroller@1.2.1, temporalsymphony@2.2.2, game@1.21.0, vsimgui@1.1.12, wildfarmingrevival@1.4.0, abcsredux@2.0.5, alchemy@1.7.18, axleinblocks@1.21.1, bettererprospecting@1.1.2, betterfirepitexploitfit@1.1.6, betterjonasdevicesfixed@2.0.4, betterruins@0.5.0, blocksoverlay@4.5.3, carryon@1.11.0, commonlib@2.8.0, configlib@1.10.2, enhancedhandbook@1.3.0, extrainfo@1.10.1, foodshelves@2.3.0, fromgoldencombs@1.9.4, globalplayermapmarker@1.2.1, handytweaks@1.2.6, improvedhandbookrecipes@1.1.3, mannequinstand@1.0.7, morepiles@2.2.0, playermodellib@1.0.5, rustboundmagic@3.0.11, showcraftable@1.2.5, smithingplus@1.7.4, tanningredux@1.0.2, thecritterpack@1.3.3, valrossensmapfilterscontinued@1.21.1, vanillaplusclasses@1.4.2, creative@1.21.0, survival@1.21.0, antlershorns@1.3.2, beamtools@1.0.2, stonequarry@3.5.1, toomanyshingleblocks@1.2.0, xinvtweaks@1.8.1
System.NullReferenceException: Object reference not set to an instance of an object.
at Vintagestory.GameContent.EntityShapeRenderer.RenderItem(Single dt, Boolean isShadowPass, ItemStack stack, AttachmentPointAndPose apap, ItemRenderInfo renderInfo) in VSEssentials\EntityRenderer\EntityShapeRenderer.cs:line 454
at Vintagestory.GameContent.EntityPlayerShapeRenderer.RenderHeldItem(Single dt, Boolean isShadowPass, Boolean right) in VSEssentials\EntityRenderer\EntityPlayerShapeRenderer.cs:line 323
at Vintagestory.GameContent.EntityPlayerShapeRenderer.DoRender3DOpaque(Single dt, Boolean isShadowPass) in VSEssentials\EntityRenderer\EntityPlayerShapeRenderer.cs:line 250
at Vintagestory.Client.NoObf.SystemRenderEntities.OnRenderFrameShadows(Single dt) in VintagestoryLib\Client\Systems\Render\RenderEntities.cs:line 197
at Vintagestory.API.Client.DummyRenderer.OnRenderFrame(Single deltaTime, EnumRenderStage stage) in VintagestoryApi\Client\API\IClientEventAPI.cs:line 87
at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\Util\ClientEventManager.cs:line 204
at Vintagestory.Client.NoObf.ClientMain.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\ClientMain.cs:line 820
at Vintagestory.Client.NoObf.ClientMain.MainRenderLoop(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 881
at Vintagestory.Client.NoObf.ClientMain.MainGameLoop(Single deltaTime) in VintagestoryLib\Client\ClientMain.cs:line 744
at Vintagestory.Client.GuiScreenRunningGame.RenderToPrimary(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 172
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 719
at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 663
at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(FrameEventArgs e) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 113
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 338
at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 133
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 95
Game Version: v1.21.0 (Stable)
10/6/2025 11:05:02 AM: Critical error occurred
Loaded Mods: bettercrates@1.9.0, bettersticks@1.2.0, firestarters@1.4.5, forestsymphony@1.0.6, juicyores@1.0.1, primitivesurvival@3.9.7, prospecttogether@2.1.0, rotlotloot@1.2.0, scrapsrevived@2.1.1, shelfobsessed@1.7.1, shuttheinsectsup@1.0.0, soapandlye@1.1.1, sonitorecipepin@1.0.1, stoneharvesting@1.1.1, storagecontroller@1.2.1, temporalsymphony@2.2.2, game@1.21.0, vsimgui@1.1.12, wildfarmingrevival@1.4.0, abcsredux@2.0.5, alchemy@1.7.18, axleinblocks@1.21.1, bettererprospecting@1.1.2, betterfirepitexploitfit@1.1.6, betterjonasdevicesfixed@2.0.4, betterruins@0.5.0, blocksoverlay@4.5.3, carryon@1.11.0, commonlib@2.8.0, configlib@1.10.2, enhancedhandbook@1.3.0, extrainfo@1.10.1, foodshelves@2.3.0, fromgoldencombs@1.9.4, globalplayermapmarker@1.2.1, handytweaks@1.2.6, improvedhandbookrecipes@1.1.3, mannequinstand@1.0.7, morepiles@2.2.0, playermodellib@1.0.5, rustboundmagic@3.0.11, showcraftable@1.2.5, smithingplus@1.7.4, tanningredux@1.0.2, thecritterpack@1.3.3, valrossensmapfilterscontinued@1.21.1, vanillaplusclasses@1.4.2, creative@1.21.0, survival@1.21.0, antlershorns@1.3.2, beamtools@1.0.2, stonequarry@3.5.1, toomanyshingleblocks@1.2.0, xinvtweaks@1.8.1
System.NullReferenceException: Object reference not set to an instance of an object.
at Vintagestory.GameContent.EntityShapeRenderer.RenderItem(Single dt, Boolean isShadowPass, ItemStack stack, AttachmentPointAndPose apap, ItemRenderInfo renderInfo) in VSEssentials\EntityRenderer\EntityShapeRenderer.cs:line 453
at Vintagestory.GameContent.EntityPlayerShapeRenderer.DoRender3DOpaque(Single dt, Boolean isShadowPass) in VSEssentials\EntityRenderer\EntityPlayerShapeRenderer.cs:line 250
at Vintagestory.Client.NoObf.SystemRenderEntities.OnRenderFrameShadows(Single dt) in VintagestoryLib\Client\Systems\Render\RenderEntities.cs:line 174
at Vintagestory.Client.NoObf.ClientMain.MainRenderLoop(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 881
at Vintagestory.Client.GuiScreenRunningGame.RenderToPrimary(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 172
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 719
at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 663
at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(FrameEventArgs e) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 113
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 338
at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 133
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 95
💬 Sonito , Sep 23rd at 7:48 AM

Sorry I can't know for sure it's the mod if you don't have any logs I can read for the crash, 

💬 Corvie, Sep 23rd at 4:28 AM

Had a crash from clicking the minimize button.

💬 Sonito , Sep 21st at 6:56 PM

You are most welcome !

 

💬 QPTech, Sep 21st at 6:33 PM

May the blessing of Elves and Men and all Free Folk go with you. 
awesome!

💬 Sonito , Sep 21st at 1:44 PM

Slye_Fox

it's done :D

💬 Sonito , Sep 21st at 1:37 PM

@C4BR3R4 Added language file 

 

💬 Sonito , Sep 21st at 1:17 PM (modified Sep 21st at 1:45 PM)

smt923
for the backpackport i wish I had time to help you but I have other more fixes to do sorry

 

 

💬 Sonito , Sep 21st at 1:12 PM

yea i Just saw that , I was about to comment on it on his mod but i might as well do it myself on this mod

 

💬 Slye_Fox, Sep 21st at 12:47 PM

Would it be possible to make it compatable with "Show Craftable"?
Currently the buttons from both mods overlap.

💬 smt923, Sep 20th at 11:58 PM

this is so good, is there any chance of a 1.20.12 backport?

💬 RivetTheScree, Sep 20th at 4:13 PM

THANK YOU
i've got horrible memory so trying to remember why i needed 32 nails and strips for something after the long process of hammering them all out sometimes just escapes me

💬 C4BR3R4, Sep 20th at 3:56 PM

Sonito It's missing a language file, and it would be the perfect mod.

💬 Aislen, Sep 20th at 12:36 AM

This is something I've really been wanting in the game!

💬 Sonito , Sep 19th at 9:11 PM

@TrippyTheO yea same for me i can't be bothered hahaha , next patch will have subway surfer on the side as an option x)

 

💬 breeze108, Sep 19th at 9:07 PM

I am very glad to know that my memory is normal.  I thought I had some problems not being able to remember a crafting recipe long enough to craft it.

💬 TrippyTheO, Sep 19th at 8:24 PM

Oh god finally. I've been playing Minecraft mod packs that had this and it was painful for my memory-wrecked brain to remember what I had seen for a crafting recipe just five seconds prior. 

💬 HostilHobbit, Sep 19th at 8:09 PM (modified Sep 19th at 8:11 PM)

I'm so sorry, so I'm crashing and finally figured out its due to running improved handbook recipes with your mod at the same time lol, it throws a crash whenever I click on any metal chain/scale. Heres the crash log.
Edit: Nvm the crash is just annoying as hell and wont go away, its not your mod dont worry.

Crash Report
Game Version: v1.21.1 (Stable)
9/19/2025 3:34:17 PM: Critical error occurred
Loaded Mods: aculinaryartillerypatch@1.2.6-pre.4, axleinblocks@1.21.0, betterbreadsatiety@1.0.0, bettercrates@1.9.0, blacksmithname@1.2.0, bradyrockyextraction@1.1.0, buzzwords@1.8.0, buzzybees@1.1.7, catchledge@0.5.8, cavesymphony@1.2.0, chargedjump@1.1.2, cbr@1.0.0, chiseltools@1.15.1, clickuptorches@1.1.1, craftablesleekdoors@1.1.0, darcesdriftersredone@1.2.4, elkmorehealth@1.0.1, expandedmolds@1.2.0, extrachests@1.10.0, fallingtree@0.3.0, fancydoors@1.0.0, facop@1.2.2, fixedpaths@1.0.2, flickeringlights@0.1.2, flourbags@1.1.1, forestsymphony@1.0.6, fagreenwich@1.2.4, bovinae@0.2.4, hangingoillamps@1.0.5, immersivecorpsedrop@1.0.3, immersivelanterns@0.1.1, immersivemining@0.2.15, immersiveorecrush@2.2.4, improvedsheep@1.0.1, instantpickup@1.0.5, juicyores@1.0.1, leathertosturdy@1.0.0, lessigneousrockplease@1.1.0, lightrifts@1.1.0, lumberslingcontinued@1.0.5, manualdough@1.1.6, manualscraping@1.3.0, mbr@1.0.0, millwright@1.2.8, moreicons@1.1.0, moreftsat@1.0.0, morenails@1.2.0, mycodiversity@1.0.4, nobearjetpacks@1.0.2, nograssontilledsoil@1.0.2, nosurfacemonsters@1.0.1, overhaullib@1.9.1, plainsandvalleys@1.0.12, plumpkins@1.1.2, primitivesurvival@3.9.6, prospecttogether@2.1.1, rmobadvancedinteractions@1.0.2, sergsmetaltongsanimationfix@2.2.2, Sergsmetaltongs@2.2.0, she1fish@1.2.1, shearsspeedscales@1.0.0, shelfobsessed@1.7.0, sfaws@1.0.1, slvbearnerf@1.0.2, smolcrockmod@1.0.0, somedisassemblyrequired@1.7.7, sonitorecipepin@1.0.0, sprintmomentum@0.1.3, sticksarefirewood@1.0.0, stoneharvesting@1.1.1, swifttime@1.1.2, temporalsymphony@2.2.1, unterra@1.0.2, translocatorengineeringredux@1.6.0, usefulshears@1.0.0, game@1.21.1, vsimgui@1.1.12, wildfarmingrevival@1.4.0, zoombuttonreborn@2.0.0, accessibilitytweaks@3.8.5, alchemy@1.7.16, offhandpenalty@1.2.1, attributerenderinglibrary@2.3.0, egocaribautomapmarkers@4.0.3, betterentityinteraction@1.0.4, betterfirepit@1.1.6, blacksmithenhancements@1.1.4, butchering@1.10.3, canadditionalmetals@1.0.6, canjewelry@0.5.6, carcasses_are_frail@1.0.0, carryon@1.10.9, cheaperlanternlining@1.0.0, combatoverhaul@0.9.4, commonlib@2.8.0, configlib@1.10.2, configurableroomsize@1.1.0, dampenedanvil@1.1.0, danatweaks@3.6.0, drifterlightlevel2@1.0.3, expandedfoodspatch@1.7.6-pre.1, expandedstomach@1.2.0, extrainfo@1.10.0, farmlanddropswithnutrients@1.2.2, farseer@1.3.2, foodshelves@2.3.0, foragersgamble@1.0.10, fromgoldencombs@1.9.2-rc.2, grassiergrass@1.0.0, greenhousebuff@1.2.0, healthbarknewone@1.2.1, hudclockpatch@1.1.1, immersiverope@1.0.6, immersivewoodchopping@0.8.2, improvedhandbookrecipes@1.1.3, insanitylib@1.0.5, interestingoregen@1.2.3, kegrevivedagain@1.2.0, maltiezbows@1.0.5, maltiezcrossbows@1.5.3, maltiezfirearms@1.2.3, mannequinstand@1.0.6, medievalexpansionpatch@1.3.1, morefluxes@0.3.2, ndltimetracker@4.0.0, pelaguswinds@1.2.2, playerlist@2.1.5, playermodellib@1.0.10, claywheel@1.1.3, purposefulstorage@1.4.1, rackableplates@1.0.0, realsmoke@1.1.1, rebalancedfuel@1.4.0, recyclingtools@1.4.4, saltpeterproduction@1.1.0, simplefootstepsredux@1.0.2, smithingplus@1.8.0-rc.3, stonebakeoven@1.2.0, substrate@1.1.2, tanningredux@1.0.2, TemperatureMonitor@0.9.8, toolsmith@1.2.8, trapdoorsareladders@1.0.0, vanvar@7.1.0, vigor@0.5.0, vintagetweaks@2.0.0, vresp@1.2.0, vtpp@1.1.1, creative@1.21.1, survival@1.21.1, warmarmor@1.2.1, warmerlighting@1.0.0, weightmod@0.3.6, woodenshuttersandmore@1.2.31, workbenchexpansionpatch@1.1.0, xlib@0.9.0-pre.2, zippysskysteel@1.3.0, armory@1.2.1, autoconfiglib@2.0.9, bettersmelting@0.2.1, butcheringcompatpatch@1.1.0, combat-overhaul-reanimated@1.0.0, entitiesconfiguration@1.0.9, em@3.3.0, extrafirearms@0.1.91, sleekdoorglass@1.0.0, instantfirepits@5.0.0, lessdurablemaltiezcrossbows@1.0.0, morearrows@1.1.1, playercorpse@1.12.0, quiversandsheaths@0.3.3, reforgedtools@1.2.51, shearlib@1.2.0, stonequarry@3.5.1, storageoptions@2.0.0, tabards@0.2.1, wearandtear@1.5.14, xinvtweaks@1.8.1, xskills@0.9.0-pre.2, exoskeletons@0.4.2, tailorsdelight@2.0.0, wool@1.7.1, xskillgildedpatch@1.1.2, dressmakers@1.7.1
Involved Harmony IDs: improvedhandbookrecipes
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Vintagestory.GameContent.ItemWearable.GetHeldItemInfo(ItemSlot inSlot, StringBuilder dsc, IWorldAccessor world, Boolean withDebugInfo) in VSSurvivalMod\Item\ItemWearable.cs:line 199
at Vintagestory.API.Client.ItemstackComponentBase.OnRequireInfoText(ItemSlot slot) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Text\Richtext\ItemstackComponentBase.cs:line 64
at Vintagestory.API.Client.SlideshowItemstackTextComponent.OnRequireInfoText(ItemSlot slot) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Text\Richtext\SlideshowItemstackTextComponent.cs:line 180
at Vintagestory.API.Client.GuiElementItemstackInfo.AsyncRecompose() in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Text\GuiElementItemstackInfo.cs:line 127
at Vintagestory.API.Client.GuiElementItemstackInfo.SetSourceSlot(ItemSlot nowSlot, Boolean forceRecompose) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Text\GuiElementItemstackInfo.cs:line 254
at Vintagestory.API.Client.ItemstackComponentBase.RenderItemstackTooltip(ItemSlot slot, Double renderX, Double renderY, Single dt) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Text\Richtext\ItemstackComponentBase.cs:line 81
at Vintagestory.API.Client.GuiElementRichtext.RenderInteractiveElements(Single deltaTime) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Text\GuiElementRichtext.cs:line 483
at Vintagestory.API.Client.GuiComposer.Render(Single deltaTime) in VintagestoryApi\Client\UI\GuiComposer.cs:line 737
at Vintagestory.API.Client.GuiDialog.OnRenderGUI(Single deltaTime) in VintagestoryApi\Client\UI\Dialog\GuiDialog.cs:line 396
at Vintagestory.GameContent.GuiDialogHandbook.OnRenderGUI_Patch1(GuiDialogHandbook this, Single deltaTime)
at Vintagestory.Client.NoObf.GuiManager.OnRenderFrameGUI(Single deltaTime) in VintagestoryLib\Client\Systems\Gui\GuiManager.cs:line 309
at Vintagestory.Client.NoObf.ClientMain.RenderToDefaultFramebuffer(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 1017
at Vintagestory.Client.GuiScreenRunningGame.RenderToDefaultFramebuffer(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 250
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 760
at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 663
at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(FrameEventArgs e) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 113
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 338
at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 133
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 95
💬 Sonito , Sep 19th at 4:36 PM

Thanks everyone <3

💬 XurxoMF, Sep 19th at 4:06 PM

This is really cool! I never thought about this but it's reeeally helful for complex recipes! I love it 🔥

💬 Interzoneism, Sep 19th at 12:43 PM

This is awesome! Great also as collapsed reminders/notes for things you wanna build!

💬 RiverTheSheep, Sep 19th at 12:29 PM

I was JUST thinking about how nice this feature would be, thank you! 

 (edit comment delete)