
ChestTerminal
Chest terminal: see and take items from all chests in a configurable radius, with search and categories. Works alongside SeneaL UI.Терминал сундуков (ChestTerminal) 0.4.0
Мод для Valheim: постройка «Терминал сундуков», которая открывает все сундуки в заданном радиусе как один большой сундук, с поиском и категориями.
Установка
Нужны BepInExPack_Valheim и Jotunn. Thunderstore Mod Manager ставит их сам.
Через Thunderstore Mod Manager (r2modman устроен так же):
- Выберите Valheim и свой профиль.
- Слева Settings → вкладка Profile → Import local mod.
- Укажите
ChestTerminal-0.4.0.zipи подтвердите импорт. - Если Jotunn не подтянулся сам, найдите его в Online и установите.
- Запускайте игру кнопкой Start modded.
Вручную: поставить BepInExPack_Valheim и Jotunn, затем скопировать ChestTerminal.dll в
Valheim\BepInEx\plugins\ChestTerminal\ChestTerminal.dll.
Как пользоваться
- Молот → вкладка «Мебель» → «Терминал сундуков». Нужен верстак рядом. Стоимость по умолчанию: 20 дерева и 4 смолы, доступно с самого начала игры. У терминала своя модель: каменно-деревянная тумба с наклонным пультом, светящимися рунами и парящим кристаллом над мачтой. Из Valheim взяты только материалы, сами модели игры не используются.
- Поставьте терминал рядом с сундуками и нажмите E.
- Откроется обычное окно сундука вместе с инвентарём, только в нём лежит содержимое всех сундуков в радиусе. Одинаковые предметы показываются одной ячейкой с общим количеством (например, «Дерево 1240»). За одно действие из такой ячейки берётся не больше одной полной стопки: перетаскивание, Shift-клик, окно разделения и выброс на землю работают со стопкой, а «Взять всё» забирает всё, что поместится. Положенные в терминал предметы добавляются в ту же ячейку.
- Перекладывайте предметы как в обычном сундуке: перетаскивание, клики, разделение стопки, «Взять всё», «Сложить». Всё, что вы берёте, забирается из настоящих сундуков, а всё, что кладёте, раскладывается по ним: сначала в сундуки, где такой предмет уже есть, потом в любые свободные.
- Окно рисует сама игра или SeneaL UI, поэтому подсказки, стиль и горячие клавиши те же, что у обычного сундука.
- Поиск и категории встроены прямо в окно сундука SeneaL UI, над ячейками, и используют его собственные поле поиска и кнопки-фильтры. Без SeneaL UI (или если его окно не найдено) показывается отдельная панель сверху экрана, как в 0.2. Поиск работает по названию предмета, по английскому имени (
Wood,Bronze) и по названию категории. Пока курсор в поле поиска, горячие клавиши игры не срабатывают; Enter, Esc или клик мимо панели выходят из поля. - Если в сундуках нет места для положенного предмета, он возвращается в инвентарь.
Настройки
Файл BepInEx\config\asinit.ChestTerminal.cfg создаётся после первого запуска:
| Параметр | По умолчанию | Что делает |
|---|---|---|
General.Radius |
20 | Радиус поиска сундуков вокруг терминала, 1–100 м |
General.IncludeCartsAndShips |
false | Показывать содержимое телег и кораблей |
Piece.Recipe |
Wood:20,Resin:4 |
Стоимость постройки (нужен перезапуск) |
Piece.Glow |
true | Свечение рун и кристалла (нужен перезапуск) |
UI.Columns |
8 | Ширина окна терминала в ячейках, 5–16 |
UI.MergeStacks |
true | Одна ячейка на предмет с общим количеством; false — как раньше, полными стопками |
UI.Scale |
1 | Масштаб запасной панели поиска (без SeneaL UI) |
UI.SearchBarOffset |
12 | Отступ запасной панели от верха экрана |
Piece.BasePrefab |
piece_chest_blackmetal |
Откуда взять компоненты и материалы (нужен перезапуск) |
Через SeneaL UI: радиус, ширина окна, «Одна ячейка на предмет» и телеги/корабли есть в окне настроек SeneaL UI, в разделе модов («Терминал сундуков»), меняются без перезапуска.
Размер и положение окна: само окно сундука двигается и растягивается в редакторе HUD SeneaL UI (элемент «Chest panel»). Ширина в ячейках задаётся настройкой UI.Columns.
Радиус больше ~60 м мало что даёт: игра держит загруженными только сундуки рядом с игроком.
Совместимость
- SeneaL UI: терминал открывается как обычный сундук, поэтому SeneaL UI рисует его своим окном со своими пресетами, подсказками и окном разделения стопки. Перенос между терминалом и настоящими сундуками идёт через обычные функции игры (
Inventory.AddItem,RemoveItem), так что расширенный инвентарь SeneaL и его патчи на эти функции продолжают работать. - Содержимое терминала существует только пока он открыт и никогда не сохраняется в мир, поэтому автосохранение или вылет игры не может размножить предметы. Когда терминал закрыт, он пустой, и «крафт из сундуков» SeneaL UI ничего из него не берёт.
- Сундуки других модов работают, если они используют обычный компонент
Container. - Пропускаются: могилы игрока, чужие приватные сундуки, сундуки под чужим охранным камнем, другие терминалы.
- Патчи
Inventory.MoveItemToThis,MoveAll,Humanoid.DropItemи окна перетаскивания/разделения срабатывают только когда предмет идёт из терминала или в терминал. Harmony-патчиContainer.Interact,GetHoverText,Save,Loadменяют поведение только у терминала (по имени префаба). Ещё один патч наZInputгасит горячие клавиши игры, пока курсор стоит в поле поиска.
Сборка из исходников
Нужен .NET SDK 8+. Ссылки на игру берутся из NuGet (ValheimGameLibs, UnityEngine.Modules, JotunnLib), BepInEx и Harmony лежат в libs/.
dotnet build -c Release
# с автокопированием в игру:
dotnet build -c Release -p:ValheimDir="C:\Program Files (x86)\Steam\steamapps\common\Valheim"
Готовая DLL: bin/Release/net462/ChestTerminal.dll.