ValheimCraftFromContainers
製作臺直接使用附近箱子裏的材料:工作臺/熔爐/切石機等製作類建築與錘子建造,都能自動從周圍容器取料並扣料,無需把材料背在身上。Craft and build using resources from nearby chests.
模組介紹 作者原文
ValheimCraftFromContainers
讓製作臺直接使用附近箱子裏的材料:打開工作臺 / 熔爐 / 切石機 / 工匠臺 / 黑鍛爐 / 鐵鍋等任意製作類建築時,只要箱子在範圍內,就無需先把材料搬到身上;拿錘子建造時也一樣。扣料順序爲「先背包、後箱子」,材料數量完全按原版計算。
只改變"從哪裏拿材料",不改任何配方、產量或材料數量。
功能
- 製作臺取料:製作、升級任意物品時,自動把玩家周圍(以及製作臺周圍)容器裏的同種材料計入"可用材料"。材料足夠即可點擊製作。
- 錘子建造取料:放置建築時,身上的材料不夠會自動從附近箱子扣除。
- 建造按物體位置判定製作臺:手持錘子放置時,判斷"是否在對應制作臺範圍內"以物體(幽靈)所在位置爲準;只要物體落在某個製作臺範圍內即可建造,即使人站在臺子範圍外。製作臺範圍重疊時兩個都會檢測,其範圍內箱子裏的材料都能用上。
- 不再誤報材料不足:建造 UI / 製作面板裏,材料其實在箱子裏時不再播放紅色閃爍動畫。
- 智能扣料:永遠優先扣玩家背包,不足的部分才從箱子補釦,且不會多扣。
- 多人安全:默認只使用你有權訪問的容器,私人箱子(僅建造者可用)不會被他人誤用。
- 範圍可調:默認以玩家爲中心 10 米,並額外以當前製作臺、以及"物體所處製作臺"爲中心按其建造半徑搜索;把箱子放在工作臺旁邊即可。
兼容範圍
- 覆蓋所有 CraftingStation:工作臺、鍛造臺(熔爐)、切石機、工匠臺、黑鍛爐、鐵鍋、以及各類擴展(StationExtension)提升等級後的範圍。
- 錘子 / 鋤頭等建造工具的放置同樣生效。
- 不覆蓋冶煉爐 / 炭窯的「放礦、放燃料」操作——那是另一套交互(把礦石裝進熔爐),本 mod 不涉及。
- 不覆蓋「只取一種材料」類特殊配方(該類配方需要材料在背包中才能判定與消耗,保持原版行爲)。
操作
無需按鍵,裝上即生效。打開製作臺或手持錘子建造時自動從附近箱子取料。
安裝
方式一:r2modman Mod Manager(推薦)
- 在 mod 管理器裏搜索 ValheimCraftFromContainers 安裝即可(會自動帶入 BepInEx 依賴)。
- 本地包導入:下載 dist/SuperVikingDepartment-ValheimCraftFromContainers-1.0.0.zip,在 r2modman 中
Settings → Import local mod(或 Install from file)選擇該 zip。
- 手動放入 profile:把 ValheimCraftFromContainers.dll 放到
%APPDATA%\r2modmanPlus-local\Valheim\profiles\\BepInEx\plugins\ 下(可放在任意子文件夾)。
方式二:手動安裝(直接啓動遊戲)
- 先安裝 BepInExPack for Valheim(denikson-BepInExPack_Valheim)。
- 把 ValheimCraftFromContainers.dll 放入遊戲根目錄的 BepInEx/plugins/。
- 啓動遊戲。
配置
首次啓動後生成 BepInEx/config/SuperVikingDepartment.ValheimCraftFromContainers.cfg:
| 配置項 | 默認值 | 說明 |
| --- | --- | --- |
| Enabled | true | 總開關。關閉後完全恢復原版(材料必須帶在身上)。 |
| Range | 10 | 以玩家爲中心搜索容器的半徑(米)。 |
| UseStationBuildRange | true | 是否額外使用製作臺自身的建造半徑(隨等級/擴展變大)作爲搜索範圍。 |
| RequireAccess | true | 只使用你有權訪問的容器;私人箱子僅其建造者可用。 |
| DebugLogging | false | 輸出補丁細節日誌,用於排查。 |
改完需重啓遊戲。
會不會影響成就
不會。本 mod 不設置 Game.isModded、不觸碰人物的 m_usedCheats、不給物品打作弊標記。材料的判定與扣除完全走遊戲自身的 HaveRequirements / ConsumeResources 管線,只是把"附近容器"也納入統計。若你同時使用控制台作弊命令或其他主動標記 mod 的插件,則屬於那些功能自身的影響。
工作原理(簡述)
- 需求判定:給 Player.HaveRequirementItems(配方)與 Player.HaveRequirements(Piece, mode)(建造)掛後置補丁。當原版判定"材料不足"時,把附近容器的庫存也算進來;滿足則放行。
- 建造的製作臺判定:Piece 需要製作臺時,判斷位置改爲"玩家位置或物體位置任一命中",從而支持"人站在臺外、把物體放進臺內";HaveBuildStationInRange 本身會掃過全部同類製作臺,所以範圍重疊時兩個都會命中。
- 建造 UI 文本:InventoryGui.SetupRequirement 後置補丁在"背包 + 容器"夠數時把材料數量文本恢復爲白色,不再播放紅色閃爍;Hud.SetupPieceInfo 後置補丁在"物體位置"命中製作臺時恢復製作臺指示的顏色與區域標記。
- 實際扣料:給 Player.ConsumeResources 掛前置+後置補丁。前置記錄"玩家背包缺多少",原版優先從背包扣除(保持原版手感),後置再把剩餘缺口從附近容器里扣除。
- 容器查找:每 5 秒掃描一次場景中的容器並緩存,同幀內的多次查詢直接複用結果,避免性能開銷。
- 逐個掛載:補丁逐個手動掛載(而非 PatchAll),某個目標方法若因遊戲版本變動而改名,只會跳過它並記錄日誌,不會導致其餘補丁一起失效。
- 多人同步:改動容器前若容器歸其他客戶端所有,先 ClaimOwnership,保證扣料會正確同步。
因此材料數量與原版嚴格一致:不會多扣、不會憑空產生,也不會繞過製作臺等級、屋頂、火焰等原版限制。
從源碼構建
- 安裝.NET SDK(目標 netstandard2.1)與 Node.js(打包腳本用)。
- 把本倉庫放到 Valheim 安裝目錄下(默認假定.. 就是遊戲根目錄)。
- 遊戲根目錄需已安裝 BepInEx(BepInEx/core/BepInEx.dll、BepInEx/core/0Harmony.dll)。
- 構建並生成發佈包:./build-package.sh 你的ThunderstoreTeam名
產物:dist/你的Team名-ValheimCraftFromContainers-版本號.zip
倉庫不在遊戲目錄下時,用屬性覆蓋路徑:
dotnet build -c Release -p:ValheimDir="C:\Steam\steamapps\common\Valheim\"
上傳到
- 運行./build-package.sh SuperVikingDepartment 生成 dist/SuperVikingDepartment-ValheimCraftFromContainers-1.0.0.zip。
- 打開,登錄後選擇該 zip 上傳。
zip 內容( 要求):
manifest.json 包元數據
README.md 商店頁正文
CHANGELOG.md 更新日誌
icon.png 256x256 圖標
LICENSE 許可證
plugins/ValheimCraftFromContainers.dll ← 會自動路由到 BepInEx/plugins/
已知問題 / 說明
- 修改配置後需要重啓遊戲,無法熱插拔。
- 用 r2modman 啓動時,插件與配置都在 profile 目錄下,遊戲安裝根目錄的 BepInEx 不參與加載。
- 箱子在範圍內但隔着牆也同樣生效(按距離判定,不做視線檢測),與原版製作臺"看得到看不到都算"的判定一致。
- 若按鍵/功能無效,把 BepInEx/LogOutput.log 發到問題區。加載成功會有 ValheimCraftFromContainers loaded 一行,並附帶各補丁的 prefix/postfix 計數。
來源與許可
MIT License,詳見倉庫內 LICENSE。歡迎提 issue / PR。
安裝與使用 安裝:BepInEx 外掛
- 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
- 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
- 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
- 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。
帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。 多人連線時,主機與所有用戶端需要安裝一致的模組。
下面這些內容需要先安裝,否則該模組不會生效: