SuperVikingDepartment-ValheimChestSort icon

ValheimChestSort

箱子一键整理:界面内新增「整理」按钮(在物品堆叠按钮左侧),合并零散堆叠并按类别/名称重新排布。Adds a Sort button to the container UI next to Stack All.

Last updated 5 hours ago
Total downloads 87
Total rating 0 
Categories Mods
Dependency string SuperVikingDepartment-ValheimChestSort-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

ValheimChestSort

给箱子加一个「一键整理」:打开任意容器(箱子、推车等),点击容器界面里 「物品堆叠」按钮左侧的「整理」按钮, (或按快捷键 R),箱内物品立刻被 合并零散堆叠按类别 / 名称重新排布,去掉空格,整整齐齐。

只重新摆放箱子里已有的物品,不移动、不丢弃、不改动任何物品的属性或数量(总数守恒)。

功能

  • 界面按钮:在容器界面的原版「物品堆叠」按钮左边,自动添加一个「整理」按钮(克隆原按钮制作, 外观 / 字体 / 过渡动画与游戏一致)。中文界面显示「整理」,其他语言显示「Sort」,也可在配置中自定义。
  • 快捷键:打开容器后按 R(可配置),与按钮功能相同。
  • 合并堆叠:同种物品的零散堆叠会自动补满(例如 3 个 50/50 的木炭合成 1 个 50 + 1 个 100)。 只合并「名称 + 品质 + 世界等级 + 变体 + 自定义数据」完全一致的物品。
  • 按类别排序:默认顺序为 材料 → 消耗品 → 弹药 → 武器 → 盾牌 → 护甲 → 工具/杂项,同类再按名称、 品质从高到低排列。
  • 去掉空格:整理后物品从左上角开始逐行紧凑排列,不再有空档。
  • 对箱子、推车等所有使用游戏 Container 组件的容器都有效。
  • 关闭 / 不点击时完全是原版行为,不影响任何原版操作。

操作

按键 / 按钮 作用
「整理」按钮 容器界面中、原版「物品堆叠」按钮左侧,点击即整理当前箱子
R 整理当前打开的箱子(默认快捷键,可在配置中修改)

用法:走到箱子前按 E 打开 → 点击「整理」按钮(或按 R)→ 箱子自动整理好 → 按 Esc 关闭。 整理时若手里正拖着物品,会提示先放下,避免误操作。

安装

方式一:r2modman / Thunderstore Mod Manager(推荐)

  • 已在 Thunderstore 上架:在 mod 管理器里搜索 ValheimChestSort 安装即可(会自动带入 BepInEx 依赖)。
  • 本地包导入:下载本仓库 dist/ 下的 SuperVikingDepartment-ValheimChestSort-1.0.0.zip,在 r2modman 中 Settings → Import local mod(或 Install from file)选择该 zip。

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

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

注意:用 r2modman 启动游戏时,生效的是 profile 目录,而不是游戏安装根目录下的 BepInEx

配置

首次启动后生成 BepInEx/config/SuperVikingDepartment.ValheimChestSort.cfg

配置项 默认值 说明
SortKey R 整理快捷键。填 KeyCode 名称(RTBLeftAltMouse3 等)。
SortMode Category Category = 先类别后名称;Name = 直接按名称排。
MergeStacks true 是否合并零散堆叠。
AddButton true 是否在箱子界面「物品堆叠」按钮左边添加「整理」按钮。
ButtonLabel (空) 「整理」按钮上的文字。留空 = 自动:中文界面「整理」,其他语言「Sort」。
DebugLogging false 输出整理细节日志,用于排查。

改完需重启游戏。

会不会影响成就

不会。本 mod 不设置 Game.isModded、不触碰人物的 m_usedCheats、不给物品打作弊标记, 只是重新摆放箱内已有物品并触发原版的「物品变更」流程,不产生新物品、不改变数量。

兼容性

  • 游戏版本:Unity 6 时期的 Valheim。
  • 依赖:BepInEx 5.x(HarmonyX 随 BepInEx 自带)。
  • 不与「一键装满 / 一键种田」等功能冲突。
  • 单一热键、不占用原版按钮;如与其它 mod 的按键冲突,改 SortKey 即可。

工作原理(简述)

  • 打开容器时,游戏会把该容器的 ZDO 所有权移交给打开的玩家(Container.RPC_RequestOpen), 因此本地对容器的改动会被 Container.Save() 写回 ZDO 并同步给其他玩家。
  • 「整理」按钮通过 克隆原版「物品堆叠」按钮 生成:外观、字体、过渡动画沿用原版,无需自带贴图与字体; 若按钮所在父节点带布局组,按钮靠兄弟顺序自动排到原按钮左侧,否则由一个轻量组件每帧按相对位置对齐。
  • 本 mod 通过反射取到当前打开的容器(InventoryGui.m_currentContainer),对其 Inventory 做: 合并堆叠 → 排序 → 按行优先重设每件物品的 m_gridPos,最后调用一次原版 Inventory.Changed() 刷新界面并触发存盘。整个过程是原版数据结构的重排,不绕过任何游戏逻辑。

从源码构建

  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名-ValheimChestSort-版本号.zip
    

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

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

上传到 Thunderstore

  1. 运行 ./build-package.sh SuperVikingDepartment 生成 dist/SuperVikingDepartment-ValheimChestSort-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/ValheimChestSort.dll   ← 会自动路由到 BepInEx/plugins/

仓库结构:

ChestSortPlugin.cs        插件源码
ValheimChestSort.csproj   项目文件
manifest.json             Thunderstore 元数据
README.md / CHANGELOG.md / LICENSE
icon.png                  Thunderstore 图标(256x256)
build-package.sh          一键构建 + 打包
tools/zip.js              无依赖 ZIP 打包器(保证 zip 内为正斜杠路径)
tools/make-icon.js        重新生成 icon.png

已知问题 / 说明

  • 修改按键或开关插件后需要重启游戏,无法热插拔。
  • 若按键无效,把 BepInEx/LogOutput.log 发到问题区。加载成功会有 ValheimChestSort loaded 一行。
  • 整理是「就地重排」,不会把玩家背包里的物品放进箱子;只整理当前打开的那个容器。

来源与许可

MIT License,详见仓库内 LICENSE