Hoedin

版本 v1.1.2·更新於 2026-09-15

Compatibility port of MagicMike's MyDirtyHoe for current Valheim. All credit to MagicMike. Temporary - it will be removed the moment the original is updated.

模組介紹 作者原文

Hoedin

This is MagicMike's mod. Hoedin is nothing more than a compatibility port of

MyDirtyHoe 2.0.2

so it runs on current Valheim. Every tool, every piece, every bit of design in

here is MagicMike's work — the only thing added was the plumbing needed to make

it load again.

It is meant to be temporary. The moment MagicMike updates MyDirtyHoe, install

his and delete this; this package will be taken down. If MagicMike would like it

removed sooner, say the word and it goes immediately.

Sorry about 1.1.0

1.1.0 (14 Sep 2026) broke every hoe operation on the client — the piece placed,

the effect played, and the ground never moved, with a stack trace in the log per

click. That was a typo-class mistake in the radius fix, not anything in

MagicMike's mod, and it was live for about two hours before 1.1.1 replaced it.

If you played in that window and thought the mod was dead, it was: update and

it works. Apologies for the wasted evening.

Why it exists

MyDirtyHoe 2.0.2 was published in June 2025 and still installs cleanly today —

which is exactly the problem. On current Valheim the hammer menu fills in, the

pieces place, the effects play, and the ground never moves. No error, no

crash, nothing in the log that looks wrong. It just silently does nothing.

Three separate changes cause it:

  • TerrainComp was sealed. m_initialized, m_width, m_modifiedHeight,

m_levelDelta, m_smoothDelta, m_modifiedPaint, m_paintMask, m_nview

and Save() all became private; the mod read and wrote them directly.

  • Signatures changed. Heightmap.Poke(bool) became

Poke(int delayed = 0, bool paintOnly = false), Piece.SetCreator gained a

PlatformUserID, and Terminal.ConsoleCommand's constructor gained an

argument before the options fetcher.

  • Terrain operations stopped carrying their settings over the wire. The game

now sends only a prefab hash and resolves it against a registry built from the

shipped ObjectDB. A modded piece is not in that list, so the server logs

"Failed to deserialize TerrainOp settings … cancelling TerrainOp" and returns

null — the piece still places, and the terrain is never touched. This one

breaks every mod that adds terrain pieces, not just this one.

Note that none of the first two is a missing name, which is why a name-only

compatibility check calls the mod healthy. It is not.

What changed

  • Every now-private TerrainComp member goes through Harmony FieldRefAccess

delegates, built once at load. This runs per terrain vertex across a radius, so

reflection on every access would have been felt.

  • Call sites were fixed against the game's own usage rather than guesswork —

Poke(1) because the game itself calls the delayed form that way, and

SetCreator(id, PlatformManager.DistributionPlatform.LocalUser.PlatformUserID)

copied from Player.

  • A Harmony prefix on ObjectDB.UpdateRegisters adds the bundle's terrain-op

prefabs to m_terrainOps before the game rebuilds its hash table, which fixes

point 3 above. A prefix rather than a postfix so the game does its own hashing —

a postfix would have to duplicate that and would rot when it changes.

  • The scroll-wheel radius works again (1.1.1). MyDirtyHoe changes the radius

by adjusting the placed piece's settings, and before 1.0.7 those settings

travelled with the terrain operation. Now only the prefab hash does, so the

server applied the default size every time while the preview happily scaled —

a feature that looked like it worked and did nothing. Hoedin appends the

radius change to the operation itself and reads it back on the receiving side.

An unscrolled placement is byte-for-byte vanilla, and a sender or receiver

without this build is simply applied at the default size.

If Ctrl+scroll grew the preview but the ground always came out the same

size, 1.1.1 should fix it (1.1.0 tried and broke every hoe operation on the

client instead — do not run it). If it still does not on a 1.1.1 server, send

the server owner your BepInEx/LogOutput.log.

  • Its own plugin GUID (org.zrikzinc.

安裝與使用 安裝:BepInEx 外掛

  1. 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
  2. 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
  3. 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
  4. 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。

帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。 多人連線時,主機與所有用戶端需要安裝一致的模組。

前置依賴

下面這些內容需要先安裝,否則該模組不會生效:

denikson-BepInExPack_ValheimValheimModding-Jotunn

檔案與校驗

檔案名稱
Hoedin-1.1.2.zip
檔案大小
1.3 MiB