You are viewing a potentially older version of this package. View all versions.
Cartur-Carturs_Flooring-1.0.0 icon

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-5.4.2333 icon
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.2333

README

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 Smelter component is the selector. Freeing the flags alone was not enough - WearNTear.UpdateWear deals damage = 100f when m_noSupportWear is 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_noSupportWear is cleared on those prefabs too, so the game stops demolishing a smelter the moment it stands on a plank. New SmeltersOnFloors setting.
  • 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.UpdateWear only bites when sixty seconds have passed on m_rainTimer, so that timer is held at now for floor pieces and the branch never reaches its damage line. Clearing the prefab's m_noRoofWear would 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. New FloorsDontDecay setting, 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 Fireplace component and cleared notOnWood and groundOnly; those two carry groundPiece instead, 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 a Fireplace or its comfort group is Fire.
  • iron_grate was 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.