You are viewing a potentially older version of this package. View all versions.
Jubaroo-SmarterHoe-1.1.4 icon

SmarterHoe

Comprehensive hoe overhaul: Multi-step Undo/Redo, Altitude Lock, Instant Plateau, Spline Road Carver, Soften/Restore, Clear Debris, ServerSync & Dedicated Server support, 9 languages, and survival balance.

By Jubaroo
Date uploaded 2 weeks ago
Version 1.1.4
Download link Jubaroo-SmarterHoe-1.1.4.zip
Downloads 1446
Dependency string Jubaroo-SmarterHoe-1.1.4

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2351 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.2351

README

SmarterHoe

A comprehensive, precision terrain-editing overhaul for the Valheim hoe.

SmarterHoe equips you with a professional suite of terraforming tools — from laser-flat plateau leveling and multi-waypoint spline road carving to full multi-step undo/redo, 3D previews, 9-language localization, and server-authoritative dedicated server synchronization — all while staying fully balanced for survival play.


🌟 Features

⏪ Multi-Step Undo & Redo System (Alt+Z / Alt+Y) Made a mistake, cut too deep, or over-flattened a hillside? Press Alt+Z (or Ctrl+Z) to undo previous terrain changes step-by-step. Press Alt+Y (or Ctrl+Y / Shift+Alt+Z) to redo.

  • Universal tool coverage: Works on Altitude Leveling, Instant Plateau, Soften, Restore Nature, Spline Ramps, vanilla Raise Earth, Mud Roads, Paved Stone Roads, and Cultivate.
  • Continuous sweep grouping: Holding left-click to drag-level or pave groups the entire continuous stroke into a single atomic undo entry.
  • Smart Waypoint step-back: Pressing the Undo key while ramp waypoints are active automatically steps back the most recent waypoint first before reverting terrain.
  • Full texture & grass restoration: Undoing fully restores dirt, grass, and stone paint masks and synchronizes clutter in real time.

🔒 Altitude Lock — Laser-Flat Ground Press L to toggle locking your elevation. Every subsequent hoe click levels terrain to that exact height, guaranteeing a perfectly flat surface across hills and slopes.

  • Snap to Building Floors: Aim at any placed wood or stone floor piece and press Middle Mouse Button to snap the locked altitude to that floor's exact height.
  • Hold-to-Repeat Elevation Tuning: Hold down PageUp or PageDown to smoothly and rapidly adjust elevation without spamming buttons. Features a small delay before continuous movement begins to prevent accidental overshooting on single taps. Hold Shift for a 5x speed multiplier.

⬛ Instant Plateau — 1-Click Razor-Flat Flattening A dedicated hoe build-menu tool that instantly flattens the entire brush area to the elevation directly under your cursor in a single click. Eliminates gradual multi-click leveling and stepped ridges.

〰️ Smooth Ramp — Multi-Waypoint Road Auto-Carver Place waypoints (K) across rugged terrain to plot out a mountain trail or highway. Press H to instantly auto-carve a smooth, graded road corridor through all waypoints using Catmull-Rom spline interpolation.

  • Cart-Friendliness Color Guide: Live 3D spine dynamically indicates slope steepness: 🟢 Green: ≤20° — Cart-Friendly (✓) 🟡 Yellow: 20–25° — Steep for Carts (!) 🔴 Red: >25° — Too Steep for Carts (✗)
  • Shift+Carve: Hold Shift while pressing H to auto-carve the entire road directly in paved cobblestone.

🔄 True Square & Circle Brushes (Oriented Deformation) Press G to toggle between circular and square brush geometry.

  • True Rotated Square Alignment: Square brush rotates smoothly using your mouse wheel or arrow keys (Left Arrow / Right Arrow). Fixed vanilla Valheim's axis-aligned diamond distortion so raised and leveled terrain aligns with the yellow indicator box.
  • Press Home to instantly reset square rotation back to 0° (North).

🌀 Soften & ↩️ Restore Terrain

  • Soften Terrain: Gently blends sharp ridges and cliff creases into natural, smooth transitions without flattening the terrain to a plane.
  • Restore Terrain: Resets terrain within the brush radius back to its original unmodified world-gen state — erases all digging, leveling deltas, and paint modifications.

🪓 Clear Debris Instantly removes trees, logs, stumps, rocks, boulders, and bushes within the hoe radius. In Balanced Survival mode, requires an Axe for trees and a Pickaxe for rocks — preventing progression bypass while eliminating manual clutter.

📐 Extended Reach & 8m Limit Bypass

  • Extended Hoe Reach: (20m default, configurable 5m–50m) Terraform comfortably without constantly jogging forward; automatically restores vanilla reach upon unequipping.
  • Bypass 8m Height Limit: Removes Valheim's restrictive ±8m height clamp, allowing you to level deep canyons or raise towering mountain citadels up to a configurable limit (default: 50m).

🔼 Adjustable Raise Height & 3D Volumetric Preview

  • Press E to enter Height Mode; scroll the mouse wheel to adjust single-click raise elevation (0.05m to 8.0m per click).
  • Press Q to enter Area Mode; scroll the mouse wheel to adjust brush radius (0.5m to 20m).
  • 3D Translucent Preview: Displays a live 3D translucent cylinder (or rotated cube box when Square brush is active) showing the exact raise volume and height before clicking, color-coded by reach.
  • Camera Zoom Suppression: Prevents third-person camera jumping while scrolling to adjust brush radius or raise height.

🌐 Multi-Language Localization Automatically detects your active Valheim language. Custom tool names, hover descriptions, cart slope ratings, and HUD notifications are natively translated into: English, German, French, Spanish, Russian, Simplified Chinese, Portuguese (Brazilian), Polish, and Swedish.


⚖️ Balanced Survival Mode

SmarterHoe is balanced by default for survival gameplay — all terrain operations realistically cost resources and stamina just like vanilla building:

  • Dynamic Stone (Raise Ground): Proportionally scales with both Brush Area and Raise Height. Raising a towering 4m plateau costs realistically more than a 0.5m mound.
  • Dynamic Stone (Paved Road): Proportionally scales with the cobblestone surface area paved.
  • Live HUD Sync: Build menu dynamically displays exact stone count required. Placement ghost and 3D preview turn red when stone is insufficient.
  • Stamina & Durability: Drained per operation; exhaustion halts clearing mid-sweep. Hoe and tools wear down; broken tools block operations.
  • Progression Locked: Workbench proximity required for raising earth; Stonecutter required for paving. Axe/Pickaxe required for clearing debris.

