TomTomDK-Stoneveil icon

Stoneveil

Turn walls, floors, and roofs into hidden doors. Includes hinged and sliding panels, concealed prompts, and natural two-course stone doors. Early prototype.

Last updated 2 weeks ago
Total downloads 597
Total rating 2 
Categories Mods Server-side Client-side Utility Building AI Generated Deep North Update
Dependency string TomTomDK-Stoneveil-0.4.4
Dependants 1 other package depends on this package

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2350 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.2350
ValheimModding-Jotunn-2.30.0 icon
ValheimModding-Jotunn

Jötunn (/ˈjɔːtʊn/, 'giant'), the Valheim Library was created with the goal of making the lives of mod developers easier. It enables you to create mods for Valheim using an abstracted API so you can focus on the actual content creation.

Preferred version: 2.30.0

README

Stoneveil

Hidden passages, ordinary stonework.

Turn an existing Valheim wall, floor, or roof into a concealed moving panel. Conversion keeps the vanilla piece, its health, materials, and saved position. Adding a hinge to a 2x1 stone wall now creates a 2x2 secret door with two matching stone courses. The upper course repeats the original geometry one metre higher, preserving stone proportions and texture scale. Both courses move as one panel.

Early prototype: compilation and 715 automated state/motion/auto-close/linked-switch/collision-dispatch checks pass. Live-game visuals, structural behavior, and multiplayer have not yet been verified. Try it in a test world first.

Install

Install Stoneveil through Thunderstore Mod Manager or r2modman. For an unpublished ZIP, use your manager's local-mod import option. Launch Valheim through the selected mod profile.

Required dependencies:

Install the same Stoneveil version on every client and the server.

For manual installation, install the dependencies first, then copy the ZIP's plugins/Stoneveil folder into your active profile's BepInEx/plugins folder. The resulting file should be BepInEx/plugins/Stoneveil/Stoneveil.dll.

Upgrading From Secret

Exit Valheim and remove the old Secret.dll from your active profile before installing Stoneveil. Existing saved hinges and configuration remain compatible. The configuration filename intentionally remains com.tomtom.secret.cfg.

Controls

Build a supported vanilla piece, then equip the vanilla hammer and aim at it. Only the original builder can add, change, or remove a hinge.

Action Default control
Convert to a secret door Alt+H
Remove the hinge from a closed panel Ctrl+Alt+H
Cycle hinge edges, slide left, slide right Alt+J
Reverse a hinged panel's swing Ctrl+Alt+J
Hide/show the interaction prompt Alt+K
Open/close Put the hammer away, aim at the panel, press Use (normally E)

Hammer shortcuts are configurable in BepInEx/config/com.tomtom.secret.cfg. Opening uses the game's normal keyboard or controller Use binding. Editing defaults to keyboard shortcuts. Motion changes require a closed panel. Hidden prompts do not lock the door: anyone with ward access can still use it.

For a stacked stone door, leave one course of free space above a single 2x1 stone wall and press Alt+H with the hammer equipped. Occupied space blocks conversion; the mod does not consume or join an existing wall above it. The original bottom edge stays in place. Removing the closed hinge removes the added upper course and its snap points, returning to the original 2x1 wall. Existing stone doors from 0.1.0 keep their size; remove and re-add their hinge to use the stacked form.

Supported Pieces

  • Wood walls: wood_wall_quarter, wood_wall_half, woodwall.
  • Stone walls: stone_wall_2x1, stone_wall_1x1.
  • Floors: wood_floor, wood_floor_1x1, stone_floor_2x2.
  • Straight thatch roofs: wood_roof, wood_roof_45.

Walls hinge at a side edge; floors and roofs hinge across a front/back edge. All support sliding left/right. Prefabs with unexpected component layouts are rejected with a message instead of being converted. Natural ruins are excluded.

Auto-Close Compatibility

Stoneveil 0.3.0 exposes converted panels as standard Door components and mirrors their open/closed state. Install an auto-close mod alongside Stoneveil to supply the timer. Stoneveil itself does not enable an automatic closing timer.

The adapter was implemented against these inspected sources; live-game compatibility testing is still pending:

Mod Integration and setup
DoorDirector Standard state observation and UseDoor auto-close. Aim at your converted panel with the hammer put away; Shift+G toggles that panel's auto-close and Shift+T sets its delay with DoorDirector's default controls.
Protective Wards Standard RPC_UseDoor observation and owner-side UseDoor close. Enable its passive door auto-close setting and place the panel within an eligible active ward. Its additional permission features still need separate compatibility testing.

Other mods that discover live Door components and request owner-side closure through UseDoor, Door.SetState(0), or a direct owner-side state = 0 write can use the same adapter. This is not a blanket compatibility guarantee. Mods that require a particular Animator/controller, scan only original door prefabs, or write state only on a non-owning client are not covered by this integration.

For prefab filters, use the panel's original name, such as stone_wall_2x1 or woodwall, not Stoneveil. In DoorDirector, enable the individual panel or add its original prefab name if Only Affect Configured Prefabs is enabled. Use normal, not inverted, door rules for these panels.

