Mods / Vastly Enough Items

Tags:
Utility Crafting QoL UI
Author:
Dylan3124567
Side:
Both
Created:
Jun 8th at 8:30 AM
Last modified:
Jun 10th at 12:05 AM
Downloads:
309
Recommended download (for Vintage Story 1.22.3):
VastlyEnoughItems-v0.4.0.zip  1-click install

I love this game, but as an avid minecraft modder I noticed the complete lack of (an updated) mod that parallels JEI! Now I like the handbook as much as the next guy, but the menu in VEI is more convenient to me personally. I built this mod for personal use, and decided to share it with you all! 

O: Toggles the VEI menu.
R (when hovering over an item): Shows the recipe.
U (when hovering over an item): Shows the uses.
"+" button in recipe viewer: Auto places items in the crafting grid.

If anyone runs across bugs I will attempt to fix them.

You may use this in any modpack! Permission not required!

Mod Version Mod IdentifierFor Game version Downloads Released Changelog Download 1-click mod install*
0.4.0 vastlyenoughitems 165 Jun 10th at 12:04 AM VastlyEnoughItems-v0.4.0.zip 1-click install
  • Fixed a bug where the search bar wouldnt appear on some systems.
  • Moved the search bar into a dedicated header row under the title.
  • Changed draw order so the search box renders above item slots.
  • Improved mouse wheel behavior so VEI only catches scrolling when the cursor is over the VEI browser or recipe viewer.
  • Kept normal inventory/game scrolling untouched when the cursor is outside VEI.
0.3.0 vastlyenoughitems 84 Jun 8th at 7:33 PM VastlyEnoughItems-v0.3.0.zip 1-click install
  • Improved high GUI scale handling so the VEI panel shrinks its rows/columns instead of covering too much screen.
  • Fixed dialog pushing at high GUI scales by using the VEI panel’s real rendered bounds.
  • Moved the search bar to the bottom footer so it remains clickable in fullscreen/high GUI scale.
0.2.0 vastlyenoughitems 37 Jun 8th at 1:19 PM VastlyEnoughItems-v0.2.0.zip 1-click install
  • @modid filters by mod/domain, like @game or @wildcraftfruit
  • #tag filters by tags/derived categories, including useful ones like #weapon#tool#armor, and #food
  • Mouse wheel now flips pages in both the side item browser and recipe viewer
0.1.0 vastlyenoughitems 23 Jun 8th at 9:37 AM VastlyEnoughItems-v0.1.0.zip 1-click install

Release :3


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

Loco, Jun 28th at 11:32 PM

Your mod is missing the part of the recipe that requires tools. EG. If I try to make an axle, it doesn't show the hammer and chisel.

Hiran, Jun 11th at 12:37 PM

Is VastlyEnoughItems the cause of this crash?

Crash Report

