Mods / Quality of Building [WIP]

Tags: #QoL
Author: BeloMaximka
Side: Both
Created: Oct 18th 2025 at 4:26 AM
Last modified: Nov 29th 2025 at 10:03 PM
Downloads: 840
Follow Unfollow 76

Latest release (for Vintage Story 1.21.0 - 1.21.6-rc.1, potentially outdated):
qualityofbuilding_1.1.0.zip  1-click install


What this mod does

  • Adds a building menu ('B', can be remapped) while holding a block ingredient (an oak board, for example), which allows you to select a block and just place it without fiddling with the crafting grid. Materials will be automatically consumed from the inventory.
  • Changes the drops of certain blocks so they return the materials they were built with. No more clutter in the inventory like slabs and roofing.
  • Adjusts some grid recipes to deal with weird proportions; this may make some a bit more expensive (cob was nerfed).
  • Stone blocks now use mortar instead of clay. Adds a mortar recipe from clay. Doubles the yield from the original mortar recipe to offset this.
  • Adds some building modes to shovels for roadmakers.

Supports vanilla chisel menu as well

Compatibility

Haven't tested with other mods. It can potentially mess with mods that change grid recipes and block drops

Existing saves

Safe to add / remove from existing saves

Custom recipes

The list of recipes is not final, and a lot are missing, but you can add your own. See the example for the general idea.

 

 

Mod Version Mod IdentifierFor Game version Downloads Released Changelog Download 1-click mod install*
1.1.0 qualityofbuilding
1.21.0 - 1.21.6-rc.1
224 Nov 29th 2025 at 10:03 PM qualityofbuilding_1.1.0.zip 1-click install
  • New modicon
  • Added compatibiliy with Terrain Slabs
  • Added compatibiliy with Trail Mod
  • Added fancy radial menu
  • Added animation to shovels
  • Added configs
1.0.0 qualityofbuilding
1.21.2 - 1.21.5
616 Oct 19th 2025 at 1:09 PM Empty qualityofbuilding_1.0.0.zip 1-click install

31 Comments (oldest first | newest first)

EnderMelody, 9 hours ago

been using this on my current server and wow this should just be how all these kinds of games handle building. this is now 100% neccessary for any playthroughs of this game for me

BeloMaximka , 1 day ago

LunaGore zakhad thanks for the reports! I'll try to fix them in the next update

LunaGore, 1 day ago