Automatic UseDoor requests are close-only and accepted on the owning peer from that same owner. Repeated close requests cannot reopen a closed panel. A blocked close retries for up to 60 seconds; accepted manual use, hinge removal, or lost ownership cancels the retry. Direct automatic state writes cannot open a panel. Mods that explicitly call Door.Interact can still open it under normal access checks, so disable proximity auto-opening in those mods to keep passages hidden.

Previously converted panels gain the adapter when loaded with this version. Removing a hinge leaves an inert adapter on that loaded object until the zone unloads, avoiding duplicate RPC registrations when the hinge is re-added. Untouched walls do not receive Door components, and vanilla doors use their normal code paths. Saved Stoneveil hinge settings and stacked stone geometry are retained.

Behavior and Limits

LatchLink Switches

Version 0.4.4 removes the incorrect requirement for a door-side return entry when activating a linked switch. The server still verifies the switch's saved forward link to that exact door. The reverse controller list is only an index used by LatchLink's direct-interaction guard, not a second activation permission. Existing links remain compatible; no relinking or hinge replacement is needed.

Version 0.4.3 retains a pending auto-close when a manual or switch attempt cannot move the panel. Only a committed state change cancels it. Character obstruction checks now refine bounding-box candidates using actual collider overlap, reducing false blocking around rotated doors. LatchLink 0.9.2 also stops transferring door ownership when another switch is linked. Live Unity collision testing is pending.

Version 0.4.2 validates persistent links against the server's current data, avoiding false missing-link rejections caused by a client's stale ZDO metadata. The door owner requests a single-use server approval and rechecks the player, reach, mode, and wards after the reply. Unlinked requests, non-server replies, and approvals older than five seconds are rejected. Detailed rejection messages remain available.

Install Stoneveil 0.4.4 and LatchLink 0.9.2 on the server and every client. Link a converted panel using LatchLink's Shift + Use switch control, then Use the panel. Existing persistent links from LatchLink 0.8.x remain compatible; there is no need to remove hinges or rebuild doors.

Switch requests measure the player's range from the linked switch, not the door. The server checks the switch's persistent link to the door and switch mode. The door's owning peer checks the actual sender, switch prefab, Open/Close mode, and vanilla ward access at both ends, before and after server authorization. Requests still pass through the patched Door.Interact path, collision checks, cooldown, and auto-close observers. Direct hand-use retains its normal distance limit. LatchLink's per-door switch-only option remains available.

The door must be loaded by the activating player, and its owner must have the switch data available. This is not remote operation of unloaded world regions. Both mods remain optional for each other; older LatchLink versions do not send the switch identity needed to authorize remote operation.

Automated policy checks pass. Live single-player, multiplayer, and third-party ward-mod combinations still require the tests in TESTING.md.

General Limits

  • The piece's conversion, stacked layout, motion, concealment, and open state are saved together in its ZDO. The current object owner validates requests and writes state; peers animate toward the replicated state. Joining players restore saved poses.
  • Creator, equipped hammer, range, and vanilla ward permission are checked on the receiving owner. This follows Valheim's peer-owned networking model.
  • The vanilla piece root and snap points stay fixed. Structural calculations temporarily query all open panels in their original closed pose, then restore them before normal physics runs. This retains the intended support footprint; it needs in-game regression testing and profiling in large builds.
  • Stacked stone doors add matching upper snap points at the closed position. Structural calculations include both courses. The copied upper course shares the lower course's damage visuals, materials, collision state, and single health/resource pool. It adds no independent network object or extra drops.
  • Visual damage variants and physical colliders move together. Roof cover is evaluated against the moving geometry. Opening a roof can expose the interior.
  • A conservative character-overlap check samples the proposed path before an operation. This may reject tight spaces and does not predict players moving into the panel after animation starts. Panels can clip surrounding buildings; provide room for their swing or slide.
  • Conversion is free for this prototype. A craftable Secret Hinge item, additional materials, grouped panels, locks, and custom pieces are future work.
  • Concealment hides the prompt only; it does not itself disable direct use.
  • Third-party ward replacements and mods that rearrange piece geometry require compatibility testing.

Validation and Removal

Compilation and automated state/motion checks do not exercise Unity, a running world, or multiple peers. Structural support, reloads, and multiplayer need testing in a test world before normal use.

To revert one piece, close it and remove its hinge with Ctrl+Alt+H. To uninstall, exit the game and uninstall Stoneveil or remove Stoneveil.dll from the active profile. Since the saved prefabs and root transforms remain vanilla, the pieces load as ordinary closed pieces without the mod. Custom ZDO data can remain; reinstalling restores saved hinge settings unless they were removed first. Exit the game before changing plugins; live plugin unloading is not a supported workflow. For stacked stone doors, uninstalling also removes the added upper course. Any construction relying on that course's support must have another support path.

Jotunn's network compatibility requirements are documented in the official network compatibility guide. Prefab names and component layouts were also checked against Jotunn's generated prefab list.