SuperVikingDepartment-ValheimCraftFromContainers icon

ValheimCraftFromContainers

制作台直接使用附近箱子里的材料:工作台/熔炉/切石机等制作类建筑与锤子建造,都能自动从周围容器取料并扣料,无需把材料背在身上。Craft and build using resources from nearby chests.

Last updated 4 hours ago
Total downloads 225
Total rating 0 
Categories Mods
Dependency string SuperVikingDepartment-ValheimCraftFromContainers-1.0.0
Dependants 0 other packages depend on this package

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2350 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.2350

README

ValheimCraftFromContainers

制作台直接使用附近箱子里的材料:打开工作台 / 熔炉 / 切石机 / 工匠台 / 黑锻炉 / 铁锅等任意制作类建筑时,只要箱子在范围内,就无需先把材料搬到身上;拿锤子建造时也一样。扣料顺序为「先背包、后箱子」,材料数量完全按原版计算。

只改变"从哪里拿材料",不改任何配方、产量或材料数量。

功能

  • 制作台取料:制作、升级任意物品时,自动把玩家周围(以及制作台周围)容器里的同种材料计入"可用材料"。材料足够即可点击制作。
  • 锤子建造取料:放置建筑时,身上的材料不够会自动从附近箱子扣除。
  • 建造按物体位置判定制作台:手持锤子放置时,判断"是否在对应制作台范围内"以物体(幽灵)所在位置为准;只要物体落在某个制作台范围内即可建造,即使人站在台子范围外。制作台范围重叠时两个都会检测,其范围内箱子里的材料都能用上。
  • 不再误报材料不足:建造 UI / 制作面板里,材料其实在箱子里时不再播放红色闪烁动画。
  • 智能扣料:永远优先扣玩家背包,不足的部分才从箱子补扣,且不会多扣。
  • 多人安全:默认只使用你有权访问的容器,私人箱子(仅建造者可用)不会被他人误用。
  • 范围可调:默认以玩家为中心 10 米,并额外以当前制作台、以及"物体所处制作台"为中心按其建造半径搜索;把箱子放在工作台旁边即可。

兼容范围

  • 覆盖所有 CraftingStation:工作台、锻造台(熔炉)、切石机、工匠台、黑锻炉、铁锅、以及各类扩展(StationExtension)提升等级后的范围。
  • 锤子 / 锄头等建造工具的放置同样生效。
  • 不覆盖冶炼炉 / 炭窑的「放矿、放燃料」操作——那是另一套交互(把矿石装进熔炉),本 mod 不涉及。
  • 不覆盖「只取一种材料」类特殊配方(该类配方需要材料在背包中才能判定与消耗,保持原版行为)。

操作

无需按键,装上即生效。打开制作台或手持锤子建造时自动从附近箱子取料。

安装

方式一:r2modman / Thunderstore 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\<你的Profile>\BepInEx\plugins\ 下(可放在任意子文件夹)。

方式二:手动安装(直接启动游戏)

  1. 先安装 BepInExPack for Valheimdenikson-BepInExPack_Valheim)。
  2. ValheimCraftFromContainers.dll 放入游戏根目录的 BepInEx/plugins/
  3. 启动游戏。

配置

首次启动后生成 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,保证扣料会正确同步。

因此材料数量与原版严格一致:不会多扣、不会凭空产生,也不会绕过制作台等级、屋顶、火焰等原版限制。

从源码构建

  1. 安装 .NET SDK(目标 netstandard2.1)与 Node.js(打包脚本用)。

  2. 把本仓库放到 Valheim 安装目录下(默认假定 .. 就是游戏根目录)。

  3. 游戏根目录需已安装 BepInEx(BepInEx/core/BepInEx.dllBepInEx/core/0Harmony.dll)。

  4. 构建并生成发布包:

    ./build-package.sh 你的ThunderstoreTeam名
    # 产物:dist/你的Team名-ValheimCraftFromContainers-版本号.zip
    

仓库不在游戏目录下时,用属性覆盖路径:

dotnet build -c Release -p:ValheimDir="C:\Steam\steamapps\common\Valheim\"

上传到 Thunderstore

  1. 运行 ./build-package.sh SuperVikingDepartment 生成 dist/SuperVikingDepartment-ValheimCraftFromContainers-1.0.0.zip
  2. 打开 https://thunderstore.io/c/valheim/create/,登录后选择该 zip 上传。

zip 内容(Thunderstore 要求):

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。