Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Kynda
Load a smelter, kiln or fire several at a time. Fewer trips; the same metal out.
| Date uploaded | 9 hours ago |
| Version | 1.1.1 |
| Download link | Ezomic-Kynda-1.1.1.zip |
| Downloads | 171 |
| Dependency string | Ezomic-Kynda-1.1.1 |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2350README
Kynda
Load a smelter, kiln or fire several items at a time instead of one per press, and build two pieces that make a smelter or a charcoal kiln hold more.
Kynda never changes throughput. m_secPerProduct and m_fuelPerProduct are untouched, so
twenty iron takes the same time and burns the same coal whether it went in as one load or
seven. What changes is how often you walk back to the station.
Built against Valheim 1.0.7, Unity 6000.0.75, BepInEx 5.4.23.5, Harmony 2.9.
Features
- Hold a modifier key (Shift by default) while adding ore, coal or wood and three go in instead of one.
- Works on every station with a
Smeltercomponent: smelter, charcoal kiln, blast furnace, windmill, spinning wheel, eitr refinery, and any modded station built on the same class. - Works on fireplaces that can be refilled: campfire, hearth, bonfire, standing torches.
- The station's hover text shows the modifier, so the feature is discoverable without reading this file.
- Two buildable upgrades, the Tun and the Woodrack, that raise the capacity of a smelter or a charcoal kiln standing next to them.
- Everything is configurable: the key, the batch size, the upgrade costs, which stations they serve, and how much capacity they add.
Batching
Hold the modifier and press Use on the station.
| Station | What goes in | Default per press |
|---|---|---|
| Smelter, blast furnace, eitr refinery | ore on the ore switch, coal on the wood switch | 3 |
| Charcoal kiln, windmill, spinning wheel | wood or its own input | 3 |
| Campfire, hearth, bonfire, torch | logs | 3 |
Some details worth knowing:
- The modifier is held rather than toggled, so a plain press stays vanilla and you can still
top up a nearly full smelter with one last ore. Set
BatchModifiertoNoneif you would rather batch every time. - Batching runs after the game's own add has succeeded, so vanilla decides whether the first item is allowed at all. Wrong item, empty hands, full station: nothing happens, same as before.
- Holding Use on a fireplace to refill it repeats on the game's own timer and is not batched. A single press is.
- Pressing Use on a fireplace that is lit and can be turned off is a toggle, not a refill, so it never takes logs.
- Set
SmelterItemsPerAddorFireplaceItemsPerAddto1to restore vanilla for either half.
The upgrades
Two buildable pieces, on the hammer's Crafting tab, marked with the upgrade star. Both need a Forge in range to build, because both are held together with nails.
| Piece | Cost | Serves | Capacity |
|---|---|---|---|
| Tun | 20 Fine wood, 15 Iron nails | Smelter | 10 ore becomes 30, 20 coal becomes 60 |
| Woodrack | 25 Fine wood, 20 Deer hide, 25 Bronze nails | Charcoal kiln | 25 wood becomes 50 |
Build one within 4 metres of the station it serves and the station's capacity goes up. The coal figure is twice the ore figure because a smelter burns two coal per ore; matching them would run the fuel out with a third of the ore still queued.
One per station. A second Tun beside the same smelter adds nothing, and says so in its hover
text rather than sitting there looking broken. Raise MaxPerStation if you want them to
stack.
Look at an upgrade and it draws the game's own station-link effect to the station it is feeding, the same run of motes a chopping block draws to its workbench. That is how you tell which piece belongs to which station in a row of eight. An upgrade that is not next to anything it can serve says so in its hover text.
Each piece serves exactly one station prefab by default: smelter for the Tun,
charcoal_kiln for the Woodrack. Blast furnaces, eitr refineries, windmills and spinning
wheels are left alone. Both lists are config, so adding a modded station is a line in the
.cfg rather than a rebuild.
The models are plain .obj files read from beside the DLL at runtime, with a .col sidecar
for collision and an _icon.png for the hammer icon, matched by filename. Rejected designs
live in assets\variants\ and are not deployed; copy one up into assets\ and point
Model at it to try it.
The upgrades register prefabs, and that is permanent. Valheim keys a placed piece on its prefab name hash and discards any saved object whose name no longer resolves. Loading a world without Kynda, or joining a server that does not run it, deletes every Tun and Woodrack standing there without an error. See Multiplayer below for what prevents that.
Turning Enabled off is safe: since 1.1.0 it only hides the pieces from the hammer and
leaves the prefabs registered, so anything already built keeps working.
Installation
Requires BepInEx 5.4.2350. BepInEx 5 only; this will not load under BepInEx 6.
Mod manager: install Kynda from Thunderstore.
Manual: drop the contents of plugins/Kynda into
<Valheim>\BepInEx\plugins\Kynda\. The .obj, .col and .png files have to sit beside
Kynda.dll or the upgrades fall back to the donor prefab's look and icon.
Longhouse Core is optional but recommended on any server. Kynda works without it.
Configuration
BepInEx\config\ezomic.valheim.kynda.cfg, written on first run.
BepInEx writes every entry to disk the first time the plugin runs, and the saved value beats
a new default in code. If a setting appears to do nothing after an update, check the .cfg.
[Batching]
| Key | Default | Effect |
|---|---|---|
BatchModifier |
LeftShift |
Hold while interacting to batch. None makes batching unconditional. Read through Unity's legacy input, so use a keyboard key |
SmelterItemsPerAdd |
3 |
Ore or coal per press at any Smelter-based station. 1 restores vanilla |
FireplaceItemsPerAdd |
3 |
Logs per press at a fireplace. 1 restores vanilla |
[Upgrades]
| Key | Default | Effect |
|---|---|---|
Enabled |
true |
Whether the two upgrades appear on the hammer. Off hides them from the next world load; it does not delete what is built |
Donor |
piece_chest_barrel |
Prefab cloned for its machinery (ZNetView, Piece, WearNTear, placement rules). Its look, collision and icon are all replaced, so this is not a visual choice. Falls back to piece_chest_wood. Needs a restart |
Station |
forge |
Crafting station you must stand near to build them. Empty or an unknown name leaves the donor's, which is the workbench |
Range |
4 |
How close an upgrade must be to the station it feeds, in metres |
MaxPerStation |
1 |
How many upgrades of one kind count for a single station |
TexelsPerMetre |
28 |
How coarse the borrowed texture is drawn. Vanilla props and piles run 24 to 54; higher eventually reads as flat colour |
ShowLink |
true |
Draw the station-link effect when you look at an upgrade |
LinkHeight |
0.8 |
How far up the upgrade the link starts, in metres |
[Trough] (the Tun)
The section header is still [Trough]. Renaming a config section resets every saved value
under it, so it stays as it is.
| Key | Default | Effect |
|---|---|---|
Name |
Tun |
Name on the hammer and in hover text |
Stations |
smelter |
Station prefabs this upgrades, comma separated |
Cost |
FineWood:20,IronNails:15 |
Build cost as Item:Amount pairs |
Model |
kynda_tun_camp.obj |
OBJ loaded from beside the DLL, with its .col and _icon.png matched by name |
Scale |
1.0 |
Overall size. Scales collision with it |
SkinDonors |
@fi_village_wood:keep,coal=@coal_pile:keep,ore=@copper_ore:0.02/0.30/0.46/0.22 |
Which vanilla prefab or material each mesh group borrows its surface from. A bare name covers the whole piece; group=prefab overrides one group |
OreCapacity |
20 |
Extra ore a served station holds per Tun |
FuelCapacity |
40 |
Extra coal a served station holds per Tun |
[Woodrack]
| Key | Default | Effect |
|---|---|---|
Name |
Woodrack |
Name on the hammer and in hover text |
Stations |
charcoal_kiln |
Station prefabs this upgrades, comma separated |
Cost |
FineWood:25,DeerHide:20,BronzeNails:25 |
Build cost as Item:Amount pairs |
Model |
kynda_rack_camp.obj |
OBJ loaded from beside the DLL |
Scale |
1.0 |
Overall size |
SkinDonors |
@wood_item:keep,frame=@woodwall:keep,roof=@straw_roof:keep,roofalpha=@straw_roof_alpha:keep |
As above |
OreCapacity |
25 |
Extra wood a served station holds per Woodrack |
There is no FuelCapacity here. The Woodrack only serves stations with no fuel slot, so it
would be a setting that could never do anything.
[Diagnostics]
| Key | Default | Effect |
|---|---|---|
TestMode |
false |
Both upgrades cost one wood, so they can be built without bronze or iron. Logged loudly at startup |
Verbose |
false |
Log each batched add |
VariantMode |
false |
Put every model in assets\ on the hammer as its own piece at one wood each, named var: ..., to compare them side by side. Destructive when turned off: each variant is a registered prefab, and anything built from one vanishes when its name stops existing |
SkinTrials |
(empty) | Comma-separated donor prefabs. Puts one copy of each upgrade on the hammer per donor, named skin: .... Same destructive warning as VariantMode |
DumpShader |
false |
List every property of each borrowed material's shader, with its type |
PrefabSearch |
(empty) | Comma-separated words. Every loaded prefab whose name contains one is listed in the log. Scans everything loaded, so empty it again when you are done |
DonorCarrierLocations |
Vendor,Hildir |
Fallback only. Location prefabs to stream in if a donor material cannot be loaded directly by name. Blank turns the fallback off |
Multiplayer
Install Kynda on the server and on every client. The version has to match.
With Longhouse Core installed,
Kynda registers at Requirement.Everyone: Core checks each client's Kynda version and build
id on connect and the server rejects a client that does not match. Core also applies the
host's Kynda config to connected clients in memory, without writing to the client's own
config file, so a server's capacity figures and batch sizes are the ones in play.
BatchModifier is exempt from that, because a key binding is personal.
Without Core, Kynda still works and logs a warning at startup. Nothing then stops a client that lacks the mod from connecting, and that client will discard every Tun and Woodrack in the world it loads. Run it ungated on a world you control, not on one you share with people.
Compatibility
- Batching hooks
Smelter.OnAddOre,Smelter.OnAddFuel,Fireplace.UseItemandFireplace.Interactas postfixes, and the capacity component is attached to every prefab carrying aSmelter. Another mod that adds a Smelter-based station is picked up automatically. - Another mod that changes a station's
m_maxOreorm_maxFuelon the prefab will conflict. Kynda captures the base values inAwakeand recomputes from them every three seconds. - Kynda does not touch smelting speed, fuel cost or conversion recipes, so it composes with mods that do.
Known limitations
- Repeated presses can overshoot a station's queue. The capacity check reads the queue size from the station's network object, which updates after the add rather than during it. One batched press stops at capacity correctly. Pressing again before the station has caught up can push the queue past its maximum, and the game does not clamp the ore queue on its own side. Reported on smelters and blast furnaces. Not fixed yet.
- Uninstalling Kynda from a world that has Tuns or Woodracks in it deletes them permanently. Break them down first if you want the materials back.
Troubleshooting
No [Shift] x3 line on a station's hover text. Check BepInEx\LogOutput.log for a line
from Kynda saying which reflected game members are missing. If a game update renames a
private method Kynda uses, batching is switched off at startup and says so rather than
throwing later.
The upgrades are not on the hammer. Valheim hides a piece whose materials you have never
picked up, rather than greying it out. On a character that has never held bronze the Woodrack
is simply absent. TestMode drops both to one wood if you want to check they registered.
An upgrade is next to its station and nothing changed. Check the range (4 metres by
default), that the station is one named in that piece's Stations list, and that there is
not already a closer upgrade of the same kind counting for it. The hover text says which of
those it is.
The Tun is magenta or wearing the wrong texture. It borrows materials the game streams in on demand. They are loaded by name, and there is a fallback that summons the carrier location. Both are logged. A dedicated server skips skinning entirely because it draws nothing.
A config change did nothing. BepInEx already wrote that key to the .cfg, and the saved
value wins. Edit the file.
Bug reports
Report in the Discord or on the issue tracker. Please include:
BepInEx\LogOutput.log- Whether you were on a server or in single player, and whether Longhouse Core was installed
- Your
ezomic.valheim.kynda.cfg - For anything involving a station or a piece, its prefab name
AppData\LocalLow\IronGate\Valheim\Player.logif a vanilla mechanic broke. Gameplay exceptions land there, not in the BepInEx log
Discord
discord.gg/hJzAVaZ5wb for mod information, updates, support, bug reports and compatibility questions.
There's also a small EU server running the pack if you want somewhere to play. Details are in the Discord.
Design notes
Why the upgrades are buildable pieces rather than a level on the smelter, how batching rides
the game's own add, why the Tun still answers to the [Trough] config section, and how the
surfaces and the link effect are borrowed: DESIGN.md.
Building
dotnet build
Targets net462. Game assemblies are referenced by HintPath from the Steam install; no NuGet
packages. Output deploys to the repo-local testprofile\ by default, or pass
-p:ProfileDir= to deploy elsewhere.
Part of Longhouse
Kynda 1.1.0 is included in the Longhouse modpack. It behaves exactly the same installed on its own.
Licence
Kynda is an original mod by Robbin Thijssen (Thijssen Software). Copyright (c) 2026 Robbin Thijssen. MIT licensed, see LICENSE.
CHANGELOG
Changelog
Notable changes to Kynda. Format follows Keep a Changelog, and the mod uses semantic versioning.
[1.1.1] - 2026-09-12
Fixed
- The batch modifier does nothing. The key was read with
UnityEngine.Input.GetKey, and Valheim runs on the new Input System, where the legacy Input class does not reliably see a KeyCode. So holding Shift while using a smelter added one ore instead of three, with the config file holding exactly the right key and nothing in any log. Read throughZInputnow, which is the game's own reader, and refused while chat, the console or a text field has focus. - A blast furnace could end up holding more ore than its capacity. Vanilla checks capacity
only in
OnAddOre, on the client, againstGetQueueSize();RPC_AddOreon the owner has no check at all and writes the queue entry unconditionally. On a dedicated server that queue size is a round trip behind, so pressing again before the ZDO caught up made every batch count from the same stale number, and the overfilled state then persists. The predicted level is now tracked per station across presses, with the ZDO's own value taking over the moment it catches up. - Batched ore was sent with the wrong RPC signature.
SmelterregistersRPC_AddOreasRegister<string, bool>and vanilla sends(name, item.m_cheated); the extra adds sent the name alone, leaving the receiver to read a bool off the end of the package. Matches the game's call now.
[1.1.0] - 2026-09-09
Rebuilt for Valheim 1.0. This version does not run on pre-1.0 Valheim, and the previous one does not run on 1.0.
Fixed
- Turning the upgrades off no longer deletes the ones you built. That setting used to skip prefab registration, and the game discards any saved object whose prefab name does not resolve - so one config edit destroyed every Tun and Woodrack standing in the world, permanently and silently. Because the file is host-imposed, a host could do it to everyone at once. Registration is unconditional now and the setting gates only the build menu: turning it off hides the pieces from the next world load and leaves what was built alone.
- Runs on Valheim 1.0. The
Hoverableinterface gained a member, which every implementer has to answer.
[1.0.3] - 2026-08-29
Fixed
- A dedicated server no longer chases materials it can never load. A headless process has no renderers and never loads the asset bundles the borrowed materials live in, so the retry that waits for one could never be satisfied and never gave up: four warnings every five seconds, roughly 68,000 lines a day, which had built a 360MB journal on the live server and drowned every real line in it - a mass disconnect of every player went unnoticed there until the log was filtered by hand. Skinning is skipped whole when headless, and nothing visual is lost because a server draws nothing. The repeated warning was wrong on a client too: a donor that never arrives said the same line every five seconds for the whole session, and is now reported once.
[1.0.2] - 2026-08-27
Changed
- A missing donor material is now loaded by name, straight out of its own bundle, instead of summoning the whole vendor camp it happens to live in. 1.0.1 fixed the magenta Tun by streaming in an entire village prefab and waiting for its material to appear; this asks the game for the material itself, which it supports once the asset loader is told to list materials as well as locations. The Tun is painted in its first build pass rather than magenta-then-healed, its hammer icon is right the first time, and the camp's object graph never becomes resident. The location summoner stays as the fallback for a material that has been renamed or that only exists inside a containing prefab.
[1.0.1] - 2026-08-27
Fixed
- The Tun is no longer magenta on a fresh world. Its donor materials live in the vendor camp's location asset, which Valheim soft-ref streams - nothing loads it until a player walks to a camp, which on a fresh server world is never. A missing donor now summons its carrier location through the softref loader; the late-skin watch applies the paint when the load lands, and the hammer icon re-shoots itself. Every standing piece heals in place.
[1.0.0] - 2026-08-25
Both halves ship: the batching, and the two upgrade pieces.
The upgrades are in, and so is the gate
They were briefly cut for a pack release and then put back, and the two decisions belong together rather than one at a time. A Tun and a Woodrack are registered prefabs, and ZNetScene discards a ZDO whose prefab name will not resolve rather than erroring - so a world that later loads without this mod does not fail to show what you built, it deletes it.
That is why Core is a dependency again, soft, with Suite.Register at Requirement.Everyone.
The reference and the registration go together and never one without the other: ungated, the
mod has no way to stop a mismatched client quietly eating somebody's buildings. Without Core
installed everything still works and the log says plainly what is unprotected.
Each upgrade now serves exactly one station
The Tun upgrades a smelter. The Woodrack upgrades a charcoal kiln. Nothing else.
Which kind of bin a station could take is still read off its own components, a fuel slot or not - that part is a fact about how a station works and it still means a modded station lands on the right side of the split. But which stations actually get one is a named list now, because that is a decision about what the mod is for. A blast furnace and an eitr refinery would have matched on components and are late-game stations that need no help; a windmill and a spinning wheel are single-input like the kiln and are not what a rack of split logs is a picture of.
Trough.Stations and Woodrack.Stations are config, so a modded station that wants in is a
line rather than a rebuild. A bin beside a station it does not serve says it is feeding
nothing rather than pretending.
The Tun's prefab is renamed
kynda_hopper becomes kynda_tun. The old name was inherited from the single generic
bin this piece replaced two designs ago, and a prefab name is permanent from the first one
built in any world - so the only free moment to fix one is before the mod has ever shipped.
That moment is now. After this release it cannot be touched again without deleting every Tun
standing in every world that has ever run it.
If you have a Tun standing in a test world, it is gone. Nothing was published, so this is the whole exposure.
One per station
MaxPerStation is 1. These are a one-time improvement rather than something to stack, and the
capacity figures are chosen to land on a round number exactly once - a kiln at 50 from 25, a
smelter at 30 from 10. A second bin changes nothing and says so when you look at it, because a
silent no-op reads as a bug. The README claimed 2 for a while; the code never did.
The Tun is remodelled, and the rack's frame is its own surface
Two art fixes, and both came out of measuring rather than looking.
The old Tun wore four palettes. Measured by face count it was iron 29%, ore 26%, coal
26% and wood 19% - so a third of it was hoops, half was visible contents, and the timber
that should have been the object was a fifth of it. Every vanilla prop ripped here is one
material on one submesh, and barrell's iron hoops are painted into its wood texture
rather than modelled. The replacement, kynda_tun_casks, is one group: two upright casks,
hoops as shallow rings in the same timber, no contents. 716 triangles against 2,376.
It was chosen from four built to the same rules - casks, a hopper, a bin under a lean-to,
and a long trough - staged at the 1.5 scale the runtime applies, beside a block of the
smelter's measured mass. The other three are in assets/variants/ with their icons.
The rack's frame no longer wears the woodpile. It had two groups, log sides and sawn
ends, which meant the posts, sill, back board and lean-to roof were painted with split
billets - a frame apparently built out of firewood. It has three now: wood for the
courses, wood_end for the sawn discs, and frame for the structure, borrowing
wood_beam. One material is right for a prop and two for furniture, and a rack is
furniture holding a prop.
SkinDonors takes group=prefab pairs, so wood_stack,frame=wood_beam is the default and
either half can be retargeted without a rebuild.
Batching, unchanged
Hold Shift, three ore or coal per press at any Smelter station, three logs at a fire. 1
restores vanilla for either. The [Shift] x3 hover line exists because a held modifier is
otherwise invisible.
[1.0.0] - 2026-08-25 (the model rework, which also ships here)
Both upgrade models remade
The art was the stated reason 0.3 was not 1.0. Two of the three causes were in the preview rather than in the models, which is why previous passes kept not helping.
- The renders were never at the size the game draws. Both pieces carry
Scale 1.5, and the preview rendered the raw model beside a 1m cube, so every design was picked from a picture two thirds the size of the real thing. - The lights were hot enough to flatten everything. A sun at 3.0 plus a fill at 1.0 plus a world at 0.7 puts a 0.30 albedo at 0.72 in sRGB, so timber rendered as sand and the whole model arrived at one value. Value is most of what says a silhouette works.
- Nothing was ever in frame with it. These are only ever seen touching a station, so the stage now carries a block of the smelter's measured mass.
With that corrected, both models were rebuilt:
- Woodrack is now
kynda_rack_courses. The logs came from a helper that picked a cross-section at random (three, four, five, six or seven sides) which at 2 metres read as a frame packed with rubble. Vanilla varies a woodpile's diameter and never its cross section, so every piece is a round now. The back is closed, and the roof slopes forwards: it had been rotated-17about x since the first version, which lifts the front edge, and a roof rising towards the viewer is why it read as a table. - Trough is now
kynda_trough_casks. The deck it stood on was a slab across the front at exactly the height a cask is widest, cutting both off at the belly; the casks stand on the ground now, with nothing round them at all - a kerb was tried and read as the pallet the deck had just been taken away for being. The cask itself was straight-sided where a cask bulges, had its staves modelled as twenty square posts where vanilla paints them on a turned cylinder, and at 0.90 × 1.35m stood a head over the 0.84 × 1.10barrellit imitates. It is now vanilla's size, turned and bulged, with hoops thin enough to read as iron bands.
Both are under budget: 1,472 and 2,024 triangles against a ceiling of 3,500. The rejected
designs are shelved in assets\variants\, including the shapes these replace, so a config
line brings any of them back.
Not yet seen in game. The models are built, exported and wired up; nobody has stood next to one.
[0.3.0] - 2026-08-16
First published release. Earlier numbers were development only and never went out.
The balance line
It changes how often you walk to a smelter. It never changes what comes out of one.
m_secPerProduct and m_fuelPerProduct are never touched. Three ore in one press costs
exactly three ore, and twenty iron takes the same time and burns the same coal whether it
went in as one load or three. You buy fewer trips, not more metal. This replaces an auto-fuel
mod and deliberately is not one, since auto-feeding deletes the mid-game logistics problem rather
than easing it.
Batching
- Hold Shift and press at a smelter and three ore go in instead of one. Same for coal, and for logs on a campfire, hearth or torch.
- Held rather than toggled, because a plain press has to stay exactly vanilla. Topping a
nearly-full smelter with one last ore is a thing you actually want to do, and a mod that
batches unconditionally has taken the single add away rather than added a batch. Set
BatchModifiertoNoneif you disagree. - A held modifier is invisible, so the station's hover text says so: a smelter you can batch
shows a
[Shift] x3line in the game's own key-prompt style. - Covers every
Smelter-based station (smelter, charcoal kiln, blast furnace, windmill, spinning wheel, eitr refinery) because they are all the same component, so modded ones are included for free.
Upgrades
- Two buildable upgrade pieces that raise a station's capacity, each with its own model, icon and capacity figure.
- Capacity scales from the station's own rather than being a flat number, so an upgrade means the same thing on a kiln as on a blast furnace.
- They use the game's own station-link drawing, so the connection reads the way vanilla's
does, and
m_isUpgradeis set so the build menu draws the star.
Known limits
- Both features have been used in a real session. The art is what is unsettled: the trough and the woodrack read acceptably at 128px and less well at eye height, and are being reworked. That is the reason this is 0.3 and not 1.0.
- Rejected models are shelved rather than shipped, so two pieces appear on the hammer rather than eighteen.