11.6.2026 10:21:32 [Warning] VastlyEnoughItems could not read survival handbook pages, using fallback handbook visibility filter. System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.InvalidOperationException: ConcurrentSmallDictionary was written to with the same key 'freshHours' in two different threads, we can't handle that!
at Vintagestory.Common.DTable`2.DuplicateKeyCheck(TKey key) in C:\Users\Tyron\Documents\vintagestory\game\VintagestoryApi\Datastructures\ConcurrentSmallDictionary.cs:line 470
at Vintagestory.Common.ConcurrentSmallDictionary`2.Add(TKey key, TValue value) in C:\Users\Tyron\Documents\vintagestory\game\VintagestoryApi\Datastructures\ConcurrentSmallDictionary.cs:line 102
at Vintagestory.API.Common.CollectibleObject.UpdateAndGetTransitionStatesNative(IWorldAccessor world, ItemSlot inslot) in C:\Users\Tyron\Documents\vintagestory\game\VintagestoryApi\Common\Collectible\Collectible.cs:line 2997
at Vintagestory.API.Common.CollectibleObject.AppendPerishableInfoText(ItemSlot inSlot, StringBuilder dsc, IWorldAccessor world) in C:\Users\Tyron\Documents\vintagestory\game\VintagestoryApi\Common\Collectible\Collectible.cs:line 2204
at Vintagestory.API.Common.CollectibleObject.GetHeldItemInfo_Patch7(CollectibleObject this, ItemSlot inSlot, StringBuilder dsc, IWorldAccessor world, Boolean withDebugInfo)
at Vintagestory.GameContent.GuiHandbookItemStackPage..ctor(ICoreClientAPI capi, ItemStack stack) in C:\Users\Tyron\Documents\vintagestory\game\VSSurvivalMod\Systems\Handbook\Gui\GuiHandbookItemStackPage.cs:line 35
at Vintagestory.GameContent.ModSystemSurvivalHandbook.onCreatePagesAsync_Patch1(ModSystemSurvivalHandbook this)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
--- End of inner exception stack trace ---
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at VintageStoryJEI.ItemBrowserIndex.BuildHandbookVisibleCodes()
11.6.2026 10:21:32 [Fatal] Game Version: v1.22.3 (Stable)
6/11/2026 10:21:32 AM: Critical error occurred
Loaded Mods: walkingstick@3.0.9, alatyrstorcholders@1.2.0, hardcorewaterforked@1.4.6, arrowheadsrecovery@1.0.3, astriaporta@0.1.5, backpackpackplusfg@1.4.1, bettercrates@1.10.0, boricalchemy@1.9.3, chiseltools@1.17.2, claycasting@1.3.8, craftfirepit@1.0.0, creaturefootsteps@1.3.0, diversediets@1.0.4, fallingtree@0.5.2, feathercompost@1.0.0, flexibletools@3.6.1, bovinae@0.3.5, caninae@1.1.5, capreolinae@2.0.12, casuariidae@1.1.9, cervinae@0.1.13, chelonioidea@1.0.7, dinornithidae@1.0.22, elephantidae@1.0.17, felinae@0.2.13, iniidae@0.1.6, machairodontinae@1.1.9, manidae@1.0.19, meiolaniidae@0.1.10, pantherinae@1.2.13, rhinocerotidae@1.0.23, spheniscidae@1.0.16, thylacinidae@0.1.6, viverridae@1.0.8, vombatidae@0.4.5, fuelbriquettes@1.0.2, hidearmor@0.0.3, hydrateordiedrate@2.4.12, immersiveorecrush@2.2.5, jsonpatcheslib@1.5.3, metalbuckets@1.0.1, millwright@1.3.3, molds@0.3.3, moremolds@1.4.25, sae_tule@0.4.0, overhaulliblegacycompat@1.1.20, primitivesurvival@5.0.6, prospecttogether@2.2.1, scrapsrevived@2.2.0, simpleyeetable@2.3.0, slings@0.0.4, purrshidesize@1.1.1, stoneharvesting@1.2.2, stonequarryrepckfipil@3.6.3, storagecontroller@1.2.2, tankardsandgoblets@1.4.2, temporalsymphony@2.3.2, terratag@0.4.5, toolbelt@0.3.5, tradie@2.0.1, translocatorengineeringredux@1.6.6, translocatormap@1.0.0, trashbinned@0.4.2, tseasonedfirewood@1.2.9, vastlyenoughitems@0.4.0, game@1.22.3, vsimgui@1.2.7, whichoreiswhich@1.0.0, accessibilitytweaks@5.0.0, aculinaryartillery@2.0.0-dev.20, aemonsessentials@0.0.3, airthermomod@0.5.0, alchemy@2.1.0-rc.66, algernonsterrainsampler@1.3.0, alloycalculatorstuzzichino@1.2.17, altmapiconrenderercontinued@1.6.0, ancestralblissshaders@1.3.12, ancientlib@1.0.0, ancienttoolsresinharvest@1.0.0, animalcages@5.0.0, animationslib@0.0.2, anvilperformanceoptimization@1.0.0, attributerenderinglibrary@3.1.5, betterentitytooltip@1.1.0, bettererprospecting@3.3.3, betterruins@0.6.2, bitterbrew@1.9.0, bloomerytiers@1.0.4, botaniastory@0.3.4, buildingwands@1.0.2, butchering@1.13.4, cancrops@0.5.3, carryonlib@1.0.0-pre.4, championsuniquemonsterslite@1.0.0, commonlibforked@2.8.1, composter@1.2.2, configlib@1.12.0, upgradablestorage@1.1.9, caffcuniculture@1.22.3, daytrader@1.0.6, dryfuels@0.2.0, dryingspeedoverhaul@1.1.4, expandedbeekeepingfork@0.3.1, extrainfo@2.2.1, farseer@1.4.0, fastmap@122.5.1, firepitsheatovens@1.0.0, florishingfungus@1.1.1, foodshelves@3.0.4, geologymap@1.1.0, gimap@1.7.0, healthbar@1.4.2, inventorytransfer@1.7.0, itempickuphighlighter@1.3.0, knapster@4.0.0, manureecology@1.2.1, millwrightvawtaddon@1.0.3, mwi@1.9.0, trailmodmaro@1.3.21, navi@1.0.6, ndlclayworks@1.1.1, ndlcoralgrowth@2.1.0, ndlflowergrowth@2.2.1, ndlgrassgrowth@2.0.0, ndlmushroomgrowth@2.2.0, novelty@1.2.4, panningmachine@1.0.11, particlesplus@2.5.8, playerstatusstrip@1.0.1, claywheel@2.0.1, progressionframework@1.1.0, purposefulstorage@2.0.1, qualitygears@1.1.17, realisticwater@0.2.2, realmeat@1.6.0, rememberselectedmaplayers@1.0.0, rustboundmagic@3.2.2, scaffolding@1.3.1, shadehouse@1.2.3, simplejewelry@1.1.1, simpletailoring@1.1.6, slowtox@5.0.0, smithingplus@1.9.0-rc.1, spawnhighlightreborn@1.2.0, spyglass@0.6.1, statushudcont@4.3.1, stonebakeoven@1.3.4, substrate@2.0.0, temporalfatigue@1.5.0, improvedmetallurgy@1.1.5, toolsmith@1.2.17, toomanytabs@1.0.0, truecolorlayer@1.4.0, universalhusbandry@1.2.1, unofficialbugfix@0.1.2, creative@1.22.3, vsecomachina@0.6.1, survival@1.22.3, ancienttoolsmortar@1.0.0, autoconfiglib@2.0.10, bounties@1.0.7, carryon@2.0.0-pre.4, rlldtco0001@2.3.0, crossbowsfork@1.9.13, expandedfoods@2.0.0-dev.9, fallingecomachina@0.1.1, fotsabutcheringcompat@0.1.0, functionalminerbeltandlantern@1.0.5, heatretentioncontinued@1.0.3, helvehammerextforked@1.9.1, quiversfork@0.9.11, seafarer@0.5.14, seraphleveling@1.17.2, shearlib@1.3.0, slowtoxvisualized@1.1.10, soilamendments@1.0.0, storagetweaks@1.3.0, visiblenaturaltrails@0.2.1, butcheringseraphlevelingcompatibility@1.1.1, efmealsmodule@1.0.0-dev.4, sandwich@1.3.0, wool@1.9.2, shearregret@1.0.1
Involved Harmony IDs: com.chronolegionnaire.hydrateordiedrate, OverhaulLib:Transpilers, qualitygears.patches, improved_metallurgy, extrainfo, com.jakecool19.efrecipes.cookingoverhaul
System.InvalidOperationException: ConcurrentSmallDictionary was written to with the same key 'freshHours' in two different threads, we can't handle that!
at Vintagestory.Common.DTable`2.DuplicateKeyCheck(TKey key) in VintagestoryApi\Datastructures\ConcurrentSmallDictionary.cs:line 470
at Vintagestory.Common.ConcurrentSmallDictionary`2.Add(TKey key, TValue value) in VintagestoryApi\Datastructures\ConcurrentSmallDictionary.cs:line 102
at Vintagestory.API.Common.CollectibleObject.UpdateAndGetTransitionStatesNative(IWorldAccessor world, ItemSlot inslot) in VintagestoryApi\Common\Collectible\Collectible.cs:line 2997
at Vintagestory.API.Common.CollectibleObject.AppendPerishableInfoText(ItemSlot inSlot, StringBuilder dsc, IWorldAccessor world) in VintagestoryApi\Common\Collectible\Collectible.cs:line 2204
at Vintagestory.API.Common.CollectibleObject.GetHeldItemInfo_Patch7(CollectibleObject this, ItemSlot inSlot, StringBuilder dsc, IWorldAccessor world, Boolean withDebugInfo)
at Vintagestory.GameContent.GuiHandbookItemStackPage..ctor(ICoreClientAPI capi, ItemStack stack) in VSSurvivalMod\Systems\Handbook\Gui\GuiHandbookItemStackPage.cs:line 35
at Vintagestory.GameContent.ModSystemSurvivalHandbook.onCreatePagesAsync_Patch1(ModSystemSurvivalHandbook this)
at Vintagestory.GameContent.GuiDialogHandbook.LoadPages_Async() in VSSurvivalMod\Systems\Handbook\Gui\GuiDialogHandbook.cs:line 434
at Vintagestory.API.Common.TyronThreadPool.<>c__DisplayClass11_0.<QueueTask>b__0(Object _) in VintagestoryApi\Common\TyronThreadPool.cs:line 119
at System.Threading.QueueUserWorkItemCallback.Execute()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
at System.Threading.Thread.StartCallback()
Crash written to file at "/home/hiran/.config/VintagestoryData/Logs/client-crash.log"