🛠️ Freebuild Creative Mode

Press [Insert Hotkey Here] at any time to toggle into Freebuild Creative Mode:

  • 0 Resources: No stone or materials ever required or deducted.
  • 0 Crafting Stations: Terraform anywhere without needing nearby workbenches or stonecutters.
  • 0 Durability & Stamina: Unlimited terraforming without exhaustion.
  • Clean HUD: Stone requirements automatically vanish from the build bar.
  • Note: Server owners can lock cost mode to Balanced Survival via ServerSync.

⌨️ Controls & Hotkeys Summary

Hotkey Action Notes
Alt+Z / Ctrl+Z Undo Terrain Action Reverts last operation (or steps back last ramp waypoint)
Alt+Y / Ctrl+Y Redo Terrain Action Redoes last undone terrain modification
Q Select Area Mode Mouse wheel scroll resizes brush radius
E Select Height Mode Mouse wheel scroll adjusts raise height (0.05m – 8.0m)
L Toggle Altitude Lock Levels terrain to fixed elevation
Middle Mouse Snap Altitude Lock Aim at any placed piece to match its floor height
PageUp / PageDn Adjust Locked Altitude Tap or hold down for rapid smooth movement
Shift + PgUp/PgDn 5x Rapid Altitude Tuning Multiplies elevation change rate by 5x
K Place Ramp Waypoint Places Point A, B, C... (or clears when done)
H Auto-Carve Ramp Road Carves along spline corridor. Hold Shift for Paved Stone
Backspace Undo Last Waypoint Removes most recent waypoint
[ / ] Adjust Ramp Width Changes road corridor width (1m – 20m)
Alt + [ / ] Adjust Brush Radius Changes leveling/brush radius (also Alt + Scroll)
P Cycle Ramp Paint Mode Cobblestone, Dirt, Keep Grass, Cultivated, Match Tool
G Toggle Brush Shape Switch between Circle and Square
Mouse Scroll Rotate Square Brush Rotates square brush when active
Left/Right Arrow Rotate Square Rotates square brush counter-clockwise / clockwise
Home Reset Square Rotation Snaps square rotation back to 0° (North)
U Restore Terrain Revert terrain to original world-generation

💻 Console Commands (F5)

Open the Valheim in-game console with F5 (requires -console Steam launch option).

Command Arguments Description
resetterrain [radius=10] Reverts digging/leveling to natural world-gen state (supports Undo)
remove_forestry [radius=10] Clears trees, logs, stumps, and bushes within radius
cleardebris [radius=10] Clears rocks, boulders, and obstacles within radius
smarterhoe_undo None Undoes the last terrain modification
smarterhoe_redo None Redoes the last undone terrain modification

⚙️ Configuration

Config file: BepInEx/config/com.jubaroo.smarterhoe.cfg All settings are configurable in-game using the BepInEx Configuration Manager (F1) or by editing the config file directly. Synced settings are enforced by the server.

Click to view all configuration options
Setting Default Synced? Description
Lock Configuration true Yes Locks configuration to server authority
CostMode BalancedSurvival Yes BalancedSurvival or Freebuild
HoeReach 20 Yes Maximum placement reach (meters)
MaxBrushRadius 20 Yes Maximum brush radius (meters)
AllowBeyondGameLimit true Yes Allows terraforming beyond ±8m ceiling/floor
MaxTerrainDelta 50 Yes Maximum elevation delta from natural terrain
DefaultRaiseHeight 0.5 No Default height added per raise
RaiseScrollStep 0.5 No Height increment per mouse wheel step
MinRaise / MaxRaise 0.05 / 8.0 Yes Min/Max selectable raise height
SuppressCameraZoom true No Prevents zooming while adjusting hoe
Language Auto No Auto detects language or choose specific
EnableUndo true Yes Enable multi-step terrain undo and redo
MaxUndoSteps 15 Yes Max undo history snapshots stored (1 to 50)
InstantFlatten true Yes Instantly level 100% of terrain in brush
StonePerCubicMeter 0.25 Yes Stone cost per cubic meter raised
StonePerPavedSquare 0.03 Yes Stone cost per square meter paved
RequireCraftingStation true Yes Require Workbench/Stonecutter
RequireToolsForDebris true Yes Require Axe/Pickaxe for clearing
DynamicSlopeColoring true No Color-code ramp guide by cart-friendliness

🖥️ Dedicated Server Support & ServerSync

SmarterHoe features seamless ServerSync integration with full server-authoritative configuration.

  • Server Authority: Server owners can enforce balance rules (CostMode, reach limits, radius, tools required). Admins listed in adminlist.txt are automatically exempt and can adjust settings in real-time.
  • Client-Optional: You can safely join any vanilla or community server with SmarterHoe installed on your client. Local settings will apply without getting you kicked. Players without SmarterHoe can also join dedicated servers running this mod.

🤝 Compatibility

  • Multiplayer: Modifies Valheim's native TerrainComp heightmaps and ZDO networks; all players see changes in real time.
  • Dedicated Servers: Fully supported with headless optimizations.
  • Known Conflicts: Mods that also patch Player.UpdatePlacementGhost or deeply override hoe piece behavior may conflict.

🏆 Credits

Built by Jubaroo. Valheim terrain system research inspired by the broader Valheim modding community.


📦 Installation Instructions

Prerequisite: You must have BepInExPack Valheim installed before installing SmarterHoe.

Using a Mod Manager (Recommended):

  1. Open your preferred Valheim mod manager.
  2. Click the Install with Mod Manager (or similar) button on this page, or search for "SmarterHoe" within the manager's download interface.
  3. Ensure any prerequisites (like BepInEx) are enabled.
  4. Launch the game via the mod manager.

Manual Installation:

  1. Click the Manual Download button on this page.
  2. Extract the downloaded .zip archive.
  3. Move the com.jubaroo.smarterhoe.dll file into your Valheim\BepInEx\plugins\ folder.
  4. Launch the game.

CHANGELOG

Changelog

1.2.2 (2026-10-05)

