Mods / Improved Handbook Recipes

Category: #QoL
Author: Kathanon
Side: Client
Created: Oct 2nd at 6:23 AM
Last modified: Nov 12th at 6:55 AM
Downloads: 1453
Follow Unfollow 84

Latest file for v1.19.8:
ImprovedHandbookRecipes_1.0.2.zip 1-click install


Adds the following to item pages in the handbook:

  • Using the scroll wheel while hovering over a recipe or item with several variants lets you flip between them freely.
  • If crafting grid is also open, adds buttons to automatically add the required ingredients to the crafting grid (add one craft and add max).
  • Displays a small wrench icon on ingredients that are not consumed by the recipe. Also adds how much durability will be used to the tooltip.

Auto fill also uses items from any opened chests unless shift is held.

Any suggestions or bug reports are welcome.

Version For Game version Downloads Release date Changelog Download 1-click mod install*
v1.0.2 338 Nov 12th at 6:55 AM Show ImprovedHandbookRecipes_1.0.2.zip Install now
v1.0.1 226 Nov 8th at 2:05 AM Show ImprovedHandbookRecipes_1.0.1.zip Install now
v1.0.0 889 Oct 2nd at 6:25 AM Show ImprovedHandbookRecipes_1.0.0.zip Install now

21 Comments (oldest first | newest first)

💬 KathanonAuthor, 2 days ago

If you post a crash log with the latest version, I can look into it. The log you posted looks exactly like the bug that 1.0.2 fixes.

💬 Shinji170981, 3 days ago

Currently using your 1.0.1 version on 1.19.8 and when i click on the *, the client crashes to desktop. Had the same issue on 1.0.2 before, so i went back to 1.0.1.

I did have the items required in my inventory.
Crash report

💬 OniLynx69, 6 days ago

Kathanon Yay! Thank you so much for fixing this up so quickly! ^^

💬 KathanonAuthor, Nov 13th at 2:28 AM

The dll *is* in the root folder, and it is a client-side only mod. I think you should bring it up with them.

💬 Shinji170981, Nov 12th at 1:14 PM

Kathanon Getting an error with the latest version.
12.11.2024 14:12:25 [Server Error] [workbenchexpansion] File 'ImprovedHandbookRecipes.dll' is not in the mod's root folder. Won't load this mod. If you need to ship unmanaged dlls, put them in the native/ folder.
Not sure if you have to fix this or workbench.

💬 KathanonAuthor, Nov 12th at 6:58 AM

OniLynx69: Turns out there were two separate bugs, one affecting all of the refractory bricks, but only the * button, and one affecting both buttons, but only the tier 2 version of the recipe.

ShikiTochi: The buttons are not shown unless the crafting grid is also open. That may be the reason.

💬 KathanonAuthor, Nov 12th at 6:56 AM

Update:

  • Fixed crash when using + or * buttons for a shapeless recipe with empty spots (e.g. refractory bricks tier 2).
💬 OniLynx69, Nov 10th at 9:59 PM

Kathanon: I downloaded the latest update, but am still experiencing issues with the mod crashing the game when attempting to pull refractory brick items to the crafting grid. I tried using both, the "+" and the "*", and both produced the same result. I attempted it several times, and even disabled all other mods (with the exception of the default game mods).

 

Below is the last attempt's crash log:

