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.
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
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2350README
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。
方式二:手动安装(直接启动游戏)
- 先安装 BepInExPack for Valheim(
denikson-BepInExPack_Valheim)。 - 把
ValheimChestSort.dll放入游戏根目录的BepInEx/plugins/。 - 启动游戏。
注意:用 r2modman 启动游戏时,生效的是 profile 目录,而不是游戏安装根目录下的
BepInEx。
配置
首次启动后生成 BepInEx/config/SuperVikingDepartment.ValheimChestSort.cfg:
| 配置项 | 默认值 | 说明 |
|---|---|---|
SortKey |
R |
整理快捷键。填 KeyCode 名称(R、T、B、LeftAlt、Mouse3 等)。 |
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()刷新界面并触发存盘。整个过程是原版数据结构的重排,不绕过任何游戏逻辑。
从源码构建
-
安装 .NET SDK(目标
netstandard2.1)与 Node.js(打包脚本用)。 -
把本仓库克隆到 Valheim 安装目录下(默认假定
..就是游戏根目录)。 -
游戏根目录需已安装 BepInEx(
BepInEx/core/BepInEx.dll、BepInEx/core/0Harmony.dll)。 -
构建并生成发布包:
./build-package.sh 你的ThunderstoreTeam名 # 产物:dist/你的Team名-ValheimChestSort-版本号.zip
仓库不在游戏目录下时,用属性覆盖路径:
dotnet build -c Release -p:ValheimDir="C:\Steam\steamapps\common\Valheim\"
上传到 Thunderstore
- 运行
./build-package.sh SuperVikingDepartment生成dist/SuperVikingDepartment-ValheimChestSort-1.0.0.zip。 - 打开 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。