Mods / Rudiments

Tags:
Realism
Author:
phoenix9
Side:
Both
Created:
Jun 3rd at 3:35 AM
Last modified:
3 days ago
Downloads:
68
Follow Unfollow 25
Recommended download (for Vintage Story 1.22.3):
rudiments_0.7.0.zip  1-click install

Rudiments

A Vintage Story mod restoring the depth of pre-industrial craft.

Rudiments adds realistic, multi-step production chains for the materials and tools that defined life before iron — worked one process at a time, with each step mattering. Inspired by Primitive Technology and RHSWorks.

Pre-release — work in progress. New systems are added incrementally; existing ones are tested and balanced before the next is opened.


Fibre Production

Spoiler!
 

Flax and stinging nettle processed through authentic multi-step chains. Quality is earned, not given — retting timing determines fibre grade, and fine fibre carries real mechanical bonuses downstream.

Flax — 7 steps

Harvest earlyStook-cureRippleRetDryBreakScutchHatchel

Harvest at stages 3–7 for bundles. Waiting to stage 8–9 gives mature seeds for linseed oil — you choose which yield to prioritise.

Nettle — 6 steps

Harvest matureStook-cureRetDryBreakScutchHatchel

Nettle skips rippling. Young plants (stages 3–6) yield edible leaves — hold right-mouse for a slow careful harvest to avoid the sting, or wear gloves and break normally. Mature plants (stages 7–9) yield fibre bundles.

Retting quality

Bundles pass through Coarse → Fine → Standard → Rot as retting progresses. The fine window is brief. Letting it pass drops quality back to Standard; leaving bundles indefinitely rots them.

  • Field retting — free, but weather-dependent. Dry spells stall progress; rain restarts it.
  • Vat retting — controlled, predictable, faster.
  • Lime retting — add quicklime to the vat for maximum speed, but quality is permanently capped at Standard. Good for bulk, not craft work.

Fibre quality bonuses

Fine fibre twisted into fine cord gives a significant durability bonus on bows and is used in gambeson armour crafting.

Equipment

Block Function
Stook Weather-aware curing and drying; bundles placed directly on the ground
Retting vat Water retting with quality control and optional lime modifier
Drying rack Safe indoor drying; quality preserved
Break Breaks dried bundles
Scutch board Removes woody shives; primitive / simple / advanced tiers
Hatchel Final combing; primitive / simple / advanced tiers
Mechanical scutch mill Axle-driven; automates breaking and scutching
Oil press Presses mature flax seeds into linseed oil
 

Nettle — an invasive weed resilient crop

Spoiler!
 

Nettle no longer drops seeds. It propagates the way real nettle does: by rhizome.

  • Root crowns. Cutting a plant at any stage leaves a root crown (stub) that regrows on its own, or can be dug up with a shovel for a transplantable rhizome.
  • It spreads. Wild nettle creeps into nearby fertile ground, strongly preferring tilled farmland. A built-in density cap and outward radius limit stop patches from overrunning a world.
  • Networked feeder. Nettle is efficient on its own soil (uses roughly half the nitrogen of an ordinary crop) but leaches nitrogen from adjacent farmland as it grows — and never drains its own kind. Keep it clear of your fields, or use it deliberately to exhaust ground you want to fallow.
  • Invasive mode (off by default). When enabled, nettle spreads as invisible buried rhizomes that surface without warning. Tilling the soil clears them before they emerge.

All of this is tunable — see Configuration.

 


Tool Binding Methods

Spoiler!
 
Removed in favor of toolsmith compatibility integration.

 


Planned

These are directions, not promises. Each will be its own coherent addition when the time is right.

  • Clayworks — hand-formed pottery with drying and firing stages; quality influenced by clay source and technique
  • Intermediate kilns — the gap between a pit fire and a beehive kiln is large; filling it with updraft and clamp kilns
  • Mudwork —  cob, adobe; building with what's underfoot

Configuration

 

Spoiler!

All settings live in VintagestoryData/ModConfig/rudiments.json (created on first launch). If AutoConfigLib is installed, settings can be edited in-game — no file editing needed.

Apply changes without restarting: /rudimentsreload (requires controlserver privilege).