Had a crash while attempting to build a door using aged wood, hitting the keys to open the menu is where it crashed :(

Crash Report

Running on 64 bit Windows 10.0.26100.0 with 65443 MB RAM
Game Version: v1.21.6 (Stable)
1/19/2026 10:56:27 PM: Critical error occurred in the following mod: qualityofbuilding@1.1.0
Loaded Mods: walkingstick@1.0.15, alefix@1.1.0, betterandimprovedweather@0.1.8, betterarrows@1.0.1, betterbreadsatiety@1.0.0, bettercrates@1.9.0, betterforest@0.1.1, boatiespeedie12@1.0.4, bonebroth@1.2.2, bonemarrowsoup@1.0.1, bradyladder@1.1.0, bradyrockyextraction@1.1.0, bushmeatrecipe@2.0.0, butterflyredux@1.0.0, buzzybees@1.1.7, catchlivestock@0.2.2, catchledge@0.7.0, cavesymphony@1.2.1, chickenfeed@1.1.10, cbr@2.0.1, chiseltools@1.16.1, cindersandembers@1.0.2, clickuptorches@1.1.1, coldstorage@2.0.0, conquest@1.0.1, craftabletextureflipper@1.0.0, crawlanddive@0.2.3, cutthefat@1.0.3, darcesdriftersredone@1.2.8-dev.1, diversediets@1.0.3, elkmorehealth@1.0.1, perpetualstew@1.1.6, fastpicklencure@1.2.0, fixedpaths@1.0.2, flickeringlights@0.1.2, forestsymphony@1.0.6, bovinae@0.3.5, capreolinae@2.0.7, glowtorns@1.0.1, goatfeed@1.0.0, hangingoillamps@1.0.5, hidearmor@0.0.1, immersivecorpsedrop@1.0.3, immersiveminingfork@0.2.18, immersivelanterns@0.3.2, immersivemining@0.2.18, immersivetooldamagetweaks@1.0.0, JacksFirewood@1.1.0, jackslogtweak@1.2.0, jumpheight@1.3.0, lanternprojection@1.0.1, lessdrift@2.0.0, lightrifts@1.1.1, logicalclothingwarmth@1.3.0, manualdishes@0.1.1, manualdough@1.1.7, manualquenching@1.0.10, medievalclothes@1.0.9, molds@0.2.7, moreicons@1.1.1, nodrifterthrow@1.0.1, ohaa@1.0.0, overhaullib@1.19.6, particlesplus@2.3.1, pickflowers@1.0.3, pigfeed@1.0.9, pinkcurrantflowers@1.0.0, plainwallpapers@1.0.1, playermodellib@1.9.7, plumpkins@1.1.3, primitivesurvival@4.0.3, prospecttogether@2.1.2, purpleblackbronze@1.0.0, RelightTorches@1.0.0, sconce@1.0.4, ripenedwildcrops@1.0.0, rlmoonsun@0.1.3, satup@0.1.0, scrapsrevived@2.2.0, scrollrackable@1.4.0, sergsmetaltongsanimationfix@2.2.2, Sergsmetaltongs@2.2.1, sheepdontfly@1.0.1, shelfobsessed@1.9.5, shivertweaks@6.0.1, silentpause@1.0.2, skepdrop@1.0.2, smb1x1doorvariants@1.0.0, snowcaps@0.0.0, stickisolation@1.0.0, storemore@1.0.1, tankardsandgoblets@1.3.4, temporalsreformed@0.1.4, temporalsymphony@2.2.2, traderssellborax@1.1.0, unchisel@1.1.6, usefultraders@2.3.1, valkyrjahair@2.3.0, vanillapanestorage@1.0.2, vanillavarnished@1.0.4, game@1.21.6, vsimgui@1.1.16, elkspawn@1.1.0, warmerlighting@1.0.2, warmoillamp@1.0.0, wildcabbagepumpkin@1.1.0, wilderlandscavessystem@2.0.0-pre.2, wildfarmingrevival@1.4.2, windowstorage@1.0.3, zaecompatfoodshelves@0.2.0, zoombuttonreborn@2.0.1, accessibilitytweaks@4.0.0, airmapfix@1.1.0, alchemy@1.8.2, alternateelkhoofsounds@1.1.0, altmapiconrenderercontinued@1.5.0, ancestralblissshaders@1.2.11, ancienttools@1.6.0, apeflowerpots@1.3.1, apegrapes@1.3.1, armorrecyclinglite@1.0.2, attributerenderinglibrary@2.4.2, backpackpackplusexpanded@1.2.5, beararmorrepair@1.0.3, betterdeathmessages@1.0.1, betterfirepit@1.2.0, betterhopper@1.2.1, betterloot@2.0.1, betterruins@0.5.6, bettertraders@0.1.0, bloodtrail@1.1.8, bovinaddon@1.0.0, bradycrudebuilding@1.4.8, bullseyecontinued@3.4.5, butchering@1.10.17, butterflycases@1.0.2, carryon@1.12.1, chickensitreloaded@1.1.0, commonlib@2.8.0, configlib@1.10.13, configureeverything@2.2.1, Crateful@1.2.8, cratespoilage@1.2.1, critcherscalculator@1.0.2, customplayermodel@0.0.4, danatweaks@3.7.1, daytrader@1.0.5, desertificationsurfacevariation@1.0.0, durablebetterprospecting@21.2.0, egocaribautomapmarkers@4.0.3, elkphysics@2.0.0, elkvariants@1.1.2, enhancedhandbook@1.7.1, entitycolortint@3.0.0, entityguard@2.1.1, entitynametag@1.4.0, expandedbeekeeping@0.0.0, extrainfo@1.11.0, farseer@1.3.3, fatcandles@1.0.1, fatnutrition@1.0.0, fillmybloomery@1.0.2, firepitsshowfuel@1.2.1, firewoodfromsticks@0.6.9, firewoodandboardsfromdebarkedlogs@1.1.0, fixcratemod@0.1.0, floatingfish@1.1.7, foodshelves@2.3.3, footprints@1.1.2, forgesstaywarm@1.0.0, genelib@2.1.6, geologymap@1.0.2, goatappetitetweak@0.1.1, goodnightsleep@2.2.5, gourmand@1.8.5, handbookdeclutterer@1.0.0, handsometweaks@1.4.0, handytweaks@1.2.7, hangingbaskets@1.1.0, hydrateordiedrate@2.3.6, immersivefasteranims@0.1.1, improvedhandbookrecipescontinued@1.3.0, improvedsheepupdate@1.0.2, itempickuphighlighter@1.2.2, itempickupnotifier@1.9.1, jaunt@2.2.0-rc.2, juicyores@1.0.2, justthepepper@2.0.0, khanimaltweaks@2.0.0, kevinsfurniture@1.8.1, knapster@3.0.2, lcupdated@1.1.1, lathemod@1.0.3, mannequinstand@1.0.7, mngeology@1.0.5, materialneeds@1.1.13, mightywalnut@1.1.2, minimalcompass@1.1.4, moredirslabs@1.0.1, mountcamerafix@0.2.0, mulching@1.0.1, naturalfertilizer@1.3.0, ndlchiselpick@3.1.1, ndlwoodentorchholder@2.1.2, noentitypush@1.0.0, nogllogspam@1.0.1, noholdfruitpress@0.1.3, nooffhandautopickup@1.0.2, noscreenshotmessagemod@0.1.1, nutslib@3.0.9, opdoorpack@0.0.1, optitime@1.3.11, panningmachine@1.0.6, pauseonstart@1.0.1, pelaguswinds@1.2.2, pickupbabyanimals@1.2.2, placeonslabs@1.0.2, pspatch@0.1.0, purposefulstorage@1.5.1, qualityofbuilding@1.1.0, tzquarteredfirewood@1.0.1, racialequality@0.1.26, realistictemperatures@0.1.5, realmeat@1.4.0, realsmoke@1.1.10, rebuildablebloomery@1.0.6, removeprimitivesurvivalstairs@1.0.0, riverfish@1.0.2, rivers@4.7.5, rpgoverlay@1.0.9, safetydance@1.2.2, saltandsands@1.1.6, savewaypointname@1.0.0, scarecrowm@1.7.3, seraphsstonepickaxes@1.2.0, showcraftable@1.2.6, simplefootstepsredux@1.0.4, simplestarvation@1.0.2, smithingplus@1.8.3, sonitodynamictraits@1.0.10, sonitotrashslot@1.0.0, spinningwheel@1.1.4, boozetrade@1.0.0, splithidesandpelts@1.1.0, stablesurface@0.0.2, statushudcont@4.1.1, stepfixelk@0.0.3, stepupadvanced@1.2.4, stickemup@1.2.0, terraprety@7.8.0, texturedbuilding@1.2.2, th3dungeon@0.4.5, theartofpie@2.0.0, tinglyrebalance@1.0.2, toneddownpredators@1.1.0, toolsmith@1.2.14, torchholderplaceontop@1.0.1, trailmodupdated@1.3.6, vanityslots@0.0.7, variantmeals@2.6.1, vintagesymphony@1.0.4, creative@1.21.6, vsroofing@1.1.4, survival@1.21.6, vsvanillaplus@0.1.5, warmarmor@2.0.0, mapwaypointcolors@1.1.2, woodenshuttersandmore@1.2.31, xvshaders@0.1.1, zippyscroptweaks@1.3.0, zippysskysteel@1.3.0, zippysthatchpatch@1.1.0, autoconfiglib@2.0.9, beamtools@1.0.2, bbb@1.0.1, betterhoneymod@1.0.0, tradercamps@1.1.7, elkjaunt@1.3.0, em@3.4.1, extraoverlays@1.6.0, fishing@3.1.2, fueledwearablelights@1.1.4, hangingbasketsunofficialpatch@1.0.0, hydraulics@1.1.0, instantfirepits@5.0.0, jammorefruitin@1.0.2, mnflowers@0.0.0, medievalarchitecture@1.0.2, paperfletchingmod@1.0.2, passablebranches@0.0.3, qobpalisade@1.0.1, quiversandsheaths@0.6.14, realsmokeforancienttools@1.0.0, realsmokeforchiseltools@1.1.1, reforgedtools@1.2.51, saltandsandsbalance@1.0.0, seasonalbreeding@1.1.0, snowshoes@2.1.3, stonequarry@3.5.1, terrainslabs@1.0.9, vintagesymphonyassets@1.1.0, xinvtweaks@1.8.1, zrustdrops@2.0.0, aldiclasses@1.8.8, terrainslabstrailmodcompatibility@1.0.3, aldiclassnt@1.0.2
Involved Harmony IDs: qualityofbuilding, com.zaldaryon.optitime
System.NullReferenceException: Object reference not set to an instance of an object.
at QualityOfBuilding.Source.HarmonyPatches.InventoryItemRendererPatch.RenderBuildingOutputInSlot(InventoryItemRenderer __instance, ItemSlot& inSlot, Double& posX, Double& posY, Double& posZ, Single& size, Int32& color, Boolean& shading, Boolean& origRotate, Boolean& showStackSize) in D:\Projects\VintageStory\Mods\QualityOfBuilding\QualityOfBuilding\Source\HarmonyPatches\InventoryItemRendererPatch.cs:line 44
at Vintagestory.Client.NoObf.InventoryItemRenderer.RenderItemstackToGui_Patch1(InventoryItemRenderer this, ItemSlot inSlot, Double posX, Double posY, Double posZ, Single size, Int32 color, Single dt, Boolean shading, Boolean origRotate, Boolean showStackSize)
at Vintagestory.Client.NoObf.InventoryItemRenderer.RenderItemstackToGui(ItemSlot inSlot, Double posX, Double posY, Double posZ, Single size, Int32 color, Boolean shading, Boolean origRotate, Boolean showStackSize) in VintagestoryLib\Client\Render\InventoryItemRenderer.cs:line 276
at Vintagestory.Client.NoObf.RenderAPIGame.RenderItemstackToGui(ItemSlot inSlot, Double posX, Double posY, Double posZ, Single size, Int32 color, Boolean shading, Boolean rotate, Boolean showStacksize) in VintagestoryLib\Client\API\RenderAPIGame.cs:line 280
at QualityOfBuilding.Source.Gui.BuildingModeDialog.OnRenderGUI(Single deltaTime) in D:\Projects\VintageStory\Mods\QualityOfBuilding\QualityOfBuilding\Source\Gui\BuildingModeDialog.cs:line 246
at Vintagestory.Client.NoObf.GuiManager.OnRenderFrameGUI_Patch1(GuiManager this, Single deltaTime)
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 112
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

Event Log entries for Vintagestory.exe, the latest 3
==================================
{ TimeGenerated = 1/14/2026 7:45:27 AM, Site = , Source = Application Error, Message = Faulting application name: Vintagestory.exe, version: 1.21.6.0, time stamp: 0x67fe0000
Faulting module name: openal32.dll, version: 1.23.0.0, time stamp: 0x63dd31ad
Exception code: 0x40000015
Fault offset: 0x00000000000df046
Faulting process id: 0xc98
Faulting application start time: 0x1dc855af232f64d
Faulting application path: C:\Users\LunaGore\AppData\Roaming\Vintagestory\Vintagestory.exe
Faulting module path: C:\Users\LunaGore\AppData\Roaming\Vintagestory\Lib\openal32.dll
Report Id: fdc978d3-98a0-4e0b-8f4c-dca17de67bca
Faulting package full name:
Faulting package-relative application ID: }
--------------
{ TimeGenerated = 1/14/2026 7:31:55 AM, Site = , Source = Application Error, Message = Faulting application name: Vintagestory.exe, version: 1.21.6.0, time stamp: 0x67fe0000
Faulting module name: openal32.dll, version: 1.23.0.0, time stamp: 0x63dd31ad
Exception code: 0x40000015
Fault offset: 0x00000000000df046
Faulting process id: 0x2edc
Faulting application start time: 0x1dc8559a3e394d6
Faulting application path: C:\Users\LunaGore\AppData\Roaming\Vintagestory\Vintagestory.exe
Faulting module path: C:\Users\LunaGore\AppData\Roaming\Vintagestory\Lib\openal32.dll
Report Id: a0d1588a-075b-4427-b7c6-682e87f3e840
Faulting package full name:
Faulting package-relative application ID: }
--------------
{ TimeGenerated = 1/14/2026 7:28:11 AM, Site = , Source = Application Error, Message = Faulting application name: Vintagestory.exe, version: 1.21.6.0, time stamp: 0x67fe0000
Faulting module name: openal32.dll, version: 1.23.0.0, time stamp: 0x63dd31ad
Exception code: 0x40000015
Fault offset: 0x00000000000df046
Faulting process id: 0x3634
Faulting application start time: 0x1dc855909353ea3
Faulting application path: C:\Users\LunaGore\AppData\Roaming\Vintagestory\Vintagestory.exe
Faulting module path: C:\Users\LunaGore\AppData\Roaming\Vintagestory\Lib\openal32.dll
Report Id: 32d965dd-39d0-4dc7-85bc-8722ef791a3b
Faulting package full name:
Faulting package-relative application ID: }

zakhad, 4 days ago

Had a crash when rebuilding a bloomery after it just made some iron bloom

Crash Report

Running on 64 bit Windows 6.1.7601.0 with 32735 MB RAM
Game Version: v1.21.6 (Stable)
17/01/2026 8:12:50 AM: Critical error occurred in the following mod: qualityofbuilding@1.1.0
Loaded Mods: acorns@0.7.2, arrowheadsrecovery@1.0.3, atwatersedge@1.5.1, autopanning@1.0.1, betterandimprovedweather@0.1.8, bettercrates@1.9.0, irregularguybetterjam@1.0.0, bonemarrowsoup@1.0.1, bookends@0.1.2, bradyladder@1.1.0, bushmeatrecipe@2.0.0, buzzybees@1.1.7, canoemod@1.0.2, canoemodcircuitspatch@2.0.0, catchledge@0.7.0, cavesymphony@1.2.1, cellardoor@1.4.0, cellardoorfork@1.4.1, chandeliercraft@2.0.4, chickenfeed@1.1.10, chiseltools@1.16.1, combatrebalance@1.4.6, combinethefat@1.0.0, crawlanddive@0.2.3, cutthefat@1.0.3, darcesdriftersredone@1.2.8-dev.1, diversediets@1.0.3, dodgemaster@1.2.3, hqzlights@1.1.2, driedpeat@1.1.2, dryablegroundstorage@1.0.1, expandedmolds@1.2.0, expres@1.2.1, explosive@0.1.2, fancysky@1.1.6, firestarters@1.4.5, firstaidkit@1.0.7, floralzonescaperegion@1.0.28, floralzonescaribbeanregion@1.0.23, floralzonescentralaustralianregion@1.0.20, floralzonescosmopolitanregion@1.0.11, floralzoneseastasiaticregion@1.0.19, floralzonesmediterraneanregion@1.0.19, floralzonesneozeylandicregion@1.0.19, flora@1.0.7, forestsymphony@1.0.6, bovinae@0.3.5, caninae@1.1.2, capreolinae@2.0.7, 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.7, manidae@1.0.19, meiolaniidae@0.1.10, pantherinae@1.2.8, rhinocerotidae@1.0.23, sirenia@1.0.26, spheniscidae@1.0.16, thylacinidae@0.1.6, viverridae@1.0.8, vombatidae@0.4.5, geoaddons@1.4.6, hangingoillamps@1.0.5, hotspringheal@1.0.3, hidearmor@0.0.1, icecutterrw@1.0.4, JacksFirewood@1.1.0, liberatedbeds@1.0.0, longtermfood@0.5.5, manualquenching@1.0.10, masonsdelight@1.0.3, millwright@1.3.1, moreicons@1.1.1, morefuel@1.1.0, mycodiversity@1.0.5, nooffhand@1.0.1, overhaullib@1.19.6, pigfeed@1.0.9, primitivesurvival@4.0.3, scrollrackable@1.4.0, Sergsmetaltongs@2.2.1, shelfobsessed@1.9.5, slings@0.0.3, slowwalkmod@1.2.5, snowcaps@0.0.0, soilmustfall@1.2.0, somedisassemblyrequired@1.8.9, sonitorecipepin@1.0.1, sprintmomentum@0.2.0, spyglass@0.6.0, steamandpower@1.7.2, stonemallet@1.0.3, swifttime@1.1.2, temporalsymphony@2.2.2, toolbelt@0.3.3, traderssellcrowbars@0.0.2, translocatorengineeringredux@1.6.3, undertangledboughs@1.0.5, usefultraders@2.3.1, vaultandroll@0.1.1, vintageengineering@0.4.9, game@1.21.6, vsimgui@1.1.16, warmgambeson@1.0.0, wgmtfix@1.1.3, whichoreiswhich@1.0.0, wildfarmingrevival@1.4.2, zaecompatfoodshelves@0.2.0, zoombuttonreborn@2.0.1, abyssaldepths@1.0.11, aculinaryartillery@2.0.0-dev.11, alchemy@1.8.2, offhandpenalty@1.2.3, ancienttools@1.6.0, animalcages@4.0.2, apegrapes@1.3.1, attributerenderinglibrary@2.4.2, egocaribautomapmarkers@4.0.3, awearablelight@1.1.4, beararmorrepair@1.0.3, bedspawnv2@1.6.4, betterentitytooltip@1.0.1, betterfirepit@1.2.0, betterruins@0.5.6, bettertraders@0.1.0, bloodtrail@1.1.8, bradycrudebuilding@1.4.8, buildingwands@1.0.1, bullseyecontinued@3.4.5, butchering@1.10.17, buzzwords@1.8.1, canjewelry@0.5.19, carryon@1.12.1, cartwrightscaravan@1.8.0, climbmountain@0.2.2, commonlib@2.8.0, composter@1.2.2, configlib@1.10.13, coreofartspatch@1.0.5, critcherscompendium@1.0.6, caffCuniculture@1.0.10, domesticanimaltrader@1.1.2, eggpiemod@0.1.0, electricalprogressivecore@2.6.4, enhancedhandbook@1.7.1, tackandequipment@1.0.0, expandedstomach@1.2.7, extendedcreation@1.1.7, extended-sleep-time@1.0.0, extrainfo@1.11.0, farmlanddropswithnutrients@1.2.2, farseer@1.3.3, fatcandles@1.0.1, fendragonbcs@0.2.1, fieldsofsalt@1.2.4, floatingfish@1.1.7, foodshelves@2.3.3, footprints@1.1.2, foragersgamble@1.2.5, fromgoldencombs@1.9.4, genelib@2.1.6, geologymap@1.0.2, glassroof@1.2.1, handbookdeclutterer@1.0.0, herbarium@1.4.1-rc.1, hudclockpatch@1.1.2, hydrateordiedrate@2.3.6, insanitylib@1.1.0, interestingoregen@2.2.3, itemmagnet@2.0.0, jaunt@2.1.2, joyofsailing@1.4.0, JustTrapdoors@1.0.2, kevinsfurniture@1.8.1, lathemod@1.0.3, lavoisier@1.3.1, lichenredux@1.8.3, maketeaforked@0.7.6-dev.1, maltiezcrossbows@1.7.0, medievalexpansionpatch@1.3.4, metalunittooltip@1.1.1, meteoricexpansion@1.2.6, mobsradar@2.1.12, moreanimals@1.6.6, mountcamerafix@0.2.0, naturalfertilizer@1.3.0, novelty@1.1.1, optimetime@1.3.6, packrat@1.0.0, panningmachine@1.0.6, pauseonstart@1.0.1, pelaguswinds@1.2.2, petai@4.0.3, pickbars@2.0.3, pickupbabyanimals@1.2.2, postsandbeams@1.5.0, claywheel@1.1.7, purposefulstorage@1.5.1, qualityofbuilding@1.1.0, realsmoke@1.1.10, realtimefirepit@1.0.0-dev.120, rebuildablebloomery@1.0.6, recyclingtools@1.4.4, riftworks@1.1.16, riverfish@1.0.2, rustboundmagic@3.1.18, saltandsands@1.1.6, saltpeterproduction@1.1.0, scarecrow@1.7.1, scientificsmithy@0.1.9, showcraftable@1.2.6, sleepneed@3.1.0, sluice@2.3.2, smithingplus@1.8.3, spinningwheel@1.1.4, sprinklersmod@1.0.2, spyglassinfo@1.0.2, statushudcont@4.1.1, stepupadvanced@1.2.4, cookie12000stickbeam@1.2.2, stillnecessaries@1.3.0, stirlingmotor@2.0.0, stonebakeoven@1.2.0, stonerailings@1.4.0, substrate@1.1.4, tasshroombodyfat@0.0.16, temperatureheighttweak@0.3.0, tentbagreworked@3.1.1, terraprety@7.9.0, th3dungeon@0.4.5, th3expansion@2.0.0, th3restock@1.1.2, toolsmith@1.2.14, tradie@1.7.0, translocatorrelocator@1.0.3, unofficialbugfix@0.0.6, variantmeals@2.6.1, versionchecker@1.2.2, Verticality@0.3.1, coffee@1.0.5, discordrichpresence@1.1.1, creative@1.21.6, vsquest@3.0.0, survival@1.21.6, vsvillage@4.0.0-pre.4, woodenfortifications@2.0.10, woodstain@1.3.1, xlib@0.9.0-pre.2, alchemistry@1.0.2, aogbetterflails@1.0.0, artofgrowingpatch@1.1.8, autoconfiglib@2.0.9, beamtools@1.0.2, boltheadsrecovery@0.0.6, bookbinders@1.4.0, brainfreeze@1.3.5, cats@4.0.1, chemistrylib@1.1.5, tradercamps@1.1.7, detailedanimals@0.7.2, electricalprogressivebasics@2.6.4, elkjaunt@1.3.0, equus@1.2.0, expandedfoods@2.0.0-dev.7, em@3.4.1, extraoverlays@1.6.0, extremefirestartersreforged@1.1.2, fueledwearablelights@1.1.4, gaiogcompatpatch@1.0.0, glassmaking@1.5.2, playercorpse@1.12.0, quiversandsheaths@0.6.14, realsmokeforancienttools@1.0.0, realsmokeforbraziers@1.1.1, realsmokeforchiseltools@1.1.1, seasonalbreeding@1.1.0, shearlib@1.2.0, stainedbeams@1.2.1, stonequarry@3.5.1, storageoptions@2.0.0, th3dungeontopentrance@0.4.2, wearandtear@1.5.17, wildcraftfruit@1.4.4, wildcraftherb@0.0.1, wildcrafttree@1.3.3, wolftaming@4.1.4, xinvtweaks@1.8.1, xskills@0.9.0-pre.2, aogbreedingaddonpatch@1.1.2, artsxskillspatch@1.1.2, bricklayers@3.1.5, crazyspotterywheelxskillspatch@1.0.0, ecwildcrafttree@1.0.2, electricalprogressiveindustry@0.5.1, electricalprogressiveqol@2.6.6, fgcwildcraftcrashfix@1.0.1, realsmokeartofgrowingfirepit@2.0.0, rustboundmagicxskillsfix@0.2.2, sandwich@1.2.9, sausages@0.0.8, tailorsdelight@2.1.2, veep@2.3.0, wool@1.8.2, xskillscatchablefotsa@0.0.2, xskillsmediterranean@1.0.0, xskillsgilded@1.3.5, zaecompatwildcraftforage@0.3.0, betterruinsbricklayerscompat@1.0.0, millwrightxwoolcompat@1.1.0
Involved Harmony IDs: qualityofbuilding, XSkillsPatch, XInvTweakPatch
System.NullReferenceException: Object reference not set to an instance of an object.
at QualityOfBuilding.Source.HarmonyPatches.BlockBloomeryPatch.HandleItemWithBuildingMode(BlockBloomery __instance, Boolean& __result, IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel) in D:\Projects\VintageStory\Mods\QualityOfBuilding\QualityOfBuilding\Source\HarmonyPatches\BlockBloomeryPatch.cs:line 37
at Vintagestory.GameContent.BlockBloomery.OnBlockInteractStart_Patch2(BlockBloomery this, IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel)
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.TryBeginUseBlock(Block selectedBlock, BlockSelection blockSelection) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 886
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.HandleMouseInteractionsBlockSelected_Patch1(SystemMouseInWorldInteractions this, Single dt)
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnFinalizeFrame(Single dt) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 87
at Vintagestory.Client.NoObf.ClientMain.RenderToDefaultFramebuffer(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 1031
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 112
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

Event Log entries for Vintagestory.exe, the latest 3
==================================
{ TimeGenerated = 09/01/2026 10:40:05 PM, Site = , Source = Application Error, Message = Faulting application name: Vintagestory.exe, version: 1.21.6.0, time stamp: 0x67fe0000
Faulting module name: openal32.dll, version: 1.23.0.0, time stamp: 0x63dd31ad
Exception code: 0x40000015
Fault offset: 0x00000000000df046
Faulting process id: 0x2b5c
Faulting application start time: 0x01dc81a8b607ee23
Faulting application path: G:\Games\Vintagestory\Vintagestory.exe
Faulting module path: G:\Games\Vintagestory\Lib\openal32.dll
Report Id: 23eb2f27-edac-11f0-86f7-0026831486b4 }
--------------
{ TimeGenerated = 07/01/2026 6:23:18 PM, Site = , Source = Application Error, Message = Faulting application name: Vintagestory.exe, version: 1.21.6.0, time stamp: 0x67fe0000
Faulting module name: openal32.dll, version: 1.23.0.0, time stamp: 0x63dd31ad
Exception code: 0x40000015
Fault offset: 0x00000000000df046
Faulting process id: 0x22bc
Faulting application start time: 0x01dc7ffe6db092f5
Faulting application path: G:\Games\Vintagestory\Vintagestory.exe
Faulting module path: G:\Games\Vintagestory\Lib\openal32.dll
Report Id: f0302e38-ebf5-11f0-86f7-0026831486b4 }
--------------
{ TimeGenerated = 07/01/2026 5:52:34 PM, Site = , Source = Application Error, Message = Faulting application name: Vintagestory.exe, version: 1.21.6.0, time stamp: 0x67fe0000
Faulting module name: openal32.dll, version: 1.23.0.0, time stamp: 0x63dd31ad
Exception code: 0x40000015
Fault offset: 0x00000000000df046
Faulting process id: 0x15d4
Faulting application start time: 0x01dc7febe87dc8e4
Faulting application path: G:\Games\Vintagestory\Vintagestory.exe
Faulting module path: G:\Games\Vintagestory\Lib\openal32.dll
Report Id: a51a5aed-ebf1-11f0-86f7-0026831486b4 }




BraniyaKz, Dec 18th 2025 at 2:26 AM (modified Dec 18th 2025 at 8:49 PM)

BeloMaximka - Ok, here's the example: Also, i just realized the mod vanilla building expanded exists, which gets rid of both the need for me to add these recipes in the first place, and provides a nice little preview for placing blocks. Only thing is, I haven't tested these two mods together yet. In theory they should work, because the building hammer from that mod is held in the off-hand, but im not sure if it'll recognize the block fully. Will test, and get back to you.

Recipe
{
    "tool": {
        "type": "item",
        "code": "game:hammer-*"
    },
    "replaceDrops": true,
    "ingredients": [
        {
            "type": "item",
            "code": "game:plank-*",
            "name": "wood",
            "quantity": 6
        },
        {
            "type": "item",
            "code": "game:metalnailsandstrips-*",
            "quantity": 2
        }
    ],
    "output": {
        "type": "block",
        "code": "game:door-solid-{wood}"
    }
}
BeloMaximka , Dec 17th 2025 at 4:26 PM (modified Dec 17th 2025 at 4:26 PM)

BraniyaKz Hi! Can be an oversight from me, could you please send a recipe?

BraniyaKz, Dec 15th 2025 at 3:53 AM

BeloMaximka - Fantastic mod! Just wanted to let you know, I made some recipes using the hammer item as the tool (hoping i could pull up some recipes by holding the hammer), and got a crash.

Crash Report
Game Version: v1.21.6 (Stable)
12/14/2025 10:43:04 PM: Critical error occurred
Loaded Mods: barkbeetle@1.0.4, buzzybees@1.1.7, clicktopick@2.1.3, diversediets@1.0.3, footsteps@1.0.2, geoaddons@1.4.4, immersivemining@0.2.17, juicyores@1.0.0, manualdishes@0.1.1, plumpkins@1.1.3, radialcrafting@0.2.6, sonitorecipepin@1.0.1, sprintmomentum@0.2.0, tulesedgefix@1.0.1, undertangledboughs@1.0.5, game@1.21.6, vsimgui@1.1.16, zoombuttonreborn@2.0.0, attributerenderinglibrary@2.4.0, betterpoultice2@1.0.11, bloodtrail@1.1.8, carryon@1.12.1, composter@1.2.1, configlib@1.10.12, danatweaks@3.6.0, entangledinnature@1.0.61, extrainfo@1.10.1, farseer@1.3.3, footprints@1.1.2, genelib@2.1.6, handbookdeclutterer@1.0.0, hpspinningwheel@1.0.7, hudclockpatch@1.1.2, immersiverope@1.0.7, improvedsheepupdate@1.0.2, jaunt@2.1.1, morepiles@2.2.0, mountcamerafix@0.2.0, naturalfertilizer@1.3.0, optitime@1.3.11, pomshadercache@1.1.3, qualityofbuilding@1.1.0, radialmenu@1.0.3, saltandsands@1.1.6, terrainslabs@1.0.7, trailmodupdated@1.3.5, unofficialbugfix@0.0.5, creative@1.21.6, survival@1.21.6, autoconfiglib@2.0.9, danacancook@1.0.1, detailedanimals@0.7.1, elkjaunt@1.3.0, seasonalbreeding@1.0.0, shearlib@1.2.0, terrainslabstrailmodcompatibility@1.0.1, wool@1.8.2, lostarchives@0.0.1
System.NullReferenceException: Object reference not set to an instance of an object.
at Vintagestory.Common.InventoryPlayerCreative.GatherTabStacks(CollectibleObject[] collectibles) in VintagestoryLib\Common\GameContent\Inventory\InventoryPlayerCreative.cs:line 182
at Vintagestory.Common.InventoryPlayerCreative.UpdateFromWorld(IWorldAccessor world) in VintagestoryLib\Common\GameContent\Inventory\InventoryPlayerCreative.cs:line 116
at Vintagestory.Common.CreativeNetworkUtil.UpdateFromPacket(IWorldAccessor world, Packet_InventoryContents packet) in VintagestoryLib\Common\GameContent\Inventory\InventoryPlayerCreative.cs:line 33
at Vintagestory.Client.NoObf.ClientPlayer.AddOrUpdateInventory(ClientMain game, Packet_InventoryContents packet) in VintagestoryLib\Client\Model\ClientPlayer.cs:line 139
at Vintagestory.Client.NoObf.ClientPlayer.UpdateFromPacket(ClientMain game, Packet_PlayerData packet) in VintagestoryLib\Client\Model\ClientPlayer.cs:line 161
at Vintagestory.Client.NoObf.GeneralPacketHandler.HandlePlayerData(Packet_Server packet) in VintagestoryLib\Client\Systems\GeneralPacketHandler.cs:line 261
at Vintagestory.Client.NoObf.ProcessPacketTask.ProcessPacket(Packet_Server packet) in VintagestoryLib\Client\Systems\ProcessPacketTask.cs:line 18
at Vintagestory.Client.NoObf.ProcessPacketTask.Run() in VintagestoryLib\Client\Systems\ProcessPacketTask.cs:line 12
at Vintagestory.Client.NoObf.ClientMain.ExecuteMainThreadTasks(Single deltaTime) in VintagestoryLib\Client\ClientMain.cs:line 786
at Vintagestory.Client.GuiScreenConnectingToServer.RenderToDefaultFramebuffer(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenConnectingToServer.cs:line 298
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 112
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
BeloMaximka , Dec 10th 2025 at 5:32 AM

Pell yes, I came up with one solution to this problem recently and will try to implement it in the next update

Pell, Dec 9th 2025 at 10:29 PM

is it possible to make a version without changing the recipes, for added compatibility? perhaps some config options

BeloMaximka , Dec 8th 2025 at 8:46 AM

Yochan

1. Reproduce the crash, send the stepsa

2. If you use Windows: WIN+R, enter %appdata%/VintagestoryData/Logs, send client-main.log and server-main.log (put the contents in the spoiler)

Yochan, Dec 7th 2025 at 8:18 PM

Getting crash from using soil block with the B button, how do i send crash log? sorry first time posting on here. 

Vigilance, Dec 7th 2025 at 6:37 PM

Some really good points there. I'm actually super stoked to see you've thought a lot of this out and came to conclusions with reason instead of just going "It is this way because I programmed it this way first" which I've always found to be a bad way to do things! I think I'm just bitter since specifically mudbricks right now are a nightmare. I don't use barren soil to begin with, so the instant I break one I'm already inventory minus. I'm pretty sure most of my current gripes are adjacent to the blocks I'm using haha

I'm not super sure what to do about inconsistencies in recipes. I have a lot of things more "generous" to craft on my end: cobblestone, dry stone, mudbrick(!!!) and whatnot are buffed. I'll see where I end up thoughts-wise later.

ZeroAresIV, Dec 6th 2025 at 8:23 PM

I absolutely LOVE the new menu system. It makes me wish that Vintage story's UI sometime could be reworked and look more fancy. 

i really wish mods like Radial Crafting had a similar UI, the rusty gear menu just looks So fucking cool

Beedy, Dec 6th 2025 at 6:50 PM

Genious concept!

BeloMaximka , Dec 6th 2025 at 4:28 AM

Vigilance thanks for you feedback!

  1. Recipe inconsistencies are a mod compatibility problem, this should be fixed manually. That's the main downside of QoB mod currently, I tried to come up with a system that automatically generates building recipes based on grid recipes, but there's just so many hidden pitfalls in this approach
  2. Regrading mudbricks, that's a bug. I will try to fix that in the future, thanks for noticing
  3. Regarding "drop base ingredients" feature, the main idea of this is to make players operate with raw ingredients, not full blocks. So in case you want to build smth (e.g a fence), you don't end up with extra blocks you don't need anymore. But there may be some problems with blocks droping multiple ingredients which can clog up inventory initially. But as long as we don't add recipes with 4+ ingredients, I think UX(user experience) should be fine

 

I hope you like the new radial menu btw

Vigilance, Dec 6th 2025 at 3:51 AM

Some thoughts I've gathered since running this for a few play sessions:

Some of the inconsistencies between my recipes and this mod's recipes are bothersome. For instance, I've got more expensive doors that ask for nails and strips, your mod just uses the stock recipe and I can place cheaper doors using boards instead of pre-crafting one. Additionally, my mudbrick slabs being named "barren soil" when placed is bothersome. Additionally, I kinda just don't like some of the blocks coming apart to their base ingredients, but I'm not sure if that's a "Change is bad!" or if that's actually a gripe I have. I'll probably decide in a few more sessions haha

pepe2030, Dec 1st 2025 at 6:34 PM

Hey I discovered that the recepie for solid trapdoors and bookshelfs are the same.

By the way great mod.

BeloMaximka , Nov 29th 2025 at 10:06 PM

LivCi I added configuration support, sorry for the long wait

Vigilance, Nov 15th 2025 at 4:38 PM

Honestly I'm a terrible person to ask because I am awful about all of these handy easy building tools in any game that emulates them. I can probably only point out things that feel "weird," and I haven't had enough time to really complain about your mod since I'm still trying to catch up versions. I did build a small little cottage in my server before I had to do more boring administravia- I'll check back in a day or two if I have complaints, and I'll be sure to let you hear them! I don't particularly like getting barren soil back from breaking arid packed dirt, and frankly the grid recipe for arid packed dirt felt "wrong," but I don't know if that's my haven't-played-in-a-while muscle memory at work or if it's one of your changes.

BeloMaximka , Nov 15th 2025 at 4:24 PM

Vigilance thanks. I am slowly working on an update and would love to hear you feedback regarding usability and learning curve. Tried to make it straighforward but maybe there're some room for improvement

Vigilance, Nov 15th 2025 at 3:44 PM

The crafting recipes change was kind of insane to package with this but I'm actually loving it after just giving it a try. There are some slight usability things that make this mod feel a little unwieldy but it's probably a learning curve thing. I am super surprised by this mod out of the box, and honestly am generally super surprised by the quality of your work. Awesome stuff!

wasabiii, Nov 14th 2025 at 1:07 PM

BeloMaximka Thank you for the response! Looking forward to what you come up with.

As for pulling the recipes from the crafting grid, you could do it the way Dana does. Where it's disabled by default, and if set to True, it could for example autofill a json. One could then adapt to their liking.

Also, you don't necessarily need to include the actual recipes in the json file, you could simply allow for a list of strings such that one could specify for which blocks to pull recipes for like "andesite-stone" or even wildcards like "*-stone". This would make it a lot easier for mod compatibility. 

Just spitting out potential ideas. ;)

BeloMaximka , Nov 10th 2025 at 4:28 PM

wasabiii Hi, glad you're enjoing it! It's a bit underbaked, but I got distracted with Terrain Slabs, need to work this one as well)

I think managing recipes through config would be more cumbersome. As for automatically pulling recipes from the crafting grid - I considered adding this feature, but there are some caveats like proportions that I need to solve first

I will definitely try to add a way to generate json from grid recipes so modders can add compatibility recipes easier

wasabiii, Nov 10th 2025 at 8:57 AM

Love the mod!

Do you think it'd be possible to automatically add existing recipes (or make this toggleable)?
Or allow adding recipes with a config instead of having to make a seperate mod for it?

BeloMaximka , Nov 3rd 2025 at 5:09 PM

Some issues with the site maybe, here's the link

eerino, Nov 3rd 2025 at 4:17 PM

Is it just me or is the video on this mod page not working?

bintoss, Oct 20th 2025 at 8:21 AM

I'll have to check if this synergizes or conflicts with Salty's Radial Crafting...It'd be great if they work together.

BeloMaximka , Oct 19th 2025 at 9:43 PM

LivCi

Yeah, I had no idea what should be configurable, so you can drop your suggestions here and I'll get to them this week

LivCi, Oct 19th 2025 at 9:12 PM

Will you add a config file to change certain things? For example, I would like to change the amount of stones it takes to make paths with the shovel function

itsmars, Oct 19th 2025 at 6:17 PM

holy

Board, Oct 19th 2025 at 2:30 PM

You have piqued my interest