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.
| Date uploaded | 2 days ago |
| Version | 0.3.14 |
| Download link | DragonMotion-Build_Ease-0.3.14.zip |
| Downloads | 84 |
| Dependency string | DragonMotion-Build_Ease-0.3.14 |
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
Build Ease
English
Easy UE-style building for Valheim.
Build Ease adds an Unreal-style transform gizmo, an RMB-controlled free camera and a configurable shadow-free work light to Valheim's normal building mode. It edits only the current placement ghost and keeps vanilla building, repairing and dismantling actions. Features include world/local axes, automatic surface and build-point snapping, continuous camera-ray placement, configurable rotation steps, exact transform sampling and post-build pose retention. The work light follows the camera, exists only while the editor is active and is removed on exit.
The in-game interface follows Valheim's selected language: Russian uses the Russian UI, while English and every other game language use the English UI. A language change is applied immediately without restarting the game.
AAABuildMenu compatibility activates automatically only when AAABuildMenu is installed. Its search and filters remain available, the selected prefab and placement ghost stay synchronized even when a filter has no results, and Build Ease can still sample pieces hidden by the current filtered view.
Compatibility warning: this mod is not compatible with other mods that provide a building free camera or their own placement gizmo. Disable those mods before using Build Ease. PerfectPlacement ABM/AEM, Build Camera, the MoveBuildPieces move mode and similar editor/camera modes must not be active at the same time.
Video demonstration: Watch on YouTube
Camera
| Action | Control |
|---|---|
| Enter or leave the editor; equips a building hammer from the inventory if needed | B |
| Show or hide the toolbar | Config: Interface / Show toolbar |
| Move the toolbar | Drag its title with LMB while the cursor is free |
| Open or close the vanilla build menu | Short RMB click |
| Look around and move the camera | Hold RMB + mouse / WASD |
| Move camera up/down | Hold RMB + E / Q, or Space / Ctrl |
| Move faster | Hold RMB + Shift |
| Change camera speed | Hold RMB + mouse wheel |
| Toggle continuous surface-snapped placement under the camera centre | T |
| Toggle the camera work light | F |
| Close the build menu / leave the editor | Esc / second Esc |
Gizmo and snapping
| Action | Control |
|---|---|
| Translation gizmo | W |
| Rotation gizmo | E or R |
| World/local axes | X |
| Toggle automatic surface/build-point snapping | G |
| Move on one axis | Drag an X/Y/Z arrow with LMB |
| Move in increments equal to the projected span between the piece's outer vanilla snap points; falls back to bounds | Hold Shift while dragging an X/Y/Z arrow |
| Force increments equal to the projected visual-bounds size along an axis | Hold the configured Hotkeys / Bounds step modifier (LeftControl by default) while dragging an X/Y/Z arrow; Shift is not required |
| Move across a surface or screen plane | Drag the centre square with LMB |
| Rotate around one axis | Drag an X/Y/Z ring with LMB |
| Rotate in 90° increments | Hold Shift while dragging an X/Y/Z ring |
| Change the centre-handle size (35 px by default) | Config: Visuals / Center handle size |
| Disable camera-ray follow and return the ghost to the vanilla placement ray | Reset to ray toolbar button |
Building
| Action | Control |
|---|---|
| Build or repair | LMB away from the toolbar and gizmo |
| Dismantle | MMB away from the toolbar and gizmo |
| Sample a normal piece with its exact transform | Shift+MMB |
| Blue ghost tint (optional, off by default) | Config: Visuals / Blue ghost preview |
Русский
Простое строительство в стиле UE для Valheim.
Build Ease добавляет в обычный режим строительства Valheim манипулятор трансформации в стиле Unreal Engine, свободную камеру с управлением через ПКМ и настраиваемый рабочий свет без теней. Мод изменяет только текущий призрак размещаемой детали и сохраняет ванильные строительство, ремонт и снос. Возможности включают мировые и локальные оси, автоматическую привязку к поверхностям и точкам строительства, постоянное размещение по лучу камеры, настраиваемый шаг поворота, точное копирование трансформации и сохранение позиции с поворотом после строительства. Рабочий свет следует за камерой, существует только пока редактор активен и удаляется при выходе.
Игровой интерфейс следует выбранному в Valheim языку: для Russian используется русский интерфейс, а для English и любого другого языка — английский. Смена языка применяется сразу, без перезапуска игры.
Совместимость с AAABuildMenu включается автоматически только при установленном AAABuildMenu. Его поиск и фильтры продолжают работать, выбранный prefab и строительный ghost остаются синхронизированы даже при пустом результате фильтра, а Build Ease может брать пробу деталей, скрытых текущим фильтром.
Предупреждение о совместимости: мод несовместим с другими модами, которые добавляют свободную строительную камеру или собственный gizmo размещения. Перед использованием Build Ease отключите такие моды. Режимы PerfectPlacement ABM/AEM, Build Camera, перенос MoveBuildPieces и аналогичные редакторы или камеры не должны быть активны одновременно.
Видео-демонстрация: Смотреть на YouTube
Камера
| Действие | Управление |
|---|---|
| Войти или выйти из редактора; при необходимости автоматически взять строительный молоток из инвентаря | B |
| Показать или скрыть верхнюю панель | Конфиг: Interface / Show toolbar |
| Переместить верхнюю панель | Тянуть заголовок ЛКМ при свободном курсоре |
| Открыть или закрыть меню строительства | Короткий клик ПКМ |
| Осматриваться и двигать камеру | Удерживать ПКМ + мышь / WASD |
| Двигать камеру вверх/вниз | Удерживать ПКМ + E / Q, также Space / Ctrl |
| Ускорить камеру | Удерживать ПКМ + Shift |
| Изменить скорость камеры | Удерживать ПКМ + колесо мыши |
| Включить постоянное перемещение с привязкой под центром камеры | T |
| Включить или выключить рабочий свет | F |
| Закрыть меню / выйти из редактора | Esc / повторный Esc |
Gizmo и привязка
| Действие | Управление |
|---|---|
| Режим перемещения | W |
| Режим вращения | E или R |
| Мировые/локальные оси | X |
| Включить/выключить привязку к поверхности и точкам строительства | G |
| Двигать по одной оси | Тянуть стрелку X/Y/Z ЛКМ |
| Перемещать с шагом между крайними ванильными snap-точками детали вдоль оси; при невозможности используются bounds | Удерживать Shift при перетаскивании стрелки X/Y/Z |
| Принудительно перемещать с шагом по проекционному размеру bounds вдоль оси | Удерживать назначенную Hotkeys / Bounds step modifier (LeftControl по умолчанию) при перетаскивании стрелки X/Y/Z; Shift не требуется |
| Двигать по поверхности или плоскости экрана | Тянуть центральный квадрат ЛКМ |
| Повернуть вокруг оси | Тянуть кольцо X/Y/Z ЛКМ |
| Поворачивать с шагом 90° | Удерживать Shift при перетаскивании кольца X/Y/Z |
| Изменить размер центрального квадрата (по умолчанию 35 px) | Конфиг: Visuals / Center handle size |
| Выключить следование за камерой и вернуть призрак к штатному лучу | Кнопка Сброс к лучу на панели |
Строительство
| Действие | Управление |
|---|---|
| Построить или отремонтировать | ЛКМ вне панели и gizmo |
| Снести | СКМ вне панели и gizmo |
| Взять пробу обычной детали с её точной трансформацией | Shift+СКМ |
| Голубая окраска призрака (опционально, по умолчанию выключена) | Конфиг: Visuals / Blue ghost preview |
CHANGELOG
Changelog
0.3.16
- Optional compatibility detection now searches the assemblies already loaded by BepInEx without calling HarmonyX
AccessTools.TypeByName. Entering extended building no longer emits warnings for absent PerfectPlacement ABM/AEM, Build Camera or PerfectPlacement plugin types. - The same silent resolver is used for the optional MoveBuildPieces, AAABuildMenu and InventorySlots integrations. Missing optional mods remain a normal supported state and do not generate false warnings.
0.3.15
- Extended building can no longer be entered in a restricted dungeon/interior. Pending automatic hammer equips are cancelled safely, and an active editor exits immediately if the player enters one.
- The restriction uses Valheim's actual
Player.InInterior()state and preserves the vanillaInteriorBuildingOverrideandDungeonBuildexceptions. Placement and the extended workbench-range compatibility path are both blocked defensively while the editor is forbidden. - This deliberately does not require a
PlayerBaseeffect area: Valheim uses that area for base/no-monster effects, not as universal permission to place the first workbench or build outdoors.
0.3.14
- Fixed repeated
Player.UpdatePlacementGhostnull-reference errors when AAABuildMenu search or filters produced no results after a piece had already been selected. AAABuildMenu left the old placement ghost alive while its selected prefab became null. - AAABuildMenu filter reconciliation now runs for the local player's real build table whether or not the extended editor is active. It removes stale ghosts when the filtered selection is empty or special, recreates a missing or mismatched ghost when a normal selection returns, and leaves an already matching ghost untouched so its pose is preserved.
- The fix remains event-driven on AAABuildMenu's filter application; it adds no polling, per-frame reflection, physics queries or collection allocations.
0.3.13
Shiftnow moves an X/Y/Z translation arrow in increments equal to the projected span between the piece's outer vanilla snap points. If that axis has fewer than two distinct snap-point positions, it automatically falls back to the projected visual bounds.- The configurable
Hotkeys / Bounds step modifier(LeftControlby default) independently forces projected-bounds increments while an X/Y/Z arrow is dragged;Shiftis not required. Rotation remains unchanged:Shiftstill selects 90° increments. - Existing custom values from the 0.3.12
Snap-point step modifiersetting are migrated to the renamed bounds modifier and the obsolete key is removed. Both step sizes remain cached once per drag with no per-frame snap-point scans, physics queries or collection allocations.
0.3.12
- Added snap-point translation increments. Hold
Shifttogether with the configurableHotkeys / Snap-point step modifier(LeftControlby default) while dragging an X/Y/Z arrow to move by the projected span between the piece's outer vanilla snap points. - Pieces with no snap points, a single point or only one distinct point position along the selected axis automatically fall back to the existing projected-bounds step.
Shiftalone remains unchanged, and rotation still uses 90° whileShiftis held. - Bounds and snap-point spans are calculated once when an axis drag begins. The implementation reuses the existing snap-point list, performs no physics queries, sorting or per-frame collection work, and reserves a remapped modifier through the editor input firewall.
0.3.11
- Holding
Shiftwhile rotating temporarily changes the step to 90°. Holding it while dragging X/Y/Z moves the ghost in increments equal to the piece's projected size along the selected world or local axis; geometry size is calculated once when the drag begins. - The centre translation handle is 35×35 pixels by default and configurable through
Visuals / Center handle sizefrom 10 to 100 px. Any LMB press over the gizmo reserves placement input before dragging begins, preventing accidental construction from a single centre click. - Translation arrows are 15% longer. Rotation rings show only their camera-facing halves, remain visible through the ghost, use identical geometry for rendering and hit-testing, and draw the active axis last.
- Added the configurable
Hotkeys / Toggle camera ray followaction (Tby default). It continuously places the ghost on the surface or vanilla build point under the camera centre even when regular surface snapping is disabled. Pressing it again freezes the exact pose; Reset to ray disables the mode. ChangingGwhile follow is active immediately recalculates its snapped pivot. Idle updates are gated by actual ray/state changes, and placing a piece no longer pulls the next ghost onto the newly built geometry. - Added optional AAABuildMenu 1.0.1 integration without a hard dependency. It activates only when AAABuildMenu is installed, preserves its search and filters, allows exact sampling of an available piece hidden by the current view—including pieces from another category—and performs a complete selection/list/ghost rollback if reconciliation fails. Empty search results also clear a stale placement ghost.
- All new hotkeys participate in the extended-mode input firewall. Per-frame paths add no reflection, LINQ queries or managed arrays; surface following reuses the existing non-allocating physics buffers.
0.3.10
- Reduced the center square of the translation gizmo to exactly 25×25 pixels. Its visual size still matches its mouse hit area; axis arrows and rotation rings are unchanged.
0.3.9
- Changed the default entry hotkey to
B. If a construction hammer is in any inventory slot, Build Ease equips it through Valheim's vanilla flow and enters extended mode; a hammer already held is not toggled again. An unchanged legacyKeypadEnterbinding is migrated toBonce, while custom bindings are preserved. - Added the persistent
Interface / Show toolbarsetting. It hides only the top toolbar; the gizmo, camera, building controls and hotkeys remain active, and the hidden toolbar does not block mouse input. - Increased the center square of the translation gizmo and its exact mouse hit area by 50%, from 22×22 to 33×33 pixels. Arrow and ring sizes are unchanged.
- Auto-equipping no longer writes directly to
Player.m_buildPieces. It uses the vanillaUseItem → ToggleEquipped → EquipItem → SetPlaceModechain, including queued equipping of custom construction hammers and safe cancellation of pending requests.
0.3.8
- Regular interactive structures—chests, beds, workbenches, forges, smelters, ovens, fermenters, portals, furniture and similar objects—are no longer misclassified as special because of support-surface restrictions. They now use the regular Build Ease gizmo and do not follow the camera ray.
- The compatibility filter now preserves vanilla placement only for genuine utility actions and objects that require terrain, zone, distance or connection logic: repair, demolition and upgrades; hoes and terrain operations; plants; water; station extensions; pieces with an active
blockRadius+blockingPiecespair; and objects withmustConnectTo. - Immediately before construction, the final
_desiredPositionand_desiredRotationare injected into the vanillaPlayer.PlacePiecearguments. The object is still created and synchronized exclusively through the vanillaInstantiate → ZNetView → ZDOchain, without a custom placement RPC or unsafe post-placement ZDO rewrites. - Added protection against an active
MoveBuildPieces 1.0.23operation. Build Ease will not enter over a started or pending network move and exits if such a state appears. While Build Ease is active, the three current MoveBuildPieces activation hotkeys are blocked; its move state is never cancelled or modified through reflection. - Updated the conflicting-editor warning in English and Russian to explicitly include MoveBuildPieces.
0.3.7
- Added
Visuals / Blue ghost preview, disabled by default. When enabled, any piece selected for construction in extended mode receives a blue emissive ghost appearance similar to the placement ghost in MoveBuildPieces. - Ghost styling modifies only cloned Valheim preview materials, is applied once when a new ghost is created, and is restored when the setting is disabled or extended mode exits. Prefabs and constructed objects are unaffected.
- After resources from demolition are successfully auto-collected, their local models are hidden in the same frame. The first search now runs immediately, while existing retries remain for network latency.
- Removed the previous forced restriction against placing again at the saved position. Build Ease no longer adds its own overlap restrictions and preserves Valheim's rules for each piece.
0.3.6
- Changed the Thunderstore identifier to
Build_Ease, displayed in mod managers as Build Ease. - Renamed the assembly from
UEPlacementEditor.dlltoBuildEase.dll; the technical GUID and existing config path remain unchanged. - Cleaned the installation archive down to four required files:
manifest.json,icon.png,README.mdandBuildEase.dll.
0.3.5
- Added separate English and Russian text tables for the extended-building interface, toolbar, statuses and in-game messages. Language follows Valheim's setting (
Russian→ RU, all others → EN) and updates throughLocalization.OnLanguageChangewithout per-frame polling. - The selected piece name now comes from
Piece.m_nameand is localized through Valheim instead of displaying the internal prefab name. - The top toolbar can be dragged by its header with LMB while the cursor is free. Dragging is disabled during RMB camera capture, building input is blocked during toolbar interaction, and the window remains within the screen bounds.
- Current user settings became the defaults for clean installations: entry on
KeypadEnter, light onF, and a 100 m light radius. Following a separate clarification, the default rotation step was changed to5°. - Completely restructured the README, separating camera controls, gizmo/snapping controls and building actions into sequential English and Russian sections.
- Existing configs are not overwritten; new defaults apply only when the corresponding settings are missing.
0.3.4
- Renamed the mod to Build Ease with the tagline Easy UE-style building for Valheim. The Thunderstore package identifier is now
BuildEase; the technical GUID, DLL name and config path remain unchanged so updates do not reset existing settings. - Added the configurable
Hotkeys / Toggle camera lighthotkey (Lby default) and a toolbar button for temporary work lighting around the camera. - The light follows the free camera, never casts shadows, and is destroyed when disabled or whenever extended build mode exits.
- Range (
Lighting / Camera light range, 30 m, 1–100) and intensity (Lighting / Camera light intensity, 1.5, 0–10) are configurable and immediately update an active light. - The light hotkey also works while RMB is held; config changes are applied to the Unity
Lightonly on the main game thread.
0.3.3
- Added a finished 256×256 Thunderstore icon, a concise English description, a controls table, and an explicit incompatibility warning for other free build-camera or placement-gizmo mods.
- After a successful build, the next ghost of the same regular gizmo-compatible piece preserves the exact world position and quaternion of the placed object, including when the ghost is recreated after resources are consumed.
- The newly placed pose is temporarily marked as occupied: another LMB click cannot create an overlapping duplicate, while the first real translation or rotation restores normal placement validation.
- The vanilla
Shift+MMBsample action now copies the source object's exact position and rotation, including pitch and roll, to the selected ghost of a regular gizmo-compatible piece, whether it uses the same or a different prefab. Special pieces retain the vanilla placement path. - Sampling works over the gizmo and synchronises the hidden vanilla/PerfectPlacement rotation state after a complete
UpdatePlacement, preventing later mouse-wheel or gamepad processing from resetting the pose. - The camera is captured only while RMB is held. The previous persistent capture mode and its config entry were removed; the nearest vanilla snap point is still selected automatically.
- Added
Mouse2to the editor's reserved input, and stale hover state from an old gizmo is cleared when the placement ghost is destroyed or changed.
0.3.2
- Rotating the free camera no longer marks its position as changed or invokes the expensive
ZoneSystem.GetGroundHeight/terrain raycast on every frame of normal RMB look. - Local/World, surface snap and exit labels are now cached. BepInEx
KeyboardShortcut.ToString(), including its internal LINQ and array work, runs only when the state or config actually changes instead of on every IMGUI event. - The hotkey barrier now uses one
HashSet + polling arraysnapshot rebuilt throughSettingChanged. This removes four LINQ iterators from every idle InventorySlots frame and eliminates repeated linear hotkey scans. - The surface raycast no longer sorts the entire hit buffer; the nearest valid surface is found in one
O(n)pass. - Build snap-point searches use a dedicated reusable collider buffer and process each nearby
Pieceonce. Multiple colliders no longer create duplicate lists or inflate the Cartesian search of snap-point pairs. - A clipping-buffer overflow is retained as the new high-water mark; in very dense bases,
Physics.OverlapSphereno longer allocates another large array on every drag frame. - The gizmo caches the current camera directions once per render pass instead of performing hundreds of repeated
Camera.current/transformlookups while drawing rings.
0.3.1
- Fixed position, rotation and temporary snap-pivot being fully reset when switching between Local and World modes.
- Coordinate-system changes now atomically preserve the canonical position, rotation and world-space gizmo point; only the axis orientation changes.
- When the placement ghost is internally recreated for the same selected piece, its saved pose and snap-pivot are transferred to the new ghost. Selecting a genuinely different piece or successfully building still starts a new placement.
- Added an input-ownership barrier: while the editor viewport is open, standard BepInEx
KeyboardShortcuthotkeys from other mods do not receive keys reserved by the editor. Build Ease commands use an internal bypass. - Added dedicated compatibility for InventorySlots, which reads raw Unity Input instead of
KeyboardShortcut: its quick-slot handler does not fire while reserved editor input is held. This resolves the Local/WorldXconflict withQuick Slot 2 Hotkey = X; non-conflicting quick slots remain available. - Changed the default rotation step from
15°to1°. Existing user-configured values are not overwritten automatically.
0.3.0
- The free camera now applies its final transform after the
FirstPersonModepostfix; direct fallbackWASDinput was added alongside ZInput. - Removed the position grid. Snapping now means surface snapping and vanilla Valheim build snap points while dragging the centre square.
- Added a central translation handle that remains visible through geometry.
- After a surface or build-point snap, the gizmo moves to the snap point and rotation keeps that point fixed in place.
- The rotation step is now independent of surface snapping and configurable; a value of
0enables continuous rotation. - Added configurable hotkeys for surface snapping and Local/World mode. The toolbar displays the actual assigned keys for both actions and for entering or exiting the editor.
- Extended mode now removes only the crafting-station requirement for demolition. Repair and all other actions remain vanilla, as do private-area checks, no-build zones and the piece's own restrictions.
- Added network-safe pickup of only newly spawned drops after successful demolition through vanilla ownership and
Pickupmethods. Items that do not fit or are too heavy remain in the world; there is no continuous camera “vacuum.” - Removed the obsolete
Position stepandExisting piece edit rangeconfig entries.
0.2.0
- Completely removed the flawed mode for selecting and repositioning already built objects, including its network RPC, creator/host checks, visual proxy and ZDO transform-writing code.
- The editor is now limited to the ghost of a new piece; building, repairing and demolishing are handled by vanilla
Player.UpdatePlacement. - Reworked the free camera with UE-style controls: a short RMB click toggles the menu, while holding RMB immediately captures the mouse and enables movement and look.
- Fixed short RMB click detection after Unity recentres the locked cursor.
- Added
WASD,Q/E,Space/Ctrl,Shiftacceleration and mouse-wheel speed adjustment. - In free-cursor mode, the vanilla repair/demolition ray now points under the cursor; hotbar keys
1–8and the hide-items command were restored. - Gizmo axes are drawn with depth testing disabled and remain visible through the object.
- Added world/local axes, position/angle snapping, and suppression of building actions when clicking the toolbar or gizmo.
- Hammer range and crafting-station search range are extended only while the editor is active and safely restored afterwards.
- Special terrain, water and connectable pieces automatically use vanilla placement without a gizmo.
- Regular gizmo-compatible pieces use separate arbitrary-transform validation without requiring a surface beneath the ray; vanilla support physics remain enabled after construction.
- Added protection against PerfectPlacement ABM/AEM and Build Camera modes being active at the same time.
- The editor's hard radius is now reapplied after BuildRestrictionTweaks and before placing the piece.
- Enabled standard FPR PerfectPlacement no longer accumulates hidden mouse-wheel rotation while the ghost is held by the gizmo.
- Removed the per-frame reflection invoke and argument boxing;
UpdatePlacementnow uses a cached delegate, while the camera and selected-piece compatibility are also cached. - Removed unused and conflicting prototype features; scaling remains intentionally unsupported.
0.1.0
- First experimental prototype. Its architecture for editing placed objects was deemed incorrect and completely replaced in 0.2.0.