Note: binding durability and glue cure times are baked onto the item at craft time. Reloading config changes future crafts and live failure or cure rolls; it does not update already-crafted tools.

Tool binding

Setting Default Effect
FrictionDurabilityMul 0.35 Durability multiplier for friction-fit tools
GlueDurabilityMul 1.1 Durability multiplier for pitch-glued tools
NailDurabilityMul 1.25 Durability multiplier for nailed tools
GlueNailDurabilityMul 1.5 Durability multiplier for glued and nailed tools
FrictionFailChance 0.04 Per-use chance a friction-fit tool comes apart
HeadSurvivesChance 0.6 Chance the stone head drops when a friction-fit tool fails
GlueCureHours 12 In-game hours pitch glue must cure before the tool can be used
GlueLitres 0.25 Litres of hot pitch glue consumed per tool
NailQuantity 1 Nails consumed per tool
FrictionRequiresRopeMod true Only register friction-fit recipes when Tools Require Rope is present
FrictionStoneMaterials flint, chert, granite, andesite, basalt, obsidian, peridotite Stone types eligible for friction-fit binding
GlueLiquidContent game:glueportion-pitch-hot Pitch glue liquid required
GlueContainers woodbucket, bowl-fired Containers the glue may be supplied from
NailIngredient game:metalnailsandstrips-* Nail item consumed

Nettle spread and invasiveness

Setting Default Effect
NettleSpreadEnabled true Whether nettle spreads at all
NettleSpreadChance 0.20 Spread chance onto plain fertile soil per attempt
NettleTilledSpreadChance 0.45 Higher spread chance onto tilled farmland
NettleSpreadIntervalDays 1 In-game days between spread attempts for a mature plant
NettleSpreadMatureStage 6 Minimum growth stage before a plant starts spreading
NettleFarmlandContainment false If true, nettle grown on farmland won't spread outward
NettleSpreadMaxDensity 5 Local density cap — does not limit outward reach
NettleSpreadDensityRadius 2 Radius checked for the density cap
NettleSpreadMaxRadius 16 Hard outward cap in blocks. 0 = unlimited
NettleWildGrowthDaysPerStage 3 Days for a wild nettle to advance one growth stage
NettleStubRegrowDays 3 Days a cut stub takes to regrow to stage 1
NettleCreepEnabled false Invasive mode: spreads as invisible buried rhizomes
NettleCreepEmergeDays 4 Days a buried rhizome takes to surface

Nettle as a heavy feeder

Setting Default Effect
NettleHeavyFeederEnabled true Nettle leaches nitrogen from adjacent farmland
NettleNutrientConsumption 15 Nitrogen taken from its own soil per growth event
NettleNeighborNitrogenDepletion 3 Nitrogen leached from each adjacent farmland block per growth
NettleAlwaysLeaveStub true Cutting nettle at any stage leaves a regrowable root crown

Reed spread

Setting Default Effect
ReedSpreadEnabled true Reeds slowly spread along suitable water and soil
ReedSpreadChance 0.03 Spread chance per attempt
ReedSpreadIntervalDays 2 In-game days between spread attempts
ReedSpreadMaxDensity 6 Local density cap
ReedSpreadMaxRadius 16 Hard outward cap in blocks. 0 = unlimited
ReedSpreadDensityRadius 2 Radius checked for the density cap

Other

Setting Default Effect
StookMaxBundles 64 Maximum bundles a single ground stook can hold
 

Compatibility

Version Status
VS 1.22.x Supported

Spinning wheel. If Immersive Fibercraft (the spinning wheel mod) is installed, nettle fibre can be spun on the wheel. The integration activates automatically; it is a no-op if the mod is absent.

Tools Require Rope. See the Tool Binding section above. Both the original mod and the community fork are detected automatically.

AutoConfigLib / ConfigLib. Supported for in-game config editing.


Credits

Expanded from AgeOfFlax by OppoOtis.
Inspired by Primitive Technology and RHSWorks.


Licence

MIT — do what you like, credit appreciated.

Mod Version Mod IdentifierFor Game version Downloads Released Changelog Download 1-click mod install*
0.7.0 rudiments 12 3 days ago rudiments_0.7.0.zip 1-click install
Replace homegrown tool binding with Toolsmith compatibility (v0.7.0)

