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.
ValheimCraftFromContainers
制作台直接使用附近箱子里的材料:工作台/熔炉/切石机等制作类建筑与锤子建造,都能自动从周围容器取料并扣料,无需把材料背在身上。Craft and build using resources from nearby chests.
| Date uploaded | 6 hours ago |
| Version | 1.0.0 |
| Download link | SuperVikingDepartment-ValheimCraftFromContainers-1.0.0.zip |
| Downloads | 259 |
| Dependency string | SuperVikingDepartment-ValheimCraftFromContainers-1.0.0 |
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.2350README
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\下(可放在任意子文件夹)。
方式二:手动安装(直接启动游戏)
- 先安装 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\"
上传到 Thunderstore
- 运行
./build-package.sh SuperVikingDepartment生成dist/SuperVikingDepartment-ValheimCraftFromContainers-1.0.0.zip。 - 打开 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。
CHANGELOG
Changelog
1.0.0
- 首个版本:制作类建筑(工作台 / 熔炉 / 切石机 / 工匠台 / 黑锻炉 / 铁锅等所有
CraftingStation)在制作与升级时,可直接使用附近箱子里的材料。 - 支持锤子建造:放置建筑时,材料同样可以从附近容器里扣除。
- 锤子建造时,制作台范围判定改为以物体(幽灵)所在位置为准:只要物体落在某个制作台范围内即可建造,即使玩家站在台子范围外。
- 制作台范围重叠时,两个制作台都会参与检测,其范围内箱子里的材料都能被使用。
- 建造 UI 与制作面板中,材料其实存放在箱子里时不再播放红色闪烁动画提示材料不足。
- 扣料顺序为先玩家背包、后附近容器,材料数量与原版一致,不会多扣或凭空产生。
- 可配置搜索半径、是否使用制作台建造半径、是否限制为有权访问的容器(多人游戏防止误用他人私人箱子)。
- 不改任何配方、产量、材料数量,也不给物品打作弊标记,不影响成就。