Fixed — Reported Bugs & Stability

  • Vanilla Cultivator Seed Consumption (Freebuild Bleed-Through): Fixed an issue where planting with a vanilla Cultivator consumed no seeds when the Hoe had been toggled to Freebuild cost mode while EnableCultivatorFeatures = false / EnableCultivatorOnHoe = false. Player_ConsumeResources_Patch now bails out to vanilla consumption whenever the equipped tool is not managed by SmarterHoe, so unmanaged cultivators always keep 100% vanilla behavior.
  • Double Seed Usage with AzuCraftyBoxes: Fixed every crop planted with the Cultivator costing 2 seeds instead of 1 when SmarterHoe and AzuCraftyBoxes were both installed. When AzuCraftyBoxes is detected, SmarterHoe no longer performs its own manual seed pull for single-plant placement and defers to the vanilla + AzuCraftyBoxes consumption pipeline, eliminating the duplicate deduction.
  • Hoe FPS Drop (Farming Grid Sorting): Eliminated a per-frame List.Sort over up to 625 grid points in FarmingGridVisualizer that caused severe frame drops (reported 120 → 15–10 FPS) for some users in 1.2.0/1.2.1. Points are now re-sorted only when the grid is actually regenerated (dirty flag), not every rendered frame.
  • Multiplayer Terrain Desync & "Ground Locked" Zones: Fixed terrain modifications being visible only to the modifying player and areas becoming unmodifiable (by hoe or pickaxe) after relog on multiplayer servers. All TerrainComp ZNetView ownership claims (SafeClaimOwnership, TerrainOp.Awake patch, UndoManager, Clear Debris) are now gated to run only when the local player is the server/host, preventing clients from stealing ownership of shared terrain chunks and breaking ZDO sync for everyone else.
  • Hold-to-Level Survival Costs: The continuous hold-to-level sweep now correctly enforces stamina and tool durability checks per tick in Balanced Survival mode (previously ticks could fire while out of stamina or with a broken tool).
  • Undo/Redo History Integrity:
    • A failed undo/redo (all target chunks unloaded) no longer silently loses the history entry — the step is pushed back onto its original stack so it can be retried after moving closer.
    • FindTerrainCompAt no longer falls back to a neighboring heightmap's compiler when the exact chunk is unloaded, which could write chunk A's deltas into chunk B and corrupt terrain.
    • HasChunkChanged now safely handles mismatched snapshot array lengths and null asymmetry instead of only comparing element-wise.
  • Texture Leak in Icon Loader: Failed ImageConversion.LoadImage calls now destroy the orphaned Texture2D, preventing GPU texture leaks when loading custom/modded piece icons.
  • Custom Piece Prefab Null Guard: CustomPieceManager.CreatePrefabsOnce no longer calls GetComponent<Piece>() before its null check, fixing a potential NullReferenceException with missing base prefabs.
  • Stale Tooltip Reference: BuildHudTooltipPatch cache invalidation now handles destroyed pieces (_lastPiece == null), preventing stale Unity object references from suppressing tooltip updates.
  • Batch Plant Suppression Windows Gated: The 0.25s stamina/durability/requirement suppression windows after farming grid batch planting now only apply when a hoe or cultivator is equipped, preventing unintended bypasses for other tools/actions.
  • Ground Height Cache LRU Eviction: GetGroundYCached in FarmingGridVisualizer now evicts the least recently used entry when the cache is full, instead of always overwriting slot 0.
  • ComfyGizmo Transpile Warning: SafeGizmoTranspile now logs a warning if neither the PerfectPlacement nor vanilla Quaternion.Euler IL patterns are found, making compatibility issues easier to diagnose.
  • Redo Planted Entry Preservation: UndoManager.Redo() now re-pushes planted-batch entries onto the redo stack when redo is not supported, preventing history loss.
  • Stone Cost Estimate Cache Leak: EstimateLevelStoneCost now clears _cachedHeightmapList before calling Heightmap.FindHeightmap, preventing unbounded list growth and inflated cost estimates from duplicate heightmap entries.
  • AzuCraftyBoxes Cache Invalidation: PullFromNearbyContainers now calls InvalidateCache() after pulling from AzuCraftyBoxes containers, preventing stale item counts from causing over-spending in subsequent operations.
  • Duplicate Replant Spots: Area harvest first sweep now gates replantSpots.Add on pickables.Add(p) returning true, preventing duplicate replant spots and extra seed consumption when a Pickable overlaps multiple colliders.
  • Smooth Terrain Resource Timing: ExecuteSmoothTerrain now consumes stamina and durability only after confirming there are vertices to smooth, preventing resource drain on already-flat terrain.
  • Dead Player Hoe Reach: Plugin.Update now calls RestorePlaceDistance() before early-returning when the player is dead/null/in cutscene, preventing extended placement reach from persisting through death.
  • Plant Piece Cache Invalidation: _grownNameToPlantPiece dictionary is now cleared on world unload (Game.OnDestroy), preventing stale GameObject references across world changes.
  • Null Player Container Query: GetNearbyNativeContainers(null) now returns an empty list instead of the shared cached list, preventing aliasing hazards.

Fixed & Performance Overhaul

  • Zero-Allocation Container Registry & Nearby Chest Overhaul:
    • Dynamic Container Registry (_allActiveContainers): Completely eliminated expensive iterations over Piece.m_allPieces (thousands of world pieces) and recursive GetComponentInChildren<Container> searches on all building pieces in player bases. Containers now register and unregister via lightweight Container.Awake and Container.OnDestroyed Harmony patches, making nearby chest detection instantaneous.
    • Short-Circuited Seed & Stone Scans: Added neededShortCircuit to NearbyChestsCompat.CountTotalSeeds across all operations (farming grid planting, replanting, ramp carving, plateau leveling). If the player's inventory already contains enough seeds or stone, nearby containers are never queried.
    • Expanded Container Cache Thresholds: Increased NearbyChestsCompat spatial movement threshold to 5m (25m² sqr magnitude) and temporal cache to 2.0s, reducing nearby container queries to a fraction of their previous frequency.
    • Cached OnGUI Seed Display: Plugin.OnGUI now reads pre-cached InventorySeeds and ChestSeeds directly from FarmingGridVisualizer.Instance rather than running full container and inventory queries across 2–3 Unity GUI passes per frame.
  • Cultivator & Plant Mode FPS Optimization:
    • Snapping Spatial/Temporal Caching: Implemented a smart 0.08m cursor delta and 0.15s TTL cache in GetSnappedGridCenter. Grid snapping now reuses candidate calculations when the player's aim is steady, avoiding continuous 256-collider physics overlap queries every frame.
    • Zero-Allocation Collider Classification: Added a cached lookup table (_cropColliderCache) with integer layer filtering (GhostLayer) for IsPlantOrCrop. Replaced expensive per-frame string allocations (col.gameObject.name), transform hierarchy traversals (IsChildOf), and GetComponentInParent<Plant> calls on up to 256 colliders per frame.
    • Ghost Visual Pooling & Renderer Caching: Wrapped ghost previews in GhostVisual pooling objects with pre-cached Renderer[] arrays. Eliminated per-frame GetComponentsInChildren<Renderer>(true) allocations (1,500+ garbage arrays/sec) and guarded SetPropertyBlock to only execute when ghost validity/seed state changes.
    • Point Validation Optimization: Pre-checks ward access once for the entire grid bounding sphere via WardProtectionManager.CheckAccess, bypassing individual point ward checks when safe; cached biome queries with 4m spatial cells (GetCachedBiome), eliminating Simplex noise evaluations; cached active Heightmap instance; optimized plant growth space checks with direct layer checks (GhostLayer) and root comparisons; pooled GridPlantPoint instances (_pointPool) and used a static comparison delegate.
    • Boundary Line Caching: Added position, rotation, and dimension dirty-checking to RenderBoundary to skip line vertex updates when the cursor hasn't moved, and pre-cached GroundRaycastMask.
    • Synchronized Seed State: Streamlined UpdateFarmingGridWithCostCheck to consume cached seed availability directly from FarmingGridVisualizer, eliminating duplicate inventory and container checks per frame.
  • Base Hitching & Component Storm Elimination:
    • Sprinting Component Storm Elimination: In Plugin.Update, gated IsLookingAtHarvestable(player) behind Input.GetKeyDown(AreaHarvestKey). This prevents 7 GetComponentInParent queries (Container, Door, Bed, CraftingStation, Sign, Pickable, PickableItem) from firing 60 times per second while holding Shift to sprint.
    • Build Hammer Exemption Guard: Guarded CustomPieceManager.RemoveCustomPiecesFrom with _tablesWithCustomPieces. Whenever PieceTable.UpdateAvailable runs for non-hoe tools (e.g., Hammer), it immediately returns without iterating hundreds of vanilla building pieces.
    • Direct Root Component Checks: Replaced recursive GetComponentInChildren<Plant>() traversals in Player_HaveRequirements_Patch, Player_ConsumeResources_Patch, and SyncPlantPieceRequirements with direct GetComponent<Plant>() calls.
    • Physics Buffer Management: Pre-cached HarvestMask, HarvestFilterMask, and ItemMask, and ensured _harvestColliderBuffer is cleared with Array.Clear after overlap checks to prevent GameObject reference retention.
    • Equip Lag & Multiplayer Desync: Cached reflection members for ComfyGizmo and PerfectPlacement, prevented TextMeshPro canvas rebuilds in BuildHudTooltipPatch, throttled EstimateLevelStoneCost, cached HoeLocalization.GetActiveLanguage(), and added remote player guards in PieceTable_UpdateAvailable_Patch, Player_UpdateKnownRecipesList_Patch, and Player_SetPlaceMode_Patch.

Fixed & Balanced

  • Accurate Dynamic Stone Cost Calculation:
    • Fixed baseline raise dimensions in GetTerrainPieceStoneCost: Replaced the 3.4m level ground radius baseline with vanilla Valheim's true 2.0m raise radius (TerrainOp.m_raiseRadius = 2.0m, delta = 0.5m, baseline volume = $\sim6.28\text{ m}^3$ per 2 stone).
    • Raised terrain volume now scales proportionally with both brush area and raise height. For example, a 1.5m square brush raised by 1.50m (volume $13.5\text{ m}^3$) now costs 4 stone instead of being locked at 2 or undercounted at 1.
    • Enabled ScaleStoneCostWithBrush = true by default in configuration.
    • Added in-game hotkey toggle (Shift + B) to quickly alternate between Dynamic Stone Cost Scaling and Flat Vanilla Cost (2 Stone) on the fly with live HUD feedback.
    • Fixed SyncTerrainPieceRequirements to refresh Hud.SetupPieceInfo whenever piece resource costs change, immediately updating the in-game build requirement HUD ("Stone 736/4") upon adjusting brush radius, shape, or raise height.
    • Added live status strip indicator FLAT (2 Stone) [Shift+B] / BALANCED [Shift+B] and updated controls tooltip in BuildTooltipHelper.

1.2.1

Fixed & Optimized

  • Equip Stutter & Massive Frame Drop Fix:
    • Eliminated severe frame rate drops when equipping the Hoe or Cultivator by adding high-efficiency spatial (2m movement threshold) and temporal (0.35s - 0.5s TTL) caching in NearbyChestsCompat.
    • Replaced un-cached per-frame Piece.GetAllPiecesInRadius and Container scans from UpdatePlacementGhost, Update, OnGUI, and HaveRequirements.
    • Replaced expensive heightmap compiler instantiation (hm.GetAndCreateTerrainCompiler()) during preview hover with non-allocating compiler lookups (TerrainComp.FindTerrainCompiler) and smart spatial caching.
  • Game Crash / UI Exception Fix:
    • Fixed an ArgumentOutOfRangeException crash in Hud.UpdatePieceList caused by unmatched category label counts when custom categories were injected into PieceTable. Added automatic padding guard ensuring m_categoryLabels always matches m_categories.Count.

Added & Changed

  • Configurable Cultivator Integration & Pure Terraforming Mode:
    • Added EnableCultivatorOnHoe (default: false): Keeps the Hoe strictly focused on terraforming without crowding the build menu with cultivator tools, plants, seeds, and farming categories. Players who prefer having cultivator tools on their hoe can enable this option.
    • Added EnableCultivatorFeatures (default: false): Controls whether SmarterHoe features (farming grid, mass harvest, multi-planting) hook into the Cultivator tool. When disabled, the Cultivator remains 100% vanilla.
    • EnableFarmingGrid & EnableAreaHarvest (defaults: false): All agricultural and cultivator tools are now disabled by default, ensuring SmarterHoe operates strictly as a focused terraforming mod out-of-the-box.
    • Dynamic runtime update: Changing EnableCultivatorOnHoe in Configuration Manager instantly updates the active build menu without needing a game restart.
  • Predictable & Vanilla-Friendly Resource Cost Scaling:
    • Added ScaleStoneCostWithBrush (default: false): When disabled, terrain raising and paved road placement use flat vanilla costs (2 stone per raise, 1 stone per paved road) regardless of brush radius or height. When enabled, stone costs scale dynamically based on brush area and volume raised.
  • Intuitive Ground Lowering / Excavation Tool:
    • Unlocked negative raise heights: MinRaise default changed from 0.05f to -8.0f (and up to -MaxTerrainDelta when AllowBeyondGameLimit is enabled).
    • Players can now easily lower/dig ground directly using the Raise Ground tool: hold E and scroll down past 0m to enter negative depth (Lower Ground / Excavate).
    • Excavation / lowering ground costs 0 stone (digging dirt does not require carrying stone in survival).
    • Updated 3D visualizer: when height is negative, the preview cylinder/box projects downwards into the ground with an amber/orange excavation indicator.
    • Updated HUD, crosshair labels, status bar, and build menu tooltips to clearly display Lower Depth: -X.XXm (Excavate) and explain how to lower terrain with both Raise Ground and Altitude Lock (PageDown).

1.2.0