11.6.2026 10:21:32 [Notification] Exiting game now. Server running=True. Exit reason: Game crashed
11.6.2026 10:21:32 [Notification] Destroying game session, waiting up to 200ms for client threads to exit
11.6.2026 10:21:34 [Error] Mod exception during event LeaveWorld. Will skip to next event
11.6.2026 10:21:34 [Error] Exception: Cannot call this method outside the main thread. Not thread safe to do so. You can use the thread safe method .EnqueueMainThreadTask() to queue up the register on the main thread instead.
at Vintagestory.Client.NoObf.ClientEventAPI.UnregisterGameTickListener(Int64 listenerId) in VintagestoryLib\Client\API\ClientEventAPI.cs:line 735
at Vintagestory.GameContent.GuiDialogWorldMap.Dispose() in VSEssentials\Systems\WorldMap\GuiDialogWorldMap.cs:line 290
at Vintagestory.GameContent.WorldMapManager.<StartClientSide>b__19_1() in VSEssentials\Systems\WorldMap\WorldMapManager.cs:line 111
at Vintagestory.Client.NoObf.ClientEventAPI.<>c.<TriggerLeaveWorld>b__177_0(Action dele) in VintagestoryLib\Client\API\ClientEventAPI.cs:line 506
at Vintagestory.Client.NoObf.ClientEventAPI.Trigger[T](Delegate[] delegates, String eventName, Action`1 onDele, Action onException) in VintagestoryLib\Client\API\ClientEventAPI.cs:line 255
11.6.2026 10:21:34 [Notification] Stopping single player server
11.6.2026 10:21:37 [Error] [accessibilitytweaks] An exception was thrown when trying to start the mod:
11.6.2026 10:21:37 [Error] [accessibilitytweaks] Exception: Cannot call this method outside the main thread. Not thread safe to do so.
at Vintagestory.Client.NoObf.ClientEventAPI.UnregisterRenderer(IRenderer renderer, EnumRenderStage stage) in VintagestoryLib\Client\API\ClientEventAPI.cs:line 583
at AccessibilityTweaks.Features.ColourCorrection.ColourCorrection.Dispose()
at Vintagestory.Common.ModLoader.TryRunModPhase(Mod mod, ModSystem system, ICoreAPI api, ModRunPhase phase) in VintagestoryLib\Common\API\ModLoader.cs:line 684
11.6.2026 10:21:37 [Error] Failed to run mod phase Dispose for mod AccessibilityTweaks.Features.ColourCorrection.ColourCorrection
11.6.2026 10:21:37 [Error] [walkingstick] An exception was thrown when trying to start the mod:
11.6.2026 10:21:37 [Error] [walkingstick] Exception: Cannot call this method outside the main thread. Not thread safe to do so. You can use the thread safe method .EnqueueMainThreadTask() to queue up the register on the main thread instead.
at Vintagestory.Client.NoObf.ClientEventAPI.UnregisterGameTickListener(Int64 listenerId) in VintagestoryLib\Client\API\ClientEventAPI.cs:line 735
at WalkingStick.WalkingStickClient.Dispose()
at WalkingStick.WalkingStick.Dispose()
at Vintagestory.Common.ModLoader.TryRunModPhase(Mod mod, ModSystem system, ICoreAPI api, ModRunPhase phase) in VintagestoryLib\Common\API\ModLoader.cs:line 684
11.6.2026 10:21:37 [Error] Failed to run mod phase Dispose for mod WalkingStick.WalkingStick
11.6.2026 10:21:39 [Notification] [SeraphLeveling] Successfully hooked into character dialog for scrollable traits
11.6.2026 10:21:39 [Warning] Entity attachable shape quiversandsheaths:sheaths/back/full/blackguardsword defined in Item quiversandsheaths:shoulderbag-back-sheath-backscabbard not found or errored, was supposed to be at quiversandsheaths:shapes/sheaths/back/full/blackguardsword.json. Shape will be invisible.
11.6.2026 10:21:39 [Event] [ancestralblissshaders] [ancestral-bliss-shaders] Deferred FBO layout: size 1920x1080, attachments=4 (2 local + 2 primary reuse), format=Rgba16f/Float, drawBuffers=4

Hiran, Jun 9th at 11:19 AM

I don't know how feasible it is, but can you "catch" scrolling only when mouse is over VastlyEnoughItems UI?

PresidentCash, Jun 9th at 3:17 AM (modified Jun 9th at 3:22 AM)

Still not seeing the search bar, not sure if its a conflict or what.

Dylan3124567 , Jun 9th at 6:01 AM
@PresidentCash: Still not seeing the search bar, not sure if its a conflict or what.

Could you send me your logs? im not sure if there is private messaging, but my discord is @Dylan3124567! screenshots would be useful too!

PresidentCash, Jun 9th at 6:28 PM (modified Jun 9th at 6:32 PM)
@Dylan3124567: Could you send me your logs? im not sure if there is private messaging, but my discord is @Dylan3124567! screenshots would be useful too!

I sent a friend request.  Which logs do you need specifically?  Also another thing I noticed is some things show the uses with r.  Sometimes it bugs out and u will be what r does and show the crafting menu, other times it bugs out and just opens the handbook tutorial.

Trigonum, Jun 8th at 10:09 PM

Ты просто красавчик! Благодарю!

Doctor_Dance, Jun 8th at 4:59 PM

A little bug, you can't have fullscreen and have your GUI 9+, you won't be able to use the search bar

Zaelesh, Jun 8th at 4:42 PM

Can't believe it took so long for someone to make this mod. JEI is one of the most essential mods in all of minecraft, so it makes sense it would be of value in this game

Slye_Fox, Jun 8th at 8:25 PM
@Zaelesh: Can't believe it took so long for someone to make this mod. JEI is one of the most essential mods in all of minecraft, so it makes sense it would be of value in this game

To be fair, the vanilla handbook provides a lot of the NEI type features already.
Just not in a way that's as conveniant as NEI type mods.

 

So it does kind of make sense why it took so long.

Garward, Jun 8th at 11:10 PM
@Zaelesh: Can't believe it took so long for someone to make this mod. JEI is one of the most essential mods in all of minecraft, so it makes sense it would be of value in this game

The whole reason i made betterhandbook was the basic missing features that jei had but the vanilla handbook already has so many issues and lag.

Also I'll have to update harmony patches any time they update it but it is another workaround. 

A completely separate gui for looking up recipes could definitely be easier to upkeep as even adding the autofill button to handbook was kind of a pain and the handbook is still not as performant as I would like.

I'd like to keep compatibility with this mod. My mod is open source if you want to check. I don't think it will have issues as long as this is focused on the custom menu.

Dylan3124567 , Jun 8th at 11:20 PM
@Garward: The whole reason i made betterhandbook was the basic missing features that jei had but the vanilla handbook already has so many issues and lag. Also I'll have to update harmony patches any time they update it but it is another workaround. A completely sep

i am completely down to work with you on compatability! I actually used your mod for the longest time. 

realistically my next things ill work on is improved modding compatability, (especially with modded benches, and ill try to work on some compatability with betterhandbook as well) and ui improvements. I should create an api so other mod authors can more cleanly integrate. Thank you for checking out my mod! everyone has been so kind.

Hiran, Jun 8th at 11:17 AM

Please add:

@ to filter items by the mod name. 
Something to specifically look for items with specific tags, like #weapon etc.
Ability to use mouse scroll to switch pages. Using these buttons is super inconvenient.

I believe that these 3 things are what this mod desperately needs.