11/10/2024 1:48:47 PM: Critical error occurred in the following mod: improvedhandbookrecipes@1.0.1
Loaded Mods: game@1.19.8, improvedhandbookrecipes@1.0.1, creative@1.19.8, survival@1.19.8
System.NullReferenceException: Object reference not set to an instance of an object.
at ImprovedHandbookRecipes.FillGridButton.<>c__DisplayClass6_1.<AddIngredients>b__9(ItemSlot y) in E:\Programmering\VintageStory\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ImprovedHandbookRecipes\FillGridButton.cs:line 127
at ImprovedHandbookRecipes.FillGridButton.<AddIngredients>g__PullFirst|6_3[T](T[] arr, Func`2 test) in E:\Programmering\VintageStory\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ImprovedHandbookRecipes\FillGridButton.cs:line 219
at ImprovedHandbookRecipes.FillGridButton.<>c__DisplayClass6_0.<AddIngredients>b__7(GridRecipeIngredient x) in E:\Programmering\VintageStory\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ImprovedHandbookRecipes\FillGridButton.cs:line 127
at System.Linq.Enumerable.SelectArrayIterator`2.ToArray()
at ImprovedHandbookRecipes.FillGridButton.AddIngredients(ItemSlot[] input, GridRecipe recipe, List`1 available) in E:\Programmering\VintageStory\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ImprovedHandbookRecipes\FillGridButton.cs:line 126
at ImprovedHandbookRecipes.FillGridButton.TryFillGrid() in E:\Programmering\VintageStory\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ImprovedHandbookRecipes\FillGridButton.cs:line 80
at ImprovedHandbookRecipes.FillGridButton.OnClick() in E:\Programmering\VintageStory\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ImprovedHandbookRecipes\FillGridButton.cs:line 30
at ImprovedHandbookRecipes.ButtonRTC.Click() in E:\Programmering\VintageStory\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ButtonRTC.cs:line 65
at Vintagestory.API.Client.GuiElementTextButton.OnMouseUpOnElement(ICoreClientAPI api, MouseEvent args) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Controls\GuiElementTextButton.cs:line 317
at Vintagestory.API.Client.GuiElementTextButton.OnMouseUp(ICoreClientAPI api, MouseEvent args) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Controls\GuiElementTextButton.cs:line 307
at ImprovedHandbookRecipes.ButtonRTC.OnMouseUp(MouseEvent args) in E:\Programmering\VintageStory\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ButtonRTC.cs:line 125
at Vintagestory.API.Client.GuiElementRichtext.OnMouseUp(ICoreClientAPI api, MouseEvent args) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Text\GuiElementRichtext.cs:line 540
at Vintagestory.API.Client.GuiComposer.OnMouseUp(MouseEvent mouse) in VintagestoryApi\Client\UI\GuiComposer.cs:line 449
at Vintagestory.API.Client.GuiDialog.OnMouseUp(MouseEvent args) in VintagestoryApi\Client\UI\Dialog\GuiDialog.cs:line 584
at Vintagestory.Client.NoObf.GuiManager.OnMouseUp(MouseEvent args) in VintagestoryLib\Client\Systems\Gui\GuiManager.cs:line 415
at Vintagestory.Client.NoObf.ClientMain.UpdateMouseButtonState(EnumMouseButton button, Boolean down) in VintagestoryLib\Client\ClientMain.cs:line 1919
at Vintagestory.Client.SystemHotkeys.OnPrimaryMouseButton(KeyCombination mb) in VintagestoryLib\Client\Systems\Player\Hotkeys.cs:line 50
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 431
at Vintagestory.Client.HotkeyManager.TriggerHotKey(KeyEvent keyEventargs, IWorldAccessor world, IPlayer player, Boolean allowCharacterControls, Boolean keyUp) in VintagestoryLib\Client\HotkeyManager.cs:line 395
at Vintagestory.Client.HotkeyManager.OnMouseButton(ClientMain game, EnumMouseButton button, Int32 modifiers, Boolean buttonDown) in VintagestoryLib\Client\HotkeyManager.cs:line 574
at Vintagestory.Client.NoObf.ClientMain.OnMouseUpRaw(MouseEvent args) in VintagestoryLib\Client\ClientMain.cs:line 1949
at Vintagestory.Client.GuiScreenRunningGame.OnMouseUp(MouseEvent args) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 349
at Vintagestory.Client.ScreenManager.OnMouseUp(MouseEvent e) in VintagestoryLib\Client\ScreenManager.cs:line 890
at Vintagestory.Client.NoObf.ClientPlatformWindows.Mouse_ButtonUp(MouseButtonEventArgs e) in VintagestoryLib\Client\ClientPlatform\Input.cs:line 211
at OpenTK.Windowing.Desktop.NativeWindow.OnMouseUp(MouseButtonEventArgs e)
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 324
at Vintagestory.Client.ClientProgram.<>c__DisplayClass9_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 128
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 93

💬 ShikiTochi, Nov 10th at 2:50 AM

The crafting buttons for 1.0.1 Seem to be missing, its the only mod installed on a fresh world- 1.19.8

Edit- Its seemed to fix itself, I dont know why the buttons just vanished.

💬 KathanonAuthor, Nov 10th at 2:39 AM

You mean the 1.20 pre-releases? No, I've been meaning to make a version for 1.20, but haven't yet.

💬 Krougal, Nov 9th at 12:09 AM

Does this new version work for the PR releases? (started crashing hard a couple versions ago).

This is one of those mods that should be vanilla, hate playing without it.

💬 KathanonAuthor, Nov 8th at 2:07 AM

Update:

  • Fixed bug where using the * button for a shapeless recipe causes crash.

 

OniLynx69: I couldn't reproduce the tooltip issue, but I do recognize it from development, so I may just have managed to do the initial release before it was fixed. Please do let me know if this fixes that issue as well for you.

💬 KathanonAuthor, Nov 7th at 9:01 PM

I'll look into it.

💬 OniLynx69, Nov 7th at 8:20 PM

I absolutely love this mod! A godsend for making things a lot quicker! I have encountered a minor issue, and 1 major issue resulting in a game crash (reproducable).

Minor issue:
Text for tooltips, viewable when hovering over "*" [astrisk] or "+" icons, is off center from the tooltip itself. ie, appears above and to the left of the tooltip.

https://onilynx69.live/vintagestory_error_images/tooltip_bug.png

 

Major issue:
When attempting to set the crafting grid to craft refractory bricks, regardless of tier, the game will crash.

https://onilynx69.live/vintagestory_error_images/game_crash.png

Crash Log:

Game Version: v1.19.8 (Stable)
11/7/2024 12:08:45 PM: Critical error occurred in the following mod: improvedhandbookrecipes@1.0.0
Loaded Mods: HumanSkinTones@0.0.3, temperaturescales@1.0.2, game@1.19.8, bodyheatbar@1.0.1, chestorganizer@1.0.0, commonlib@2.5.0-rc.2, extendedhudinfo@1.1.0, hudclock@3.4.0, improvedhandbookrecipes@1.0.0, statushud@1.4.3, creative@1.19.8, survival@1.19.8
System.NullReferenceException: Object reference not set to an instance of an object.
at ImprovedHandbookRecipes.FillGridButton.<>c__DisplayClass6_1.b__9(ItemSlot y) in E:\Programmering\VintageStory\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ImprovedHandbookRecipes\FillGridButton.cs:line 126
at ImprovedHandbookRecipes.FillGridButton.g__PullFirst|6_3[T](T[] arr, Func`2 test) in E:\Programmering\VintageStory\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ImprovedHandbookRecipes\FillGridButton.cs:line 218
at ImprovedHandbookRecipes.FillGridButton.<>c__DisplayClass6_0.b__7(GridRecipeIngredient x) in E:\Programmering\VintageStory\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ImprovedHandbookRecipes\FillGridButton.cs:line 126
at System.Linq.Enumerable.SelectArrayIterator`2.ToArray()
at ImprovedHandbookRecipes.FillGridButton.AddIngredients(ItemSlot[] input, GridRecipe recipe, List`1 available) in E:\Programmering\VintageStory\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ImprovedHandbookRecipes\FillGridButton.cs:line 125
at ImprovedHandbookRecipes.FillGridButton.TryFillGrid() in E:\Programmering\VintageStory\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ImprovedHandbookRecipes\FillGridButton.cs:line 80
at ImprovedHandbookRecipes.FillGridButton.OnClick() in E:\Programmering\VintageStory\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ImprovedHandbookRecipes\FillGridButton.cs:line 30
at ImprovedHandbookRecipes.ButtonRTC.Click() in E:\Programmering\VintageStory\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ButtonRTC.cs:line 63
at Vintagestory.API.Client.GuiElementTextButton.OnMouseUpOnElement(ICoreClientAPI api, MouseEvent args) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Controls\GuiElementTextButton.cs:line 317
at Vintagestory.API.Client.GuiElementTextButton.OnMouseUp(ICoreClientAPI api, MouseEvent args) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Controls\GuiElementTextButton.cs:line 310
at ImprovedHandbookRecipes.ButtonRTC.OnMouseUp(MouseEvent args) in E:\Programmering\VintageStory\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ImprovedHandbookRecipes\ButtonRTC.cs:line 113
at Vintagestory.API.Client.GuiElementRichtext.OnMouseUp(ICoreClientAPI api, MouseEvent args) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Text\GuiElementRichtext.cs:line 540
at Vintagestory.API.Client.GuiComposer.OnMouseUp(MouseEvent mouse) in VintagestoryApi\Client\UI\GuiComposer.cs:line 445
at Vintagestory.API.Client.GuiDialog.OnMouseUp(MouseEvent args) in VintagestoryApi\Client\UI\Dialog\GuiDialog.cs:line 570
at Vintagestory.Client.NoObf.GuiManager.OnMouseUp(MouseEvent args) in VintagestoryLib\Client\Systems\Gui\GuiManager.cs:line 415
at Vintagestory.Client.NoObf.ClientMain.UpdateMouseButtonState(EnumMouseButton button, Boolean down) in VintagestoryLib\Client\ClientMain.cs:line 1919
at Vintagestory.Client.SystemHotkeys.OnPrimaryMouseButton(KeyCombination mb) in VintagestoryLib\Client\Systems\Player\Hotkeys.cs:line 50
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 431
at Vintagestory.Client.HotkeyManager.TriggerHotKey(KeyEvent keyEventargs, IWorldAccessor world, IPlayer player, Boolean allowCharacterControls, Boolean keyUp) in VintagestoryLib\Client\HotkeyManager.cs:line 392
at Vintagestory.Client.HotkeyManager.OnMouseButton(ClientMain game, EnumMouseButton button, Int32 modifiers, Boolean buttonDown) in VintagestoryLib\Client\HotkeyManager.cs:line 574
at Vintagestory.Client.NoObf.ClientMain.OnMouseUpRaw(MouseEvent args) in VintagestoryLib\Client\ClientMain.cs:line 1949
at Vintagestory.Client.GuiScreenRunningGame.OnMouseUp(MouseEvent args) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 349
at Vintagestory.Client.ScreenManager.OnMouseUp(MouseEvent e) in VintagestoryLib\Client\ScreenManager.cs:line 890
at Vintagestory.Client.NoObf.ClientPlatformWindows.Mouse_ButtonUp(MouseButtonEventArgs e) in VintagestoryLib\Client\ClientPlatform\Input.cs:line 211
at OpenTK.Windowing.Desktop.NativeWindow.OnMouseUp(MouseButtonEventArgs e)
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 324
at Vintagestory.Client.ClientProgram.<>c__DisplayClass9_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 128
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 93