The custom friction-fit/glue/nail binding system collided with Toolsmith's tool-tinkering CollectibleBehaviors (both override GetMaxDurability/OnDamageItem on the same vanilla tools) and never worked well on its own. Removed it entirely and instead registered rudiments:finecord as a premium binding material in Toolsmith's data-driven binding system via standalone JSON — no code, no hard dependency, a complete no-op without Toolsmith installed.

0.6.13 rudiments 4 3 days ago rudiments_0.6.13.zip 1-click install

Fixed rot transition of nettle leaves.

0.6.12 rudiments 0 3 days ago rudiments_0.6.12.zip 1-click install

Add normal food spoilage to nettle leaves

0.6.11 rudiments 2 3 days ago rudiments_0.6.11.zip 1-click install
- RemoveBinding: count occurrences of each ingredient letter in the old
  pattern before building the shapeless recipe, so 2 sticks stay 2 sticks
  instead of silently becoming 1.
- OnHeldInteractStart / OnHeldAttackStart: drop the base() call that was
  resetting handling to PassThrough and undoing PreventDefault set by
  earlier behaviors (e.g. CollectibleBehaviorThrowable on spears).
- OnDamageItem FrictionBreak: add player-held-slot check (RightHandItemSlot
  / LeftHandItemSlot) so thrown-projectile entities — which pass FiredBy
  (the player) as byEntity — no longer trigger FrictionBreak on the
  projectile's internal slot, causing it to vanish on landing.
- MakeGlue: change ingredient Type from Block to Item; woodbucket and
  ceramic bowls are Item-class collectibles in VS, so Block prevented the
  glue+nails recipe from resolving at all.
 
AddBinding produced a 2x2 shaped recipe while nail-alone and glue-alone
keep the original 1x3 column — players trying the same column arrangement
never matched. Make the gluenail recipe shapeless so all four ingredients
(head, nail, sticks, bowl-with-glue) can be placed anywhere in the grid.
 
Both game:woodbucket and game:bowl-*-fired are Block types in VS assets.
The v0.6.9 change to EnumItemClass.Item caused MatchWildcardIngredients to
fail the type check (Item != Block), silently breaking all glue and gluenail
recipes. Reverting to Block restores standalone glue and makes the shapeless
gluenail recipe matchable again.
0.6.8 rudiments 5 4 days ago rudiments_0.6.8.zip 1-click install
Fix flat item guiTransform (sliver rendering), finecord spinning output, barrel log (v0.6.3)
  • All 8 shapeless items had x/y/z rotations intended for 3D shapes applied to flat voxelized textures, causing them to render as a tiny sliver or zoomed corner in the GUI. Set rotation to 0 and scale to 1.0 for face-on flat rendering. - Spinning wheel compat for finefibers now outputs rudiments:finecord (4 fibers → 1 cord, matching the grid recipe ratio) instead of regular flaxtwine. - Add server-log notification when barrel retting bath starts, to confirm behavior fires.
Fix barrel retting display and lime recipe (v0.6.4)
 

Three bugs: 1. GetBlockInfo text was never shown: BlockLiquidContainerBase.GetPlacedBlockInfo only calls BlockBehavior (block-level) methods, not BlockEntityBehavior.GetBlockInfo. Fix: add companion BlockBehaviorRettingBathInfo that reads the entity behavior state via be.GetBehavior<T>() and surfaces it through the block-level hook. 2. Lime recipe/behavior used game:slakedlimeportion — the real vanilla limewater item is game:limewaterportion. Fixed in both retting-lime.json and the behavior constant. 3. Missing incontainer-item-rettingbathportion lang key caused raw key in barrel display.

 

Retting bath amber tint, restart fix (v0.6.5)
  • rettingbathportion: use vinegarportion texture (amber) instead of waterportion with tintIndex 0 — tintIndex uses climate-based color which isn't reliably green - Fix restart: StopRetting now calls RestoreLiquid which converts rettingbathportion back to water/limewater so the barrel recipe re-matches and the player can reseal a new batch after removing the bundle mid-ret

 

Drain retting water after conversion (v0.6.6)

