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.
Carturs Flooring
Floor tiles count as roof, so a floor overhead shelters the room below from rain. Fires, hearths and braziers place on floor tiles instead of only bare ground. Both features separately toggleable.
| Date uploaded | 2 weeks ago |
| Version | 1.0.0 |
| Download link | Cartur-Carturs_Flooring-1.0.0.zip |
| Downloads | 58 |
| Dependency string | Cartur-Carturs_Flooring-1.0.0 |
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.2333README
Cartur's Flooring
Free, and always will be — if it improved your game you can tip me on Patreon.
More from Cartur: HD Blood · Map Pins · Follow Command · Compass and Clock · Safe Stamina
A floor overhead keeps the rain off. A fire sits on the floor you built for it.
Two things the base game says no to, for reasons that turn out to be one tag and two flags on the prefabs rather than anything the game actually simulates.
Floors count as roof
Build a second storey and the room underneath still soaks. Your fire goes out, your walls take rain damage, and you are standing indoors with the wet debuff on.
That is not the roof check being clever about gaps. Valheim decides "am I under
cover" by casting straight up and taking the first collider that is not tagged
leaky — and the wood, ashwood and iron floor pieces ship with that tag on
their colliders. Stone and grausten floors do not, which is why those have always
sheltered you and the wooden ones never have.
This clears the tag on floor pieces. A floor above you is a roof, the same way a stone floor already was. Rain damage, fire wetness and the shelter status all read that one check, so all three follow at once.
Floors affected: wood_floor, wood_floor_1x1, ashwood_floor_1x1,
ashwood_floor_2x2, ashwood_deco_floor, iron_floor_1x1, iron_floor_1x1_v2,
iron_floor_2x2, iron_grate. Anything the game itself tags as a floor piece is
covered, mods included — there is no list of prefab names baked in.
Fires on floors
Campfires, hearths, bonfires and braziers refuse to leave bare earth. Two prefab
flags do that: notOnWood rejects any wooden piece under the cursor, and
groundOnly rejects anything that is not raw terrain.
Both are cleared on every fireplace piece, so a fire places on the floor you built for it. Everything else about placement is untouched — it still needs support, it still cannot overlap, and smoke still has to get out.
Config
BepInEx/config/com.jekkle.valheim.carturflooring.cfg, written on first run.
| Setting | Default | What it does |
|---|---|---|
FloorsAreRoofs |
true | Floor tiles shelter the room below. |
FiresOnFloors |
true | Fireplace pieces place on floors, not just bare ground. |
Both changes are made once to the shared prefabs at world load, so a toggle takes effect after a game restart. Turning one off mid-session cannot put the prefab back, and the config description says so rather than pretending otherwise.
ConfigurationManager makes the file easier to edit from the F1 menu. It is optional; this mod does not depend on it.
Worth knowing
Existing buildings get it too. The change is made to the prefabs before anything is spawned from them, so the floors already standing in your world behave the same as ones you place afterwards. No rebuilding.
Grates shelter as well. iron_grate is a floor piece by the game's own
classification, so it stops leaking with the rest. If you wanted the grate to stay
open to the sky, turn FloorsAreRoofs off — there is no per-piece switch.
Smoke still matters. A fire indoors with no smoke outlet will still choke you. Nothing here touches the smoke system.
Multiplayer: install it on every client. Both changes are made to each client's own copy of the prefabs, so a player without the mod still sees rain come through their floors and still cannot put a fire on one. Nothing is synced and nothing conflicts — the two clients simply disagree about that one tag.
Compatibility
No transpilers and no method is replaced. One postfix on ZNetScene.Awake edits
prefab data once and then does nothing for the rest of the session — there is no
per-frame cost and no behaviour for another mod to collide with. Mods that add
their own floor pieces are covered automatically if they set the game's Floor usage
flag, and modded fireplaces are covered if they use the Fireplace component.
CHANGELOG
Changelog
1.1.0
- Smelters, kilns and blast furnaces place on floors. Same three placement flags
as the fire pieces, on a different set of prefabs; the
Smeltercomponent is the selector. Freeing the flags alone was not enough -WearNTear.UpdateWeardealsdamage = 100fwhenm_noSupportWearis set and support is short, which is a full health bar in one tick, and a stone piece needs 100 support where wood tops out at 100 and loses a share per link.m_noSupportWearis cleared on those prefabs too, so the game stops demolishing a smelter the moment it stands on a plank. NewSmeltersOnFloorssetting. - Floors take no rain damage. A deck, a jetty or a bridge has nothing overhead,
fails the roof check forever and rots forever. The rain branch of
WearNTear.UpdateWearonly bites when sixty seconds have passed onm_rainTimer, so that timer is held at now for floor pieces and the branch never reaches its damage line. Clearing the prefab'sm_noRoofWearwould have been simpler and wrong: the same flag drives the wet sheen, and a floor that cannot rot should still darken when it rains. Support collapse, snow, ash and fire wetness all behave as before. NewFloorsDontDecaysetting, and this one is read live - no restart.
1.0.1
- Hearths and braziers now place on floors. 1.0.0 picked fire pieces by the
Fireplacecomponent and clearednotOnWoodandgroundOnly; those two carrygroundPieceinstead, which fails the same heightmap test and returns before the other checks are even reached. All three flags are cleared now, and a piece counts as a fire if it has aFireplaceor its comfort group is Fire. iron_gratewas listed as sheltering the room below. It never did — grates do not carry the game's Floor usage flag, so the mod does not touch them. Documentation fix only, no behaviour change.
1.0.0
First release.
Floor pieces no longer count as leaky, so a floor overhead shelters the room
below — rain damage, fire wetness and the shelter status all follow. Fireplace
pieces have notOnWood and groundOnly cleared, so fires place on floor tiles
instead of only bare terrain. Each feature has its own config switch.