💬 FluffyCucumber, Nov 6th at 2:38 AM

been looking for this mod for quite some time now! Thanks!

💬 KathanonAuthor, Oct 27th at 3:28 PM

Cuddly_Khan: I think that would have the potential to confuse users. Maybe I can make something similar, I'll give it some thought.

jayu: Please do. If it is repeatable, it's likely to be for the same recipe. Include what recipe it was when you post the log, please.

💬 jayu, Oct 15th at 9:45 PM

Hey so my game freezes (doesn't crash) when I press the add max button. Will try to save the client-main log when it happens again.

💬 Cuddly_Khan, Oct 8th at 10:01 AM

I have a suggestion:
If the crafting grid has already been filled using the add max, then pressing it again will take the result out of the output and fill the grid again. Would make crafting tedious stuff a bit faster such as firewood and path blocks. :D

💬 SaltyWater, Oct 4th at 12:33 PM

Amazing mod thank you so much!

💬 jayu, Oct 2nd at 10:35 PM

More people need to know about this! It should be in vanilla lol. Please if you can put a nicer thumbnail so more people discover this very useful mod. Thanks!

💬 MAKAKO, Oct 2nd at 12:06 PM

Funciona perfectamente, gracias por hacerme la vida mas facil

😄

(edit comment delete)