Once the bundle converts (coarse or beyond), removing it drains the barrel — the water is exhausted by the retting process. If pulled before conversion, water is still restored so the player can reseal for a fresh batch.

 

Stop retting when liquid is removed (v0.6.7)

Tick now checks both slots — if the rettingbathportion is taken out while the bundle stays in, StopRetting fires just as it would for the bundle.

 

Fix rettingbathportion texture path crash (v0.6.8)

Vinegarportion's texture is block/liquid/vinegar not block/liquid/vinegarportion; wrong path caused a critical crash on barrel open.

0.6.2 rudiments 2 4 days ago rudiments_0.6.2.zip 1-click install
- Nettle meals: add meal-ingredient lang keys + textureMapping so soup/stew
  show a proper name and rendered (green) contents instead of looking empty.
- Field retting: extract shared RettingProcess; fix the chunk-reload time-jump
  that skipped the brief fine window, and add a "fine possible in ~X" timer.
- Barrel retting: replace the standalone vat with a vanilla-barrel behavior --
  seal water/limewater + bundles to start an open "retting bath" that progresses
  coarse -> fine -> standard -> rot (lime = faster, capped at standard). Existing
  placed vats keep working but are no longer craftable.
 
- All 8 shapeless items missing their singular 'texture' field now render correctly
  (finefibers, finecord, coarsefibers, nettlerhizome, nettleleaves, cookednettlerhizome,
  linseedoil, linseedcake were invisible in inventory/crafting).
- Add Immersive Fibercraft spinning wheel compat for finefibers (same ratio as nettlefiber).
- Retting bath liquid now uses tintIndex 1 (green plant tint) instead of blue water tint,
  making it visually distinct from plain water so the barrel retting state is visible.
0.5.1 rudiments 6 5 days ago rudiments_0.5.1.zip 1-click install
Add tool binding methods: friction-fit / glue / nail / glue+nail (v0.5.0)

Turns "how the tool head is bound to the handle" into a four-tier crafting axis that coexists with ToolsRequireRope (fork or original) and works without either mod. - ToolBindingSystem (ExecuteOrder 1.02, after ToolsRequireRope's 1.01) derives rope-free recipe variants at runtime from every tool grid recipe: friction-fit (remove binding, stone-age only, gated on the rope mod), glue (pitch glue from a bucket/bowl, +10% durability, must cure), nail (metal nails, +25%), and glue+nail (+50%). All multipliers configurable. - ToolBindingBehavior: durabilityMul on GetMaxDurability, glue cure timer that blocks use until cured, friction-fit per-use failure that drops the stone head, attribute-driven swap of the "string" binding texture per method. - Behaviour injected server-side in AssetsFinalize and client-side via BlockTexturesLoaded (Items/Blocks aren't populated at client AssetsFinalize). - Config knobs for every durability multiplier, cure hours, fail chance, glue litres/container, nail ingredient, and friction stone materials. - Placeholder binding textures (glue/nail/none) + lang entries. Known WIP: friction-fit craft (shapeless) under test; glue/nail/cure/tooltip/ texture-swap confirmed working in-game.

0.4.10 rudiments 2 5 days ago rudiments_0.4.10.zip 1-click install
Outward radius cap applies to all rhizome spread incl. creep & reeds (v0.4.10)

- New IPatchOrigin interface; nettle, buried rhizome, and reeds all carry/inherit a patch origin so the hard outward cap bounds every autonomous spread vector. - Creep mode: buried rhizome now inherits the patch origin and passes it to the emerged nettle, so the cap no longer leaks via creep. - Reeds: BlockEntityReedSpread now tracks origin and enforces ReedSpreadMaxRadius (default 16; 0 = unlimited).

0.4.8 rudiments 4 5 days ago rudiments_0.4.8.zip 1-click install

0.4.4 — Nettle lifecycle moved from real-time ticks to the in-game calendar (fixes stub/spread/growth not progressing).
0.4.5 — Reed spread moved to the calendar too.
0.4.6 — /rudimentsreload command for live config changes.
0.4.7 — Nettle spreads to and from farmland.
0.4.8 — NettleFarmlandContainment toggle (off by default).

0.4.3 rudiments 3 5 days ago rudiments_0.4.3.zip 1-click install
Rework nettle feeder: efficient on own soil, leaches neighbours, immune to itself (v0.4.3)

