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.
FiresClippy
Forces m_clipGround + m_clipEverything ON for hammer-selected pieces AND suppresses RandomPieceRotation during player placement, so modded vegetation/decor hover-snaps cleanly and respects your aim. Default on, F8 to toggle.
| Last updated | a day ago |
| Total downloads | 13 |
| Total rating | 1 |
| Categories | Mods Tools Client-side Utility Building |
| Dependency string | VerdantsAscent-FiresClippy-1.0.0 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured and includes unstripped Unity DLLs.
Preferred version: 5.4.2202README
FiresClippy
Tiny mod that fixes two annoyances when placing modded vegetation / decorative props with the hammer:
- Clip flags — every hammer-selected piece's placement-ghost
m_clipGroundandm_clipEverythingare forced totrue. The ghost snaps cleanly to terrain / surfaces instead of bouncing around or refusing to place. - Random rotation —
RandomPieceRotation.Awake()(the vanilla component that randomizes rotation on world-position seed) is suppressed during player placement, so the rotation you aim with the hammer actually sticks. Naturally-spawned vegetation in the world still rotates normally — only the placement path is gated.
If you've ever hammer-selected a modded plant / decoration / shrub and watched it either refuse to hover-place or land at the wrong rotation — Clippy fixes both, for every prefab, with zero per-prefab config and no list maintenance.
Need help, found a bug, want a feature? https://discord.gg/H9uKGcAujs
What this mod does
| Feature | What you get |
|---|---|
| Auto-clip on selection | Whenever your hammer has a piece selected (vanilla menu or any selection mod like InfinityHammer / Gizmo Reloaded / MoreVanillaBuildPrefabs), Clippy flips m_clipGround = true and m_clipEverything = true on the placement ghost every frame. The ghost then takes the direct-snap-to-raycast-hit code path vanilla pieces with the flag already set use. |
| RandomPieceRotation suppress | Some modded prefabs (a lot of Balrond's nature assets, for example) carry vanilla's RandomPieceRotation MonoBehaviour. When the player places the piece, that component's Awake() overrides the rotation you aimed with the hammer. Clippy gates the component's Awake with a static suppress counter that's bumped around Player.SetupPlacementGhost and Player.PlacePiece, so player-placed instances keep your rotation. Naturally-spawned world vegetation is unaffected — only the placement path is gated. |
| Runtime toggle | Default keybind F8 flips both features on/off together. State persists across sessions. A center-screen Hud message tells you which mode you're in (silenceable in config). The two features have separate config bools so you can run one without the other by editing the cfg directly. |
| No prefab pollution | Clippy only touches the placement ghost's Piece component, never the source prefab. Toggle off and the next selection returns to vanilla behavior; the original flag values are restored live without needing to re-select. Once a piece is actually placed in the world the flags don't matter anyway — they only affect the hover preview. |
| Works with everything | Vanilla hammer, InfinityHammer, MVBP, Gizmo, any mod that goes through Player.UpdatePlacementGhost / Player.PlacePiece. No mod-specific hooks. |
Why it works
Vanilla's Player.UpdatePlacementGhost branches on the selected piece's m_clipGround and m_clipEverything bools:
- Either flag true → ghost snaps to the raycast hit point. Used by every terrain modifier and grounded vanilla piece. Works for any prefab regardless of collider shape.
- Both flags false → ghost floats 50 m away from the surface then uses
Collider.ClosestPointto slide back to the hover position. Works well for closed-mesh building pieces. Fails on anything with sparse / no colliders — which is most modded vegetation and decorative props.
Clippy runs a Harmony prefix on UpdatePlacementGhost that toggles those bools on the ghost (not the source prefab) before vanilla reads them. Cost is two bool writes per frame in build mode. Out of build mode, zero cost.
Installation
- Install BepInEx — the BepInExPack_Valheim on Thunderstore is the standard one.
- Drop
Clippy.dllintoBepInEx/plugins/. - Start the game once. It will create
BepInEx/config/com.Fire.Clippy.cfgwith the three settings below.
Client-side mod. Server doesn't need it. Other players don't need it.
Config
| Key | Default | What it does |
|---|---|---|
AutoClipEnabled |
true |
Force m_clipGround / m_clipEverything to true on the placement ghost every frame. When false, ghost reverts to prefab defaults (vanilla behavior). |
SuppressRandomRotationEnabled |
true |
Skip RandomPieceRotation.Awake during player placement so the rotation you aimed with the hammer survives. Doesn't affect natural world spawns. |
ToggleKey |
F8 |
Keybind toggle. Flips BOTH AutoClipEnabled and SuppressRandomRotationEnabled to the opposite of their current AutoClipEnabled state, then writes them to config so they persist across sessions. Modifier keys (Shift / Ctrl / Alt) supported through the in-game config UI. To run the two features independently, edit the bools above instead of using the keybind. |
ToggleMessage |
true |
Show a center-screen "Clippy: ON / OFF" message when the toggle is flipped. Disable for silent operation. |
Compatibility
- InfinityHammer, MoreVanillaBuildPrefabs, Gizmo Reloaded, PlanBuild — all selection / blueprint mods route through
Player.UpdatePlacementGhost, so Clippy works without any mod-specific integration. - Vanilla hammer works the same way.
- Once a piece is actually placed in the world the clip flags are irrelevant, so Clippy never affects placed-piece behavior, world state, or networking. It's strictly a placement-ghost UX fix.
- Multiplayer-safe — the patch is local-client-only; nothing is synced. Each player can run it (or not) independently.
Credits
Born out of a Discord conversation about how clunky modded vegetation is to place when MVBP only adds piece components.
License
MIT — see LICENSE.