Added

  • Full Cultivator Integration on the Hoe:
    • All cultivator abilities and plantables are integrated directly into the Hoe, eliminating the need to carry both tools!
    • Tilling & Replanting: Added Cultivate (tills fertile soil for farming) and Replant (restores lush grass to dirt or cultivated ground) straight to the Hoe's build menu.
    • All Vanilla & Modded Crops: Seamlessly plant carrots, seed carrots, turnips, seed turnips, onions, seed onions, barley, flax, Jotun puffs, Magecaps, Smoke puffs, Fiddleheads, Vineberries, and tree saplings (Beech, Birch, Oak, Pine, Fir, Ash). Also dynamically discovers and supports crops from farming mods (e.g., PlantEverything, OdinCrops, SeedTotem).
    • Authentic Build Menu Icons: Directly pulls piece prefabs and metadata from the Cultivator's PieceTable, preserving authentic icons, display names, localized descriptions, seed costs, and category tabs.
    • Strict Progression & Discovery Gating: Crops only appear in the Hoe build menu once the player has discovered their respective seeds/items.
  • Intelligent Farming Grid Engine for Crops and Saplings:
    • Plant crops, vegetables, and tree saplings in a neat, organized grid with a single click, eliminating tedious one-by-one crop placement.
    • Dynamic Healthy Spacing: Automatically calculates the exact safe growth spacing dynamically from each crop's Plant.m_growRadius (formula: Mathf.Max(0.85f, growRadius * 2f + 0.15f)). Crops planted in the grid will never fail to mature or complain that they need more space.
    • Adjustable Grid Radius Using Existing Controls: Adjust grid size using Q then scroll, hold Alt + scroll, or press bracket keys ([ / ]).
    • Live Visual Grid & Boundary Preview: Color-coded ghost crop previews (🟢 Green = valid and affordable, 🟡 Yellow = valid but need seeds, 🔴 Red = blocked/invalid) with a cyan perimeter contour line.
    • Proximity Row Snapping: Automatically detects nearby existing crops and snaps the entire grid to align flush with existing crop rows. Hold Shift to bypass snapping for freeform placement.
    • Square vs. Circle Grid Geometry (G): Toggle between clean rectangular grids and radial circular planting patterns. Rotate square grids with mouse wheel or arrow keys (Left / Right).
    • Survival Balance & Multi-Step Crop Undo (Ctrl+Z): Deducts exact seed count, stamina, and durability. Pressing Ctrl+Z destroys the batch and refunds all consumed seeds directly back to inventory.
  • Mass Area Harvesting (Shift + E):
    • Mass harvest all mature crops and pickable items within a configurable radius with a single keypress!
    • Simply hold Shift and tap E (or configurable AreaHarvestKey or gamepad interact) while looking at harvestable crops.
    • Contextual [Shift+E] Harvest in Range (Xm) tooltip prompt appears on hover.
    • Comprehensive Crop & Pickable Support: Harvests carrots, turnips, onions, barley, flax, Jotun puffs, Magecaps, Smoke puffs, seed crops, mushrooms, berries, and all modded farming crops.
    • Smart Structure Safety Filter: Automatically ignores chests, doors, beds, crafting stations, and signs.
    • Automated Collection & Vacuum (AreaHarvestAutoPickup): Harvested items are pulled directly into player inventory if weight and space permit.
  • Area Harvest Crop Filter Cycling (C):
    • Press C (configurable HarvestFilterCycleKey) while Hoe or Cultivator is equipped to cycle the area harvest filter between All Pickables, Replantable Crops only, or cycle through specific detected crop types nearby.
  • Shift+E Area Harvest Auto-Replant:
    • Added EnableHarvestReplant config toggle: when harvesting with Shift + E, immediately replants the same crops in place using seeds/vegetables from your inventory or nearby chests.
  • Seamless Nearby Chest & AzuCraftyBoxes Integration:
    • Full native compatibility with AzuCraftyBoxes and vanilla chests within range (NearbyChestRange, default 20m, or AzuCraftyBoxes' mRange).
    • Farming & Agriculture: Farming Grid batch planting, Shift+E Area Harvest Auto-Replant, and single-crop placement seamlessly pull required seeds and vegetables from nearby chests.
    • Terrain & Stone Operations: Raise Ground, Paved Road, Smooth Ramp road carving, and Instant Plateau altitude leveling all pull stone directly from nearby chests and CraftyBoxes. Placement ghost validity and 3D translucent raise cylinder preview accurately recognize stone in nearby containers.
  • Measure Mode (Ruler / Laser Tape) (N):
    • With the Hoe or Cultivator equipped, press N (configurable MeasureKey) to measure distances, elevation difference ($\Delta h$), slope angle (°), and road grade percentage between any two points in the world.
    • First press sets Point A at your aim point with a cyan 3D marker ring; second press sets Point B and locks the measurement; third press (or Esc) clears the points.
    • Live 3D line connects Point A to your cursor or Point B in real-time.
    • Dedicated on-screen HUD panel displays real-time 3D distance, horizontal distance, height delta, slope angle, and grade percentage.
  • Live Stone Cost Estimation HUD:
    • Dynamically calculates and displays live estimated stone cost in the HUD before clicking when using Level Ground (instant flatten / altitude lock) or Raise Ground.
  • Dynamic Build Menu Control Tooltips:
    • Direct in-game tooltips added to every tool description in the Hoe and Cultivator build menus, explaining what buttons do what for each tool.
    • 100% Dynamic Keybinds: Button names are dynamically read in real time from the active BepInEx configuration. Changing hotkeys updates the build menu tooltips immediately with zero restart needed.
    • Tailored controls displayed for Level Ground, Raise Ground, Instant Plateau, Level (Locked Altitude), Smooth Ramp, Soften Terrain, Restore Terrain, Clear Debris, Paved Road, Cultivate, Replant, and all crops/saplings.
    • Multi-language support across 9 languages (English, German, French, Spanish, Russian, Chinese, Portuguese, Polish, Swedish).
  • Ward-Aware Protection (Anti-Grief, Server-Enforced):
    • All SmarterHoe terrain, carving, debris, farming, and harvest operations respect Valheim's Ward (PrivateArea) system.
    • When ProtectWardedAreas is enabled (default: true, synchronized from server), modifications inside another player's Ward are blocked.
    • Visual grid preview ghosts inside unauthorized wards are highlighted red (Ward protection).
  • Language Dropdown in Plugin Configurator:
    • In Configuration Manager (F1), language selection is presented as a clean dropdown menu (Auto, English, German, French, Spanish, Russian, Chinese, Portuguese, Polish, Swedish) that updates instantly without restarting.
  • Comprehensive Debug Action Logging & Diagnostics (EnableDebugLogging):
    • Added EnableDebugLogging toggle (default: false) in the 0 - General configuration group for real-time diagnostic output across all mod actions.

Fixed

  • Complete Overhaul of Clear Debris Resource Drops (DropResourcesOnClear):
    • Fixed an issue where destroying trees, rocks, stumps, and bushes with DropResourcesOnClear = true produced zero resource drops.
    • Recursively traverses tree log prefabs (TreeBase.m_logPrefab, m_subLogPrefab, and m_stubPrefab) to yield full wood drops.
    • Correctly fires DropOnDestroyed across all root entities, sub-prefabs, and destructibles.
    • Accurately scales rock and ore drops across all remaining intact hit areas in MineRock5 boulders.
    • Spawns dropped items safely above terrain level with natural pop velocity and network registration.
  • Raise Height Delta Propagation Fix:
    • Fixed an issue where changing SelectedRaiseHeight was ignored during TerrainComp.DoOperation. It now explicitly applies Plugin.SelectedRaiseHeight whenever s.m_raise is active.
  • Multiplayer TerrainComp Ownership Pre-Claim:
    • Added an automatic ownership claim for touching TerrainComp instances before operations are invoked, ensuring custom radius, square shape, and raise height settings are processed locally.
  • Undo/Redo TerrainComp Precision Matching:
    • Updated chunk matching in UndoManager to iterate and match the exact nearest chunk center using spatial distance comparison, preventing coordinate ambiguity across adjacent 64m heightmap borders.

1.1.4

Fixed

  • Soften Terrain Full Overhaul & Spatial Neighborhood Filter: Resolved an issue where using the "Soften Terrain" tool on raised ground or steep terrain flattened/lowered the ground toward the cursor altitude while leaving sharp, jagged stepped edges intact.
  • True Multi-Pass Spatial Smoothing Engine: SmarterHoe now implements an authentic heightmap relaxation algorithm (Laplacian / Gaussian spatial diffusion):
    • Iterates neighboring vertices in the grid (cardinals at weight 1.0, diagonals at weight 0.7071) across all touching chunk boundaries.
    • Relaxes sharp spikes, stepped cliff corners, creases, and jagged terraformed edges towards their local neighboring surface average.
    • Uniform elevated ground (such as raised plateaus) and level ground have equal neighbor heights and are never lowered or flattened.
    • Applies a smooth radial cosine falloff from brush center to edge, blending smoothly into untouched surrounding terrain.
    • Saves the resulting heights directly into comp.m_levelDelta (clearing comp.m_smoothDelta), allowing softening and rounding of cliffs of any height (even 10m-50m with beyond game limit enabled).
  • New Configuration Options:
    • SoftenStrength: Smoothing intensity per click or sweep pass (default: 0.5, range 0.05 to 1.0).
    • SoftenPasses: Number of filter iterations per click/sweep (default: 2, range 1 to 5).

1.1.3

Fixed

  • Dedicated Server Height Limit Protection & Terrain Desync Fix: Resolved a critical issue where players connecting with SmarterHoe as a client to a dedicated server without the mod installed experienced massive terrain corruption (ground stretching into 100m spires or plunging into bottomless abysses, causing basement carpets and structures to collapse).
  • Client-Side Dedicated Server Auto-Clamp: SmarterHoe now automatically checks whether the connected remote server is running SmarterHoe via ServerSync. If the server does not have the mod installed, AllowBeyondGameLimit is strictly disabled on the client, enforcing vanilla Valheim's ±8m limit to guarantee 100% sync and zero physics anomalies.
  • Safe Out-of-the-Box Defaults: Changed AllowBeyondGameLimit default from true to false in config. Extreme height modifications (>8m) are now opt-in for dedicated server owners and singleplayer worlds.
  • Native TerrainComp Passthrough: RaiseTerrain, LevelTerrain, and SmoothTerrain now immediately yield to vanilla Valheim methods when using circular brushes within standard game limits, ensuring full performance and zero behavior deviations.

1.1.2

Fixed

  • Build Hammer Object Rotation & Menu Isolation: Fixed an issue where structures placed with the build hammer that include terrain modifiers or terrain operations (such as campsite tents from Odin's Campsite or class altars from Almanac Classes) were erroneously detected as hoe terrain tools. This prevented rotating those structures and caused the SmarterHoe HUD menu to appear while using the hammer.
  • SmarterHoe now strictly verifies that the player is actively holding a hoe before rendering any HUD elements, intercepting mouse scroll wheel or adjustment keys, or modifying placement rotation.
  • Removed unwanted prefab rotation mutation so build hammer pieces permanently retain their proper rotational controls.

1.1.1

Fixed

  • ComfyGizmo + PerfectPlacement Compatibility: Resolved a conflict where loading both ComfyGizmo and PerfectPlacement alongside SmarterHoe would cause Harmony to fail patching Player.UpdatePlacementGhost, disabling the mod entirely. SmarterHoe now uses a resilient transpiler that handles both the vanilla and PerfectPlacement-modified IL sequences correctly.
  • Added soft BepInDependency declarations for ComfyGizmo and PerfectPlacement so load order is handled gracefully.
  • Hoe tools now correctly suppress ComfyGizmo's 3D gizmo axis rings during terrain operations.
  • Terrain tool rotations are clamped to the horizontal plane when PerfectPlacement is active.

1.1.0

Added

  • Dedicated Server Support & ServerSync Integration (ModRequired = false):

    • Integrated official ServerSync system with server-authoritative configuration enforcement.
    • Server owners can install SmarterHoe on dedicated servers and enforce balanced settings across all connected players:
      • Resource Cost Mode Enforcement: Server owners can enforce CostMode = BalancedSurvival to prevent clients from toggling freebuild creative mode ([B] key is locked on clients with on-screen notice).
      • Synced Balance & Limits: Stone costs (StonePerCubicMeter, StonePerPavedSquare), stamina and durability costs, station requirements (RequireCraftingStation), debris requirements (RequireToolsForDebris), reach distance (HoeReach), maximum brush radius (MaxBrushRadius), and maximum terrain elevation deltas (MaxTerrainDelta, AllowBeyondGameLimit).
    • Client-Optional & Vanilla Server Compatibility (ModRequired = false):
      • SmarterHoe is completely optional on both client and server!
      • Players with SmarterHoe can connect to vanilla or non-modded servers without being kicked, disconnected, or declined. Local client settings apply seamlessly.
      • Vanilla players without SmarterHoe can connect to dedicated servers running SmarterHoe without being rejected.
    • In-Game Lock Enforcement & HUD Indicators:
      • Non-admin players connecting to a locked dedicated server cannot toggle cost mode using [B] (displays HUD notice: Cost mode is locked by the server).
      • Top HUD panel clearly displays <color=#FF6666>[Locked by Server]</color> when server settings are enforced.
      • Server admins listed in adminlist.txt are automatically exempt (lockexempt = true) and can modify settings in real-time with instant synchronization to all connected clients.
    • Headless Dedicated Server Optimizations:
      • Visualizers, line renderers, crosshairs, and icon texture loaders cleanly bypass headless dedicated server environments (GraphicsDeviceType.Null).
  • Multi-Step Undo & Redo System ([Alt+Z] or [Ctrl+Z], [Alt+Y] or [Ctrl+Y]):

    • Deep chunk-level undo/redo support across all terrain actions: Leveling, Instant Plateau, Soften, Restore, Smooth Ramp auto-carving, Vanilla Raise Ground, Mud Road, Paved Stone Road, and Cultivate.
    • Continuous sweep grouping: holding left-click to drag-level or pave groups the entire sweep into a single atomic undo entry rather than cluttering history.
    • Multi-heightmap boundary handling: ramps and large brushes touching multiple terrain chunks snapshot and restore across all affected chunks cleanly.
    • Waypoint step-back integration: pressing the Undo key when ramp waypoints are active automatically steps back the most recent waypoint first before undoing terrain changes.
  • Extended Hoe Reach (20m default, configurable 5m–50m):

    • Dramatically improves terraforming ergonomics by extending hoe placement reach while the tool is equipped. Automatically restores vanilla reach upon unequipping or character death.
  • Dedicated Keyboard Rotation Hotkeys & Configurable Step Size:

    • Rotate the square brush smoothly using dedicated keyboard hotkeys or mouse scroll wheel:
      • RotateSquareLeftKey (default: LeftArrow): Rotates square counter-clockwise.
      • RotateSquareRightKey (default: RightArrow): Rotates square clockwise.
      • ResetSquareRotationKey (default: Home): Snaps square rotation back to 0° (North).
    • SquareRotationMode: Choose between ScrollWheelAndButtons (default), ButtonsOnly (keyboard only), or ScrollWheelOnly.
    • SquareRotationDegrees: Configure degrees to rotate per click/step (default: 22.5°, configurable from 5.0° to 90.0°).
  • Expanded Multi-Language Localization (9 Languages + Auto-Detection):

    • Built-in localization covering the top 9 languages played in Valheim: English, German, French, Spanish, Russian, Simplified Chinese, Portuguese (Brazilian), Polish, and Swedish.
    • Auto-Detection (Language = "Auto"): Automatically detects the active game language from Valheim's language settings with zero manual configuration needed.
    • Native Tool & Menu Translation: Patched Valheim's native Localization.Localize engine to dynamically localize custom tool names, descriptions, cart slope friendliness ratings (Cart Friendly (✓), Steep for Carts (!), Too Steep for Carts (✗)), brush shapes, cost modes, and HUD notifications.
  • Hold-to-Repeat Altitude Fine-Tuning with Initial Delay:

    • Holding down PageUp or PageDown now smoothly and continuously raises or lowers the locked altitude without requiring dozens of individual button presses.
    • Features an initial delay (AltitudeHoldDelay, default: 0.35s) before continuous movement begins to prevent accidental overshooting on single taps.
    • Smooth rapid elevation adjustment (AltitudeRepeatRate, default: 0.05s) with real-time HUD notification updates.
    • Hold Shift while tapping or holding PageUp/PageDown for a 5x elevation speed multiplier.
  • Camera-Zoom Suppression While Adjusting:

    • Eliminates jarring camera zoom in/out while adjusting brush radius or raise height with the mouse wheel. Configurable mode: WhileAdjusting (suppresses only during active adjustment), AlwaysWithHoe, or Disabled.
  • Bypass Valheim's 8m Terrain Height Limit (AllowBeyondGameLimit = true):

    • Removes the engine's hardcoded ±8m ceiling and floor clamps in TerrainComp.ApplyToHeightmap, LevelTerrain, RaiseTerrain, and custom SmarterHoe tools. Allows raising towering earthen bastions or excavating deep moats/canals up to a configurable limit (default: 50m).
  • Adjustable Raise Height & Q / E Mode Switch:

    • Press [E] to select Height adjustment mode, or [Q] to select Area adjustment mode.
    • Mouse wheel dynamically adjusts raise delta (0.05m to 8.0m per click) when Height mode is selected or when holding Alt+Shift+Scroll.
    • Vanilla raise ground now scales cleanly with the selected raise height and radius, with proportional stone consumption in Survival mode.
  • 3D Translucent Raise Cylinder Preview:

    • Live 3D volumetric cylinder preview showing the exact raise height and radius at the crosshair hit point, color-coded by reach (customizable valid and invalid colors and opacities).
  • Dedicated Console Commands:

    • resetterrain [radius]: Reverts terrain modifications within a specified radius back to natural world-gen state (undoable!).
    • remove_forestry [radius]: Clears trees, logs, stumps, and vegetation within the radius.
    • cleardebris [radius]: Clears all rocks, boulders, vegetation, and obstacles within the radius.
    • smarterhoe_undo & smarterhoe_redo: Terminal commands to step backward and forward through history.
  • Memory Safety & Clean Session Transitions:

    • History automatically clears on world exit (Game.OnDestroy) to ensure zero memory leaks across worlds and server hops.
  • HUD Undo / Redo Counter & Real-Time Feedback:

    • All 6 hoe mode HUD panels now display current undo/redo step availability in real time: [Alt+Z] Undo (N) | [Alt+Y] Redo (M).
    • Real-time rotation angle and active control bindings displayed on square brush HUD, accompanied by instant on-screen toast notification banners.
    • Active adjustment badge beside the crosshair dynamically indicates current Area / Height values when modified.
  • True Freebuild Creative Mode (Zero Resources, Zero Stations, Zero Durability, Zero Stamina):

    • Fixed an issue where Freebuild mode ([B]) still required stone in inventory, consumed stone on click, required a nearby Workbench or Stonecutter, and drained stamina and tool durability.
    • Patched Player.HaveRequirements, Player.ConsumeResources, Character.HaveStamina, Player.GetBuildStamina, and Player.GetPlaceDurability so all terrain operations in Freebuild mode require zero materials, consume zero resources, bypass crafting stations completely, and never drain stamina or tool durability.
    • The HUD requirement bar automatically hides stone requirements in Freebuild mode for a clean creative experience.
  • Dynamic Raise Ground & Paved Road Resource Scaling (Height & Area):

    • Fixed vanilla Raise Ground only requiring 2 stone regardless of how high or large the terrain being raised was.
    • Stone cost in BalancedSurvival mode now dynamically scales with physical volume: proportional to both brush Area (radius and Circle vs Square geometry) and Height (SelectedRaiseHeight relative to vanilla's 0.5m baseline).
    • Dynamic HUD requirement sync: the bottom HUD requirement bar immediately displays the exact calculated stone requirement (e.g. 24 Stone) and flashes red if inventory is insufficient.
    • Placement ghost and 3D Translucent Raise Cylinder automatically turn red when stone is insufficient.
    • Real-time stone cost display in the top-middle HUD panel and crosshair adjustment badge as radius, height, or shape is modified.
    • Server-authoritative balance: scales with StonePerCubicMeter and StonePerPavedSquare configs synced from dedicated servers.

Fixed & Improved

  • ComfyGizmo & PerfectPlacement Third-Party Mod Interoperability:
    • Fixed a critical incompatibility where loading both ComfyGizmo and PerfectPlacement alongside SmarterHoe caused a Harmony transpiler collision on Player.UpdatePlacementGhost, resulting in SmarterHoe's patch chain failing and disabling the mod.
    • Implemented ModCompatibilityManager with a universal transpiler interceptor that seamlessly chains ComfyGizmo's rotation delegate after PerfectPlacement's rotation method without throwing IL matching exceptions.
    • Added soft dependency registration ([BepInDependency]) and post-patch repair hooks to restore broken transpiler chains automatically on startup.
    • Registered all custom terrain tool prefabs (SmarterHoe_*) into ComfyGizmo's IgnoredPrefabNames and suppressed 3D rotation gizmos when holding hoe tools, preventing unwanted pitch and roll on 2D terrain brushes.
    • Added an automatic fallback in Player.UpdatePlacement ensuring placement ghost updates, altitude lock, and square visualizers remain 100% active even if third-party mods interfere with UpdatePlacementGhost.
    • Added resilient per-class try-catch blocks around Harmony patch registration to prevent any single third-party hook failure from halting mod initialization.

1.0.1

Fixed & Improved

  • Store Icon Transparency: Replaced icon with true 32-bit ARGB alpha transparency, fixing the gray checkerboard background on dark sites like Hexium and Thunderstore.
  • Hotkey-Only Altitude Lock: Eliminated unwanted auto-locking on tool selection, hover, or clicks. Altitude locking only engages when explicitly pressing [L] or Middle-Click piece snapping. Automatically turns off when unequipping the hoe.
  • Recipe Unlocking Safeguards: Added internal prefab names to known recipes list to guarantee all 6 custom hoe tools unlock properly across game restarts.
  • Zero-Allocation Performance: Added spatial caching to boundary visualizers and zero-allocation capsule queries for debris clearing.

1.0.0

Added

  • Altitude Lock ([L] or Middle-Click) — laser-flat terrain leveling locked to a fixed elevation. Activates strictly upon hotkey use (never auto-locks). Middle-click any building piece to snap the lock to its floor height.
  • Instant Plateau — dedicated hoe build-menu tool that razor-flattens the entire brush area in a single click.
  • Smooth Ramp Auto-Carver ([K] + [H]) — place waypoints and auto-carve smooth graded roads using Catmull-Rom spline interpolation. Supports curved switchbacks and multi-waypoint paths.
  • Dynamic Slope Coloring — ramp guide spine changes color in real time by slope angle: green ≤20° (cart-friendly), yellow 20–25° (steep), red >25° (too steep for carts).
  • Soften Terrain — gently blend rough terrain without hard edges.
  • Restore Terrain — reset terrain within the brush to original world-gen state.
  • Clear Debris — instantly remove trees, logs, stumps, rocks, and ore deposits within the brush radius.
  • Circle / Square Brush Toggle ([G]) — switch between circular and square brush geometry; square brush rotates with player direction.
  • Adjustable Brush Radius — Alt + Scroll or [Alt] + [ / ] resizes 0.5m–15m. Vanilla paving pieces scale to match.
  • Balanced Survival Mode — stone consumption, stamina drain, tool durability wear, crafting station proximity checks, and tool requirements for debris clearing. Press [B] to toggle between Balanced and Freebuild.