- Own-soil N use 45 -> 15 (50% less than a normal crop) - Neighbour leach 4 -> 3 (~10% of a normal crop's use) - Skip adjacent farmland that has nettle on it (nettle never drains its own kind)

0.4.2 rudiments 3 5 days ago rudiments_0.4.2.zip 1-click install

Retextured nettlestub to reuse stage1 texture with darker saturation.

0.4.0 rudiments 4 5 days ago rudiments_0.4.0.zip 1-click install

Overhaul nettle into an invasive rhizome "weed" (v0.4.0)

- Rhizome-only propagation: nettle no longer drops seeds; seed item retired

- Every cut leaves a regrowable root crown (any stage, any soil)

- Wild spread to fertile ground, preferring tilled farmland, with a density cap

- Heavy feeder: 45 N own-soil use + drains nitrogen from adjacent farmland (wild & cultivated)

- Optional invasive creeping mode (hidden buried rhizome that emerges later) — default OFF

- Halved the stub shape again to a tiny stub - All values config-driven via RudimentsConfig (AutoConfigLib-compatible)

- Reed spread also gains the density cap

0.3.8 rudiments 0 6 days ago rudiments_0.3.8.zip 1-click install
Fold SpinningCompat into Rudiments via dependsOn patch (v0.3.8)

Move the spinningwheel compat patch directly into Rudiments assets. VS dependsOn ensures it only applies when spinningwheel is loaded. Remove the separate RudimentsSpinningCompat mod entirely.

0.3.5 rudiments
1.22.0-rc.9 - 1.22.3
2 6 days ago rudiments_0.3.5.zip 1-click install

The nettlesoup.json recipe caused a crash in GuiHandbookMealRecipePage when the item tab of the survival manual was opened. Root cause: CookingRecipe.GenerateRandomMeal builds a per-recipe cache (keyed "valstacksbying-<code>" in ObjectCacheUtil) mapping each CookingRecipeIngredient to a HashSet of matching ItemStacks drawn from handbookallstacks. For each required ingredient (MinQuantity > 0) it never adds null to the set. When the page later renders, it indexes into that list with validStacks[Rand.Next(validStacks.Count)] — if the count is 0, Rand.Next(0) returns 0 and the List indexer throws ArgumentOutOfRangeException. The nettle-base ingredient had exactly one valid item (rudiments:nettleleaves) as a non-wildcard, cross-domain entry. If JsonItemStack.Resolve fails for that entry during the async handbook page-build thread (TyronThreadPool.QueueTask → LoadPages_Async → CreateCachedMealRecipeStacks), ValidStacks is filtered to empty, GetMatchingStack returns null for every item in allstacks, and the required ingredient's cache set remains empty. Vanilla soup was unaffected because its required vegetable-base slot had 13+ entries, so at least one always resolved successfully. The cooking-nettle.json patches to vanilla soup and vegetable stew remain, so nettleleaves is still a valid ingredient in those recipes.

Now, I have not figured out exactly why the JsonItemStack.Resolve was failing for the entry; but that seems to be the case. So for now, I'll remove nettle soup and it can just be a normal veg for vanilla recipes.

0.3.3 rudiments 8 Jun 3rd at 5:56 PM rudiments_0.3.3.zip 1-click install

minor graphic fix that didn't make it in previous release

0.3.2 rudiments
1.22.0-rc.9 - 1.22.3
2 Jun 3rd at 5:37 PM rudiments_0.3.2.zip 1-click install
Nettle rhizome: texture, cooking, planting fix, stub height
  • Rhizome texture: color-shifted from reeds.png to olive-green
  • Cookable: add combustibleProps; new rudiments:cookednettlerhizome item uses cattailsroot-cooked shape with rhizome texture
  • Planting fix: set handling=PreventDefault on client side so right-click registers correctly and suppresses block interact
  • Nettlestub: custom half-height (8u) shape so root crown sits low to ground
0.3.1 rudiments 3 Jun 3rd at 2:50 PM rudiments_0.3.1.zip 1-click install
Fix field retting block placement/removal bugs

Same two fixes as the stook: suppress the default block item drop on break (drops: []), and auto-remove the block when bundles are retrieved instead of leaving an empty field retting in the world.

0.3.0 rudiments 6 Jun 3rd at 3:36 AM Empty rudiments_0.3.0.zip 1-click install

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

Fleurdelynx, 3 days ago

A really interesting mod it's shaping up to be! I'm looking forward to trying it out once all the features planned are implimented :D

I assume it's meant as an alternative to any mods that function similarly like Toolsmith and Clayworks?

phoenix9 , 3 days ago
@Fleurdelynx: A really interesting mod it's shaping up to be! I'm looking forward to trying it out once all the features planned are implimented :D I assume it's meant as an alternative to any mods that function similarly like Toolsmith and Clayworks?

Yes, though I do intend to ensure compatibility with those mods as they already expand quite a bit on some of the features I had considered. For instance, clayworks already implements the need to dry clay before firing and adds methods of coloring, but doesn't (afaik) diferentiate between earthenware, stoneware; or require glazes for water fastness, etc. So if someone were using clayworks with my mod; I would want it to be additive, and not competing feature sets.

I've not personally used toolsmith so I will need to verify it's feature set as well.

Obviously the origional focus was on flax/nettle, so I'm still tuning quite a bit on it; and just now working on the initial stages of tooling. 

phoenix9 , 3 days ago
@Fleurdelynx: A really interesting mod it's shaping up to be! I'm looking forward to trying it out once all the features planned are implimented :D I assume it's meant as an alternative to any mods that function similarly like Toolsmith and Clayworks?

Good callout on the toolsmith. It already does most of the things I had planned; so I'll refactor to ensure compatability with it most likely and focus more on the nettle/flax and clayworks expansions. Thanks.

phoenix9 , 4 days ago

Phasing out the dedicated retting barrel and just using the vanilla barrel, water, and cured nettle/flax. If you have the dedicated barrel in game it should still work; just can't build new ones.

phoenix9 , 5 days ago

First draft of the new tool bindings. Definately a bit buggy on the friction fittings; and the unified glue+nail recipes; but now you have additional options to make tools with our without rope with durability bonuses depending on the binding used. Just be careful if you rely only on friction as they may not hold together very well. Feedback welcome.

phoenix9 , 5 days ago

Added some new features for nettle to more closely resemble its "invasive" like nature. Should spread automatically on its own via rhyzome network (should apply to all rhyzome plants like coopers reed as well). "borrows" Nitrogen from surrounding farm land. And an optional invasive mode (off by default) that lets it spread completly hidden only to pop up from the underground rhyzome network making it harder to evict once it is established. Still play testing all of this, but once all the bugs are worked out; I intend to start focusing on friction fitted stone tools.

phoenix9 , 6 days ago

Peppermint1888, For now I've removed the nettle soup recipe as it was causing a null reference when the handbook loaded the item tab. It didn't seem to happen everytime; so not sure what caused it. Nettle leaves should still work as a normal veg in vanilla recipes however.

phoenix9 , 6 days ago

Peppermint1888, Thanks for letting me know. I was able to reproduce it. Looks like it was related to how I was adding the nettle soup meal recipe. I'll get a fix out for it as soon as I can.

Peppermint1888, 6 days ago

Hi! I loaded this mod but there seems to be a bug that crashes my game when I try to open the items tab of my survival manual.

phoenix9 , Jun 3rd at 2:55 PM

@braniyaKz Added a few screenshots. Any assets that actually look good were sourced from OppoOtis's initial work and I take no credit for them. Anything questionable looking is probably mine lol.

phoenix9 , Jun 3rd at 2:11 PM

BraniyaKz Sure I'll try to get some screenshots added soon. It is very much a work in progress; and the art/graphic side is not my strength, but appreciate the interest. The rope braiding mod was one I enjoyed as well. I had considered implementing something similar here. I also used https://mods.vintagestory.at/toolsrequirerop as it works well with the intent of this mod as well; especially for future additions I have planned for friction fitted stone tools that won't require rope; but may fall apart more easily.

BraniyaKz, Jun 3rd at 3:46 AM (modified 5 days ago)

This is a cool idea :) Can you post screenshots? Also, it's a shame the rope braiding mod isn't updated to 